Sales Navigator Search — leads (people) & accounts (companies)
Sales Navigator Search
Search LinkedIn Sales Navigator for leads (people) or accounts (companies). Requires a LinkedIn account with an active Sales Navigator subscription.
Two ways to search
- Structured: pass category + optional keywords + filters
- URL-based: pass a Sales Navigator search url from your browser — filters are extracted automatically
Accepted url shapes
Sales Navigator is a SPA and writes its filter state into the hash fragment (#query=...), not the search string. The parser accepts both, plus several common paste artefacts:
- https://www.linkedin.com/sales/search/people#query=(...)&sessionId=... — what the browser address bar shows (most common)
- https://www.linkedin.com/sales/search/people?query=(...) — older / shared-link form
- /sales/search/lead and /sales/search/account path aliases (LinkedIn uses both)
- Protocol-less paste (www.linkedin.com/sales/search/people#query=...)
- Surrounding whitespace, quotes/backticks, & from rich-text paste
Rejected with a clear 400 so you don't get unfiltered results:
- Saved-list URLs (/sales/lists/people/...) — these aren't searches; open the list and click "Search" to get a /sales/search/... URL
- URLs with no query (?sessionId=... only) — copy the URL again after filters finish loading
- URLs whose query has no keywords and no filters (#query=(spellCorrectionEnabled:true)) — same fix
Sales Navigator vs Classic search
Sales Navigator returns richer data than classic LinkedIn search:
- People: tenure at company/role, premium status, open profile flag, pending invitation status, detailed positions
- Companies: headcount (employee count)
- More advanced filters: seniority, function, tenure, include/exclude for company & industry
Resolving filter IDs
Filters like location, industry, company, and school require LinkedIn numeric IDs. Use GET /search/linkedin/parameters to convert text (e.g. "San Francisco") into IDs.
Pagination
Default page size: 25, max: 25. Use start (offset) and count to paginate. Check hasMore and paging.total in the response. When passing url, a ?page=N (or #…&page=N) in the URL is honored — explicit start still wins if both are provided.
Credits
Profile URLs returned
Each item carries profileUrl (public /in/...) and salesNavUrl (/sales/...). Sales Navigator does not return canonical vanity slugs (e.g. /in/john-doe) — it returns LinkedIn's encrypted profile id, so profileUrl is https://www.linkedin.com/in/<encrypted-id> (e.g. /in/ACwAAA0-26UB...). These URLs are clickable and redirect to the canonical vanity URL when opened in a browser, and they are accepted anywhere our API takes a profile URL (visit, connect, message, etc.).
Upgrading to canonical vanity URLs (optional)
To resolve /in/<encrypted-id> → /in/<vanity-slug> (e.g. /in/john-doe), call POST /resolve/linkedin/profiles with the URLs, URNs, or raw encrypted ids. The endpoint returns publicIdentifier + a canonical profileUrl, and returns publicIdentifier + a canonical profileUrl.
POST /resolve/linkedin/profiles
{
"inputs": [
"https://www.linkedin.com/in/ACwAAA0-26UBSvneYv1dZ1sfAT_NZHjmOb5qk2s",
"urn:li:fsd_profile:ACwAAAaK0QIBxcI7cceYW8eas-3uVGwgOTW8s_k"
]
}
Request body
Response
Search results from Sales Navigator
Changes
Changed in 4 of the 11 revisions of this API.147
- ○
added
subschema #1subschema #2to the response bodyanyOflist for the response status200response-body-any-of-added
- ○
removed
subschema #1subschema #2from the response bodyanyOflist for the response status200response-body-any-of-removed
- ○
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status400response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status401response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status403response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status404response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status409response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status410response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status422response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status429response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status500response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status502response-property-enum-value-added
- ●
added the new
pacingenum value to theerror/quotaKindresponse property for the response status503response-property-enum-value-added
- ○
added the optional property
anyOf[subschema #2]/items/items/laneto the response with the200statusresponse-optional-property-added
- ●
- ○
added
subschema #1subschema #2to the response bodyanyOflist for the response status200response-body-any-of-added
- ○
removed
subschema #1subschema #2from the response bodyanyOflist for the response status200response-body-any-of-removed
- ○
- ●
removed the request property
annualRevenuerequest-property-removed
- ●
removed the request property
companyHeadcountGrowthrequest-property-removed
- ●
removed the request property
departmentHeadcountrequest-property-removed
- ○
added
subschema #1subschema #2to the response bodyanyOflist for the response status200response-body-any-of-added
- ○
removed
subschema #1subschema #2from the response bodyanyOflist for the response status200response-body-any-of-removed
- ●
Of the 11 revisions, 1 has no diff computed.