Profiles

Profiles

Voyager provides comprehensive profile access — your own profile, any public profile, contact info, skills, recommendations, badges, and network stats. All profile endpoints are pure HTTP against LinkedIn’s internal APIs (REST first, GraphQL fallback).

Every response is wrapped in the Voyager envelope: { success, statusCode, message, data, errors }. The JSON examples below show only the data payload — in your client, access it as res.data.profile, not res.profile. See Introduction for the full envelope shape.

Your Own Profile

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/me"
1{
2 "success": true,
3 "profile": {
4 "fullName": "Jane Smith",
5 "headline": "VP Engineering at Acme Corp",
6 "vanityName": "janesmith",
7 "entityUrn": "urn:li:fsd_profile:ABC123",
8 "location": "San Francisco Bay Area",
9 "positions": [
10 {
11 "title": "VP Engineering",
12 "companyName": "Acme Corp",
13 "companyUrn": "urn:li:fsd_company:12345",
14 "startDate": { "year": 2023, "month": 1 }
15 }
16 ],
17 "education": [
18 {
19 "school": "Stanford University",
20 "degree": "MS",
21 "field": "Computer Science",
22 "startYear": 2015,
23 "endYear": 2017
24 }
25 ]
26 }
27}

Any Profile by Vanity Name

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/williamhgates"

The vanity name is the string after /in/ in a LinkedIn profile URL. For example, https://www.linkedin.com/in/williamhgates has vanity name williamhgates.

Profile responses include entityUrn which you can cache and reuse in messaging endpoints via the recipientUrn parameter for faster sends.

Contact Info

Get email, phone, Twitter, and website data for a profile. Contact info is typically only available for 1st-degree connections.

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/janesmith/contact"
1{
2 "success": true,
3 "contact": {
4 "emailAddress": "jane@acme.com",
5 "phoneNumbers": ["+1-555-0123"],
6 "twitterHandles": ["janesmith"],
7 "websites": ["https://janesmith.dev"]
8 }
9}

Contact info is only available for 1st-degree connections. For 2nd/3rd-degree profiles, fields will be empty or null.

Skills

Get endorsed skills with endorsement counts:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/janesmith/skills"
1{
2 "success": true,
3 "skills": [
4 { "name": "Distributed Systems", "endorsementCount": 42 },
5 { "name": "Python", "endorsementCount": 38 },
6 { "name": "Machine Learning", "endorsementCount": 27 }
7 ]
8}

Network Stats

Get follower, connection, and following counts:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/janesmith/network"
1{
2 "success": true,
3 "followersCount": 12500,
4 "connectionsCount": 890,
5 "followingCount": 340
6}

Profile Viewers

See who viewed your profile recently:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/viewers"

Member Badges

Check Premium status, Open Profile, and other badges:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/member-badges?profileUrl=https://www.linkedin.com/in/janesmith/"
1{
2 "success": true,
3 "badges": {
4 "premium": true,
5 "openProfile": true,
6 "influencer": false,
7 "jobSeeker": false
8 }
9}

Relationship Status

Check connection degree and messaging eligibility:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/relationship/status?profileUrl=https://www.linkedin.com/in/janesmith/"
1{
2 "success": true,
3 "data": {
4 "connected": true,
5 "connectionDegree": "1ST",
6 "canMessageDirectly": true,
7 "openProfile": false,
8 "pendingInvitationSent": false
9 }
10}

Batch Profile Reads

Fetch up to 25 profiles in a single request:

$curl -X POST "$BASE/api/profiles/read" \
> -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> -H "Content-Type: application/json" \
> -d '{
> "profiles": [
> {"vanityName": "williamhgates"},
> {"vanityName": "jeffweiner08"},
> {"vanityName": "satlogin"}
> ]
> }'
1{
2 "success": true,
3 "count": 3,
4 "results": [
5 { "input": {"vanityName": "williamhgates"}, "success": true, "data": { "fullName": "Bill Gates", ... } },
6 { "input": {"vanityName": "jeffweiner08"}, "success": true, "data": { "fullName": "Jeff Weiner", ... } },
7 { "input": {"vanityName": "satlogin"}, "success": false, "error": "Profile not found" }
8 ]
9}

Batch results process sequentially with short delays between requests to stay within LinkedIn’s comfort zone.

Batch Relationship Checks

Check relationship status for up to 20 profiles at once:

$curl -X POST "$BASE/api/relationships/read" \
> -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> -H "Content-Type: application/json" \
> -d '{
> "profiles": [
> {"vanityName": "janesmith"},
> {"vanityName": "johndoe"}
> ]
> }'

Email Address

Extract a member’s email address (requires connection or certain access levels):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/janesmith/email"

Profile Activity

Get a person’s recent LinkedIn posts and activity:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/janesmith/posts?count=10"

Useful for understanding what someone cares about before reaching out.

Recommendations

Get endorsements and recommendations for a profile:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/profile/janesmith/recommendations"
  • Search — Find profiles by keywords, company, or title
  • Connections — Send connection requests and manage your network
  • SalesNav — Account intelligence, dossier, employee insights
  • Batch Operations — All batch endpoint details