v2

latestOpenAPI 3.0.3AGPL-3.0 license2026-07-2613501.9 MB
salesNav

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

  1. Structured: pass category + optional keywords + filters
  2. 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"
  ]
}
post/search/linkedin/sales-nav

Request body

category'people' | 'companies'

Type of Sales Navigator search: 'people' (leads) or 'companies' (accounts). Required unless url is provided.

urlstring

Sales Navigator search URL — paste directly from your browser. Category and filters are extracted automatically. Explicit params override URL-derived values. Example: https://www.linkedin.com/sales/search/people?query=...

keywordsstring

Search keywords. Supports LinkedIn Boolean syntax: use double quotes for exact phrases, AND/OR/NOT operators (UPPERCASE), and parentheses for grouping.

titlestring

Job title keywords (people only). Supports Boolean OR: 'CEO OR CTO OR Founder'.

locationstring[]

Geography filter (people & companies). Accepts location names ('France', 'San Francisco Bay Area', 'EMEA') OR LinkedIn geo ids. Server resolves via typeahead.

locationExcludestring[]

Geography filter to EXCLUDE. Same accepted shapes as location. Useful for 'all of Europe except Switzerland' patterns.

senioritystring[]

Seniority levels (people only). Accepts labels ('CXO', 'VP', 'Director', 'Owner / Partner', 'Senior', 'Entry Level', etc.) OR LinkedIn numeric ids. Server resolves labels to LinkedIn's 3-digit ids (CXO=310, etc.) — do NOT guess the ids.

functionstring[]

Job function (people only). Accepts function names ('Sales', 'Engineering', 'Marketing', 'Finance', etc. — 26 canonical) OR LinkedIn numeric ids.

profileLanguagestring[]

Profile language (people only). Accepts ISO 639-1 codes (e.g. 'en') or full language names; the server resolves either.

connectionDegreestring[]

Network distance: 'F' (1st-degree), 'S' (2nd-degree), 'O' (3rd-degree and beyond), or 'GROUP'. The labels '1st degree', '2nd degree', '3rd degree' are also accepted.

schoolstring[]

School filter (people only). Accepts school names ('Stanford', 'HEC Paris') OR LinkedIn numeric ids. Server resolves via typeahead.

yearsOfExperiencestring[]

Overall years of experience (people only). Accepts labels ('Less than 1 year', '1 to 2 years', '3 to 5 years', '6 to 10 years', 'More than 10 years') OR LinkedIn numeric ids 1-5.

personastring[]

Buyer Persona IDs the user has configured on sales.linkedin.com home (combos of function+seniority+title+geo). Match the IDs from the URL filter ((type:PERSONA,values:List((id:<id>,…)))).

recentlyChangedJobsboolean

Filter to leads who changed jobs in the last 90 days (LinkedIn buying-intent flag). True = include only job-changers; omit/false = no constraint.

postedOnLinkedinboolean

Filter to leads who recently posted on LinkedIn (engagement signal — active posters reply more often). True = include only recent posters; omit/false = no constraint.

sharedExperiencesboolean

Filter to leads with shared experience with the searcher (same school / past employer / group). True = include only shared-experience matches; omit/false = no constraint.

viewedYourProfileboolean

Filter to leads who recently viewed YOUR profile (LinkedIn flag VYP). Highest-intent engagement signal — they already showed interest. Requires Sales Nav seat that captures profile views.

followsYourCompanyboolean

Filter to leads who follow YOUR company page (LinkedIn flag CF). Warm-touch signal — they opted into your brand.

connectionOfstring[]

Filter to leads connected to a specific person. Values are LinkedIn ENCRYPTED member URN ids (e.g. 'ACwAAAim9ZcB…'), not numeric ids. Useful for 'find people connected to my champion at X' warm-intro patterns.

yearsInCurrentPositionstring[]

Years in current ROLE/POSITION (people only). Same accepted labels as yearsOfExperience ('Less than 1 year', '1 to 2 years', etc.). Distinct from tenure which counts years at current COMPANY.

pastTitlestring

Past job title keywords (people only). Free-text, supports Boolean OR. Finds leads who previously held a matching title.

firstNamestring

First name (people only). Exact name filter.

lastNamestring

Last name (people only). Exact name filter.

groupsstring[]

LinkedIn Groups membership (people only). Accepts group names ('Digital Marketing') OR numeric group ids. Server resolves names via typeahead.

pastColleagueboolean

Filter to leads who are past colleagues of the searcher (worked at the same company, overlapping dates). True = include only past colleagues; omit/false = no constraint. Warm-intro signal.

leadInteractionsstring[]

Filter by your past interaction with the lead (people only). Accepts labels ('Messaged') OR LinkedIn codes.

savedLeadsAndAccountsstring[]

Filter to your saved leads / accounts (people only). Accepts 'All my saved leads' / 'All my saved accounts' OR codes SL/SA.

companyHeadcountstring[]

Employee count (companies only). Accepts labels ('1-10', '11-50', '51-200', '201-500', '501-1,000', '1,001-5,000', '5,001-10,000', '10,001+', 'Self-employed') OR LinkedIn letter codes A-I.

companyTypestring[]

Company type (companies only). Accepts labels ('Public Company', 'Privately Held', 'Non Profit', 'Educational Institution', 'Government Agency', 'Self-Employed', 'Self-Owned', 'Partnership') OR LinkedIn letter codes.

annualRevenuestring[]

Annual revenue ranges (companies only).

numOfFollowersstring[]

Company follower-count buckets (companies only). Accepts labels ('1-50', '51-100', '101-1,000', '1,001-5,000', '5,001+') OR ids 1-5.

fortunestring[]

Fortune-list membership (companies only). Accepts 'Fortune 50' / 'Fortune 100' / 'Fortune 250' / 'Fortune 500' OR codes FORTUNE_50/100/250/500.

accountActivitiesstring[]

Account buying-intent signals (companies only). Accepts labels ('Senior leadership changes in last 3 months', 'Funding events in past 12 months') OR codes SLC/RFE.

jobOpportunitiesstring[]

Account hiring signals (companies only). Accepts the LinkedIn hiring-signal labels OR codes.

startinteger

Pagination offset (default 0).

countinteger

Results per page (default 25, max 25).

campaignSlugstring

Campaign ID. Auto-adds discovered contacts to this campaign in background. Mandatory whenever a campaign is active.

Response

Search results from Sales Navigator

OR