Docs / Profile
get_profile_details
Read one person's profile in depth, live, with the sections you ask for.
This action only reads. It changes nothing, so it is safe to try.
What you give it
| Input | What it is | Where to get it |
|---|---|---|
personneeded | A profile link or a member id or a Sales Navigator id or a Recruiter id. The person: a LinkedIn profile URL or member id. | Open the person's profile on LinkedIn and copy the address from your browser. It looks like https://www.linkedin.com/in/their-name Or run search_people and use people[].profileUrl from its answer.53 more places to get it
|
sectionsoptional | A list (one of: *, about, experience, education, languages, skills, certifications, volunteering_experience, projects, recommendations_received, recommendations_given, recruiting_activity), up to 11. Which sections to include in full. Omit for the basic profile. | You write it. |
viaoptional | One of: sales_navigator, recruiter. Read through this product instead of ordinary LinkedIn. | You write it. |
notifyoptional | True or false. Whether the person is told you viewed their profile (default false). | You write it. |
connectionIdoptional | A connection id. Which of your LinkedIn accounts to act from (its id from list_linkedin_accounts). Omit to use your first live one. | Run list_linkedin_accounts and use accounts[].id from its answer.15 more places to get it
|
Call it
curl -X POST https://api.heyreagent.com/v1/actions/get_profile_details \
-H "Authorization: Bearer YOUR_KEY" \
-H "content-type: application/json" \
-d '{"person":"PASTE_PROFILE_LINK_HERE"}'The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/get_profile_details", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_KEY",
"content-type": "application/json",
},
body: JSON.stringify({
"person": "PASTE_PROFILE_LINK_HERE"
}),
});
const answer = await response.json();
console.log(answer);The same call in Python
import requests
response = requests.post(
"https://api.heyreagent.com/v1/actions/get_profile_details",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"person": "PASTE_PROFILE_LINK_HERE",
},
)
print(response.json())The same call in n8n
Add an HTTP Request node and fill it in like this:
| Method | POST |
| URL | https://api.heyreagent.com/v1/actions/get_profile_details |
| Send Headers | On. Name Authorization, Value Bearer YOUR_KEY |
| Send Body | On. Body Content Type JSON, Specify Body Using JSON, then paste the body below |
{
"person": "PASTE_PROFILE_LINK_HERE"
}Put your own key where it says YOUR_KEY. Put your own value where it says PASTE_…_HERE: the table above says where each one comes from. New here? Start with your first call.
What you get back
When it worked, the answer is { "ok": true, "result": { … } }. Inside result:
providerId | A member id. Other actions take it. |
publicIdentifier | A public identifier. Other actions take it. |
firstName | string or null |
lastName | string or null |
pronoun | string |
headline | string |
summary | string |
contactInfo.emails | string[] |
contactInfo.phones | string[] |
contactInfo.adresses | string[] |
birthdate.month | number |
birthdate.day | number |
primaryLocale.country | string |
primaryLocale.language | string |
location | string |
websites | string[] |
creatorWebsite.url | string |
creatorWebsite.description | string |
profilePictureUrl | string |
profilePictureUrlLarge | string |
backgroundPictureUrl | string |
hashtags | string[] |
canSendInmail | boolean |
connectedAt | number |
isOpenProfile | boolean |
isPremium | boolean |
isInfluencer | boolean |
isCreator | boolean |
isHiring | boolean |
isOpenToWork | boolean |
isSavedLead | boolean |
isCrmImported | boolean |
isRelationship | boolean |
isSelf | boolean |
invitation.type | SENT | RECEIVED |
invitation.status | PENDING | IGNORED | WITHDRAWN |
workExperience[].id | string |
workExperience[].position | string |
workExperience[].companyId | A company id. Other actions take it. |
workExperience[].companyUrl | string |
workExperience[].companyPictureUrl | string |
workExperience[].industry | string[] |
workExperience[].company | string |
workExperience[].location | string |
workExperience[].description | string |
workExperience[].skills | string[] |
workExperience[].current | boolean |
workExperience[].status | string |
workExperience[].start | string or null |
workExperience[].end | string or null |
workExperienceTotalCount | number |
volunteeringExperience[].company | string |
volunteeringExperience[].description | string |
volunteeringExperience[].role | string |
volunteeringExperience[].cause | string |
volunteeringExperience[].start | string or null |
volunteeringExperience[].end | string or null |
volunteeringExperienceTotalCount | number |
education[].id | string |
education[].degree | string |
education[].grade | string |
education[].description | string |
education[].activities | string |
education[].school | string |
education[].schoolId | string |
education[].schoolUrl | string |
education[].schoolPictureUrl | string |
education[].skills | string[] |
education[].fieldOfStudy | string |
education[].start | string or null |
education[].end | string or null |
educationTotalCount | number |
skills[].name | string |
skills[].endorsementCount | number |
skills[].endorsementId | A skill endorsement id. Other actions take it. |
skills[].insights | string[] |
skills[].endorsed | boolean |
skillsTotalCount | number |
languages[].name | string |
languages[].proficiency | string |
languagesTotalCount | number |
certifications[].name | string |
certifications[].organization | string |
certifications[].url | string |
certificationsTotalCount | number |
projects[].name | string |
projects[].description | string |
projects[].skills | string[] |
projects[].start | string or null |
projects[].end | string or null |
projectsTotalCount | number |
recommendations.receivedTotalCount | number |
recommendations.givenTotalCount | number |
tags[].id | string |
tags[].name | string |
notes[].projectId | string |
notes[].content | string |
notes[].createdAt | number |
candidateId | string |
recruitingActivity[].createdAt | string |
recruitingActivity[].updatedAt | string |
recruitingActivity[].event | UNHANDLED_EVENT |
recruitingActivity[].content | string |
recruitingActivity[].status | PENDING | ACCEPTED | DECLINED | AWAITING_REPLY |
recruitingActivity[].projectId | string |
recruitingActivity[].projectName | string |
recruitingActivity[].state | string |
throttledSections | experience | education | languages | skills | certifications | volunteering_experience | projects | recommendations_received | recommendations_given[] |
followerCount | number |
connectionsCount | number |
sharedConnectionsCount | number |
networkDistance | FIRST_DEGREE | SECOND_DEGREE | THIRD_DEGREE | OUT_OF_NETWORK |
publicProfileUrl | A profile link. Other actions take it. |
locked | boolean |
unlockCredit | number |
A field that does not apply to an answer is left out, or is null. There are 31 more fields nested inside these.
An example answer
A sample from the documentation of the API underneath, put in the shape this action returns it. Lists are cut to their first entry.
{
"providerId": "ACoAAAEkwwAB9KEc2TrQgOLEQ-vzRyZeCDyc6DQ",
"publicIdentifier": "satyanadella",
"memberUrn": "19186432",
"firstName": "Satya",
"lastName": "Nadella",
"headline": "Chairman and CEO at Microsoft",
"primaryLocale": {
"country": "US",
"language": "en"
},
"isOpenProfile": true,
"isPremium": true,
"isInfluencer": true,
"isCreator": true,
"isRelationship": false,
"networkDistance": "THIRD_DEGREE",
"isSelf": false,
"websites": [
"https://snscratchpad.com/"
],
"followerCount": 11888916,
"connectionsCount": 831,
"location": "Redmond, Washington, United States",
"profilePictureUrl": "https://media.licdn.com/dms/image/v2/C5603AQHHUuOSlRVA1w/profile-displayphoto-shrink_100_100/profile-displayphoto-shrink_100_100/0/1579726625423?e=1775088000&v=beta&t=Ke9Wy1fa4eAgmuIdSmUPQg85GN-VoyFApO_SsW5cE5I",
"profilePictureUrlLarge": "https://media.licdn.com/dms/image/v2/C5603AQHHUuOSlRVA1w/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1579726625483?e=1775088000&v=beta&t=H-7LfJ2hU-6Dg0eu-bVNKYcrKkcE_n4Wua1h7cb9mzc",
"backgroundPictureUrl": "https://media.licdn.com/dms/image/v2/D5616AQFuhBYf-ocZug/profile-displaybackgroundimage-shrink_200_800/B56ZeD5uqRGQAY-/0/1750264638752?e=1775088000&v=beta&t=bcEcaplw3US6QTZgh-QUcEadmklqCGP55bAqrZ1uG-o",
"educationTotalCount": 3,
"education": [
{
"schoolId": "8398",
"school": "The University of Chicago Booth School of Business",
"schoolPictureUrl": "https://media.licdn.com/dms/image/v2/D560BAQFZO05jhYKSkw/company-logo_200_200/company-logo_200_200/0/1692627816910/universityofchicagoboothschoolofbusiness_logo?e=1775088000&v=beta&t=fhSQymVMLTTrUVveNXRwmHsRe3xkU2-rZEVQRSsSNSE",
"start": "1/1/1994",
"end": "1/1/1996"
}
],
"workExperienceTotalCount": 5,
"workExperience": [
{
"companyId": "1035",
"company": "Microsoft",
"position": "Chairman and CEO",
"location": "Greater Seattle Area",
"companyPictureUrl": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_200_200/B56ZYQ0mrGGoAM-/0/1744038948046/microsoft_logo?e=1775088000&v=beta&t=IU8z-ovPIfLA6desCvsvN81PkiQ9dC8YJehCWbSpeaE",
"skills": [],
"start": "2/1/2014",
"end": null
}
],
"skillsTotalCount": 0,
"skills": [],
"languagesTotalCount": 0,
"languages": [],
"certificationsTotalCount": 0,
"certifications": [],
"summary": "As chairman and CEO of Microsoft, I define my mission and that of my company as empowering every person and every organization on the planet to achieve more.",
"volunteeringExperienceTotalCount": 0,
"volunteeringExperience": [],
"projectsTotalCount": 0,
"projects": [],
"recommendations": {
"givenTotalCount": 1,
"given": [
{
"caption": "May 3, 2010, Satya managed Ken directly",
"text": "Ken is one of the solid engineering managers I have worked with. Ken has the rare combination of skills/talent that one looks for in engineering leadership – attention to detail and also drive for innovation. Ken also has a solid track record of recruiting and retaining good talent. Overall it was a pleasure working with Ken and would love to have the opportunity to work together again.",
"actor": {
"firstName": "Ken",
"lastName": "Moss",
"providerId": "ACoAAACv_-sB5Ql4SvCZjwLgDeGUZjlW_V0nnKU",
"publicIdentifier": "iamkenmoss",
"headline": "Bringing the magic of software and AI to help as many people around the world as possible",
"publicProfileUrl": "https://www.linkedin.com/in/iamkenmoss",
"profilePictureUrl": "https://media.licdn.com/dms/image/v2/C5603AQFr7695HjAeXw/profile-displayphoto-shrink_100_100/profile-displayphoto-shrink_100_100/0/1633122939776?e=1775088000&v=beta&t=3zM7QQ6VBwQTRpajvyT5_a4i0L5yaP_eKvs5zc2EWes"
}
}
],
"receivedTotalCount": 0,
"received": []
},
"hashtags": []
}When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.
Good to know
- skills[].endorsementId is present only when sections includes "skills".
- With via "sales_navigator" or "recruiter", person must be that product's id (a public link is not accepted there), and providerId is then that product's id, not a member id.
- LinkedIn counts this as a profile view, and throttles heavy use: a section it held back is named in throttledSections and comes back empty.
- networkDistance is FIRST_DEGREE / SECOND_DEGREE / THIRD_DEGREE / OUT_OF_NETWORK.
In Claude or ChatGPT
Once connected, ask in your own words. The assistant sees this action as a tool with the same name, get_profile_details, and the same inputs.