- Docs
- Guides
- Profile lookup
Profile lookup
Get a LinkedIn profile, contact details, skills, and recent activity.
Get a person’s professional profile using their LinkedIn username, profile URL, or Envo ID. Use separate endpoints for contact details, company interests, and recent activity.
Get a profile
Section titled “Get a profile”Replace YOUR_API_KEY with your API key, then run:
curl --get 'https://api.envoapi.com/v1/profiles/details/by-username' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data-urlencode 'username=kentcdodds'The username is the part after /in/ in a LinkedIn profile URL. For example,
https://www.linkedin.com/in/kentcdodds/ has the username kentcdodds.
Choose the endpoint that matches what you have. All three return the same response format.
| Input | GET endpoint | Required parameter |
|---|---|---|
| Username | /v1/profiles/details/by-username |
username=kentcdodds |
| Profile URL | /v1/profiles/details/by-url |
url=https://www.linkedin.com/in/kentcdodds/ |
| Envo ID | /v1/profiles/details/by-id |
publicId from an API response |
Send one input per request. Use --data-urlencode for query values, including
URLs and usernames with non-English characters.
Read the response
Section titled “Read the response”Profile details include a name, headline, location, work experience, education, and a skills preview. Here is part of a captured response; other fields are omitted:
{ "data": { "publicId": "profile_sTOcVMQEyEidfhjzz8cayHJDdupxWm2pZNhA1Ml", "username": "kentcdodds", "fullName": "Kent C. Dodds", "headline": "Software Engineer and Educator" }, "meta": { "skills": { "hasMore": true } }}datacontains the profile. SavepublicIdto look it up by Envo ID later.meta.creditCostis the number of credits charged for this request.nullmeans data is missing or incomplete. An empty list is[].meta.sections, when present, shows whether each section is complete, empty, incomplete, or unavailable.data.skillsis a list of names.meta.skills.hasMoreistruewhen more skills are available,falsewhen complete, ornullwhen unknown.
Contact details and company interests are not included. See the full profile response example for all fields.
Get one profile section
Section titled “Get one profile section”Use these endpoints when you need one section. Each link includes request and response examples.
| Section | GET endpoint | Response field |
|---|---|---|
| Contact details | /v1/profiles/contact/by-username |
data |
| Work experience | /v1/profiles/experience/by-username |
data.positions |
| Education | /v1/profiles/education/by-username |
data.education |
| Skills | /v1/profiles/skills/by-username |
data.skills |
| Certifications | /v1/profiles/certifications/by-username |
data.certifications |
| Courses | /v1/profiles/courses/by-username |
data.courses |
| Company interests | /v1/profiles/company-interests/by-username |
data.companyInterests |
| Volunteer experience | /v1/profiles/volunteer-experience/by-username |
data.volunteerExperience |
Send username with each request. To use a profile URL, change /by-username
to /by-url and send url instead. Company interests also supports
/by-id with publicId.
Work experience is in data.experience in profile details, but
data.positions in the separate experience response. For contact details,
use the contact endpoint; includeContact is not supported.
Page through skills and company interests
Section titled “Page through skills and company interests”These two sections return one page per request. Start with start=0:
curl --get 'https://api.envoapi.com/v1/profiles/skills/by-username' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data-urlencode 'username=cassidoo' \ --data-urlencode 'start=0'This captured meta.paging example shows that the next page starts at 10:
{ "start": 0, "count": 10, "returned": 10, "hasMore": true, "nextStart": 10}Set start to meta.paging.nextStart for the next request. Stop when
hasMore is false. The API sets the page size to 10; do not send count.
Each successful page uses credits.
Get activity and similar profiles
Section titled “Get activity and similar profiles”These endpoints accept a LinkedIn username:
| Data | GET endpoint | Response field |
|---|---|---|
| Posts | /v1/profiles/posts |
data.posts |
| Comments | /v1/profiles/comments |
data.comments |
| Reactions to posts | /v1/profiles/reactions |
data.reactions |
| Similar profiles | /v1/profiles/similar |
data.profiles |
For example, get recent posts:
curl --get 'https://api.envoapi.com/v1/profiles/posts' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data-urlencode 'username=satyanadella'Posts, comments, and reactions use cursor pagination:
- Leave out
cursoron the first request. - While
meta.paging.hasMoreistrue, copymeta.paging.nextCursorinto the next request’scursorparameter. - Keep the same endpoint, account, and username. Copy the cursor unchanged.
Continue even if a page is short or empty. Reactions to comments are excluded, so a reactions page may be empty while more results are available. Each successful page uses credits, including empty pages.
Cursors expire within 15 minutes. If you get 400 cursor_expired, start again
without a cursor. See Pagination and Errors
for more help.