SalesNav

SalesNav

Voyager provides direct access to LinkedIn Sales Navigator’s internal APIs. SalesNav endpoints offer richer data, advanced filters, and capabilities beyond the standard LinkedIn API.

SalesNav endpoints require an active Sales Navigator subscription on your LinkedIn account. You must sync the li_a and li_ep_auth_context cookies in addition to the standard li_at and JSESSIONID cookies.

Prerequisites

Required Cookies

CookiePurpose
li_atStandard LinkedIn auth
JSESSIONIDStandard LinkedIn session
li_aSalesNav authentication token
li_ep_auth_contextEnterprise profile context (base64-encoded enterprise profile URN)

Verify SalesNav Access

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

Check that salesNavSessionValid: true in the response.

SalesNav Health Check

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

Search Leads

Search for leads by keyword or by SalesNav search URL:

$# By keywords
$curl -X POST "$BASE/api/salesnav/search" \
> -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> -H "Content-Type: application/json" \
> -d '{
> "keywords": "VP Engineering fintech London",
> "maxResults": 25
> }'
1{
2 "success": true,
3 "data": [
4 {
5 "fullName": "Jane Smith",
6 "title": "VP Engineering",
7 "company": "FinCorp",
8 "location": "London, United Kingdom",
9 "connectionDegree": "2ND",
10 "leadId": "ACwAABCD1234",
11 "profileUrl": "https://www.linkedin.com/in/janesmith/"
12 }
13 ]
14}

By SalesNav URL

If you have a pre-built SalesNav search URL with advanced filters:

$curl -X POST "$BASE/api/salesnav/search" \
> -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> -H "Content-Type: application/json" \
> -d '{
> "searchUrl": "https://www.linkedin.com/sales/search/people?query=...",
> "maxResults": 50
> }'

Get Lead Profile

Get a detailed SalesNav lead profile (async job):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/leads/ACwAABCD1234"

Returns { jobId, pollUrl } — poll for the result:

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

Lead Timeline

Get a lead’s activity history (job changes, posts, mentions):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/leads/ACwAABCD1234/timeline?count=10"

Lead Insights

Get a lead’s posts and comments for conversation intelligence:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/leads/ACwAABCD1234/insights"

Account (Company) Profile

Get detailed company data from SalesNav (async job):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/accounts/12345678"

Account Employees

Get employees of a SalesNav account (async job):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/accounts/12345678/employees?limit=50"

Saved Lists

Export leads from a SalesNav saved list (async job):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/lists/LIST_ID?limit=100"

Alerts

Get SalesNav alerts (job changes, post activity, company news):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/alerts?start=0&count=25"

SalesNav Inbox

Read your SalesNav messages (separate from LinkedIn inbox):

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/inbox?start=0&count=20"

Profile Viewers

See who viewed your SalesNav profile:

$curl -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> "$BASE/api/salesnav/viewers?start=0&count=20"

Batch Operations

Batch Lead Profiles

Fetch up to 10 lead profiles in a single async job:

$curl -X POST "$BASE/api/salesnav/leads/read" \
> -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> -H "Content-Type: application/json" \
> -d '{"leads": [{"leadId": "ACwAABCD1234"}, {"leadId": "ACwAAEFGH5678"}]}'

Batch Account Profiles

Fetch up to 5 account profiles:

$curl -X POST "$BASE/api/salesnav/accounts/read" \
> -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> -H "Content-Type: application/json" \
> -d '{"accounts": [{"accountId": "12345678"}, {"accountId": "87654321"}]}'

Batch List Export

Export multiple saved lists:

$curl -X POST "$BASE/api/salesnav/lists/read" \
> -H "Authorization: Bearer $KEY" \
> -H "X-User-Id: $USER" \
> -H "Content-Type: application/json" \
> -d '{"lists": [{"listId": "abc123"}, {"listId": "def456"}], "limit": 100}'

SalesNav API Architecture

Under the hood, Voyager uses LinkedIn’s sales-api endpoints:

  • All requests go to https://www.linkedin.com/sales-api/salesApi*
  • Decoration parameters use URL-encoded parentheses (%28/%29)
  • The x-li-identity header is derived from the li_ep_auth_context cookie
  • Search uses the salesApiLeadSearch endpoint with q=searchQuery

SalesNav has its own API layer separate from the standard LinkedIn Voyager API. Response formats, URN schemes, and rate limits differ. SalesNav lead IDs are not the same as standard LinkedIn profile URNs.