
LinkedIn API guide
LinkedIn Sales Navigator API: Access, Limits and the Alternative for Developers
LinkedIn no longer accepts new partners for its Sales Navigator API (SNAP), and SNAP has no people search endpoint. Here is what the official program covers, and how developers run Sales Navigator searches from their app on behalf of each user.
sales-navigator-search.sh
curl --request POST \
--url "https://{YOUR_DSN}/api/v1/linkedin/search?account_id={ACCOUNT_ID}" \
--header "X-API-KEY: {YOUR_ACCESS_TOKEN}" \
--header "content-type: application/json" \
--data '{
"api": "sales_navigator",
"category": "people",
"keywords": "head of sales",
"tenure": [{ "min": 3 }]
}'
200 OK · object: LinkedinSearch · items, paging, cursor
The short answer
Official SNAP
Build it
Short answer
Can you still get Sales Navigator API access? No. LinkedIn is not accepting new partners for the Sales Navigator API (SNAP), and SNAP never included a people search endpoint. If you need Sales Navigator search results in your app, the route is to act on behalf of each user's own Sales Navigator seat. This guide covers what the official program includes, where its documentation lives, and how to run the same searches with code, as part of our LinkedIn API guide.
Data Handling Note
Search results are returned from the authenticated user's own Sales Navigator seat, at the moment the request is made. Unipile keeps no independent index, lead database or copy of Sales Navigator lists: each response reflects what that user can already see in Sales Navigator, and your application decides what it stores and for how long.
Official program
Does LinkedIn Sales Navigator have an API?
Yes, but not one you can sign up for. The LinkedIn Sales Navigator API is the Sales Navigator Application Platform (SNAP), a partner program for CRM and sales software vendors. Access requires a signed partnership agreement with LinkedIn, the program is closed to new partners, and there is no public, self-serve version for developers.
SNAP partners are mostly CRM platforms that embed Sales Navigator panels inside their own interface, so their customers can view a lead or send a message without switching tabs. The partnership defines what each vendor can display and sync.
If your company is not already one of those partners, the official door is shut. LinkedIn says it reviews its onboarding capacity from time to time, but publishes no date for reopening. Any plan that depends on SNAP access today depends on a decision you do not control.
That leaves two questions for a developer: what exactly would SNAP have given you, and what can you build without it. The next sections answer both.
Closed to new partnersSales Navigator Application Platform
"We are not currently accepting new partners for access to the LinkedIn Sales Navigator API. We periodically review our onboarding capacity and will update this page if availability changes."
Last verified: 13 October 2026.
Access
How to get Sales Navigator API access in 2026
Many guides on this topic were written when SNAP still accepted applications, and some still describe an authentication flow that new developers can no longer reach. Here is where each path people usually try leads today.
- Partner application: closed. SNAP onboarding is paused for new partners, with no published reopening date. Existing partners keep access under their signed agreement.
- There is no Sales Navigator API key. LinkedIn does not issue a standalone key for Sales Navigator, and there is no portal page where you could generate one.
- A subscription is not API access. Sales Navigator Core, Advanced and Advanced Plus unlock features in the Sales Navigator interface, not credentials for your own code.
- The developer portal does not cover it. The self-serve products in the LinkedIn developer portal do not include Sales Navigator search or lead lists.
- The open path is user-side. Each user links their own LinkedIn account with an active Sales Navigator seat, and your app runs searches on their behalf.
Access pathsStatus on 13 October 2026
Apply as a SNAP partner
Closed
Request a Sales Navigator API key
Does not exist
Upgrade the Sales Navigator subscription
No API included
Self-serve LinkedIn developer portal
Not covered
Search on behalf of the user's own seat
Available
Scope
What the official SNAP covers (and what it does not)
SNAP is built around three services. LinkedIn describes a search experience for partners, but it lives inside embedded interface modules: none of the three services returns people search results or lead lists to your backend. The program is designed to place Sales Navigator inside a partner's product, not to hand its search results to that product's code.
| Service | What it does | Typical use | People search endpoint |
|---|---|---|---|
| Display Services | Interface modules embedded by iframe or JavaScript SDK: profile, recent activity, connect and message (including InMail), plus the Profile Associations API for photos and profile links | A lead's Sales Navigator panel inside a CRM record | No |
| Analytics Services | An export API for activity performed by sales teams, plus seat metadata such as the daily Social Selling Index, total connections and saved leads | Sales team reporting and coaching dashboards | No |
| Sync Services | APIs built on top of CRM Sync, using the matches between CRM records and LinkedIn | Data integrity workflows and richer record views in a CRM | No |
Display Services
What it doesInterface modules embedded by iframe or JavaScript SDK: profile, recent activity, connect and message (including InMail), plus the Profile Associations API for photos and profile links
Typical useA lead's Sales Navigator panel inside a CRM record
People search endpointNo
Analytics Services
What it doesAn export API for activity performed by sales teams, plus seat metadata such as the daily Social Selling Index, total connections and saved leads
Typical useSales team reporting and coaching dashboards
People search endpointNo
Sync Services
What it doesAPIs built on top of CRM Sync, using the matches between CRM records and LinkedIn
Typical useData integrity workflows and richer record views in a CRM
People search endpointNo
Key point: SNAP has no endpoint that runs a people search with filters, and no export of saved searches or lead lists. Even an approved partner could not rebuild a Sales Navigator search feature on SNAP alone. If search results are what your product needs, SNAP was never the right tool.
Documentation
Where is the Sales Navigator API documentation?
The official documentation is public even though access is closed: you can read how SNAP works without being able to use it. Three references cover everything a developer needs, from the partner program to a working search request.
Official, LinkedIn
SNAP documentation on Microsoft Learn
Overview of Display, Analytics and Sync Services, with the note on new partners at the top of the page.
Open the SNAP docs
Official, LinkedIn
LinkedIn SNAP Terms of Use
The terms that govern SNAP APIs, tools and documentation, unless a separate signed partnership agreement applies.
Read the SNAP terms
Unipile
LinkedIn search documentation
Request format for Sales Navigator, Recruiter and classic searches run from a user's linked account, with parameter lookup.
Open the search docs
The alternative
The alternative: Sales Navigator search on behalf of the user
If your product needs Sales Navigator results, the workable model is user-side. Each of your users links their own LinkedIn account, which already holds a Sales Navigator seat, through Unipile hosted authentication. Your backend then calls one REST endpoint, and the search runs within what that user can already see in Sales Navigator. It is the same model the LinkedIn API uses for messaging, invitations and profiles.
Your app
Your backend sends the search with the filters or the URL your user chose.
POST/api/v1/linkedin/search
Unipile API
Relays the request for the linked account named in account_id, and nothing else.
X-API-KEY + account_id
The user's Sales Navigator seat
The search runs with this user's subscription, filters and visibility.
"api": "sales_navigator"
Results come back to your app as JSON, ready for your own interface.
itemspagingcursor
1
Link the account
Add hosted authentication to your app so each user connects their LinkedIn account. Sales Navigator searches only work when that account has an active Sales Navigator subscription.
2
Run the search
Send POST /api/v1/linkedin/search with "api": "sales_navigator", either with filters or with a URL the user copied from Sales Navigator.
3
Page, store, test
Follow the cursor to load more results, store only what your feature needs, and test with a real seat in a staging account before you ship.
How Unipile Operates
Unipile is an independent technical intermediary. It is not a SNAP partner and does not resell Sales Navigator seats. Every request is made on behalf of one connected user, through that user's own linked account and subscription: there are no shared credentials and no pooled seats. When a user has no active Sales Navigator subscription, Sales Navigator searches are simply not available on their account.
Run a people search with filters
Set api to sales_navigator and category to people (or companies), then combine the filters you need. keywords is free text, tenure takes a list of ranges in years, profile_language a list of language codes, and company takes include and exclude lists of company IDs. An industry filter with an include list works the same way. The limit query parameter sets the page size, up to 100 results for Sales Navigator.
people-search.sh
curl --request POST \
--url "https://{YOUR_DSN}/api/v1/linkedin/search?account_id={ACCOUNT_ID}&limit=50" \
--header "X-API-KEY: {YOUR_ACCESS_TOKEN}" \
--header "accept: application/json" \
--header "content-type: application/json" \
--data '{
"api": "sales_navigator",
"category": "people",
"keywords": "head of sales",
"tenure": [{ "min": 3 }],
"profile_language": ["en"],
"company": { "include": [1441], "exclude": [1035] }
}'
The response is a LinkedinSearch object: an items array (name, headline, location, current positions, profile URL), a paging block with start, page_count and total_count, and a cursor for the next page.
Reuse a saved search or lead list URL
Many users build their search in Sales Navigator first. Instead of rebuilding every filter in your interface, accept the URL they copy from their browser: a search results page, a saved search or a list of leads. Send it in the url field and the search runs with the filters already encoded in that link.
body.json
{
"url": "https://www.linkedin.com/sales/search/people?query=(...)"
}
Validate the pasted link before you send it: it should be a Sales Navigator address, starting with https://www.linkedin.com/sales/. A classic LinkedIn search URL belongs to a classic search.
Resolve filter IDs
Filters such as locations, companies or industries expect LinkedIn IDs, not names. Look them up first with the search parameters endpoint, then reuse the returned id values in your search body. The type parameter selects what you are looking up, here a location.
search-parameters.sh
curl --request GET \
--url "https://{YOUR_DSN}/api/v1/linkedin/search/parameters?account_id={ACCOUNT_ID}&type=LOCATION&keywords=los%20angeles&limit=100" \
--header "X-API-KEY: {YOUR_ACCESS_TOKEN}" \
--header "accept: application/json"
# Response: { "object": "LinkedinSearchParametersList", "items": [{ "title": "...", "id": "..." }] }
Paginate with the cursor
Each response carries a cursor. Pass it as the cursor query parameter of the next request, and stop when you reach paging.total_count, the per-search cap described below, or the number of results your feature actually needs.
search-all.mjs
const BASE = "https://{YOUR_DSN}/api/v1/linkedin/search";
const headers = {
"X-API-KEY": process.env.UNIPILE_API_KEY,
"accept": "application/json",
"content-type": "application/json",
};
export async function searchSalesNavigator(accountId, body, maxResults = 500) {
const results = [];
let cursor = null;
do {
const params = new URLSearchParams({ account_id: accountId, limit: "100" });
if (cursor) params.set("cursor", cursor);
const res = await fetch(`${BASE}?${params}`, {
method: "POST",
headers,
body: JSON.stringify(body),
});
if (!res.ok) throw new Error(`Search failed: ${res.status}`);
const page = await res.json();
results.push(...page.items);
cursor = page.cursor;
const target = Math.min(page.paging.total_count, maxResults);
if (results.length >= target) break;
} while (cursor);
return results;
}
// Example: the first 500 matches of a search the user built in your app
const leads = await searchSalesNavigator("{ACCOUNT_ID}", {
api: "sales_navigator",
category: "people",
keywords: "head of sales",
});
Keep maxResults tied to what the user asked for. Results stop at the per-search cap set by LinkedIn, whatever value you pass.
Build it with Unipile
Build Now
Connect a Sales Navigator account and run your first search
Hosted authentication, one search endpoint and cursor pagination. Try it with your own Sales Navigator seat before you ship it to your users.
Limits
Limits to plan for
LinkedIn caps how many results a single search can return, and how much searching one account should do in a day. These caps depend on the search product, not on the API you call. Design your pagination, your quotas and your interface around them from the start. For searches without a Sales Navigator seat, see our guide to the LinkedIn search API, and for Recruiter seats, the LinkedIn Recruiter API guide.
| Search | Max results per search | Results per page | Required on the linked account |
|---|---|---|---|
| Classic LinkedIn search | 1,000 | Up to 10 (people and companies) | Any LinkedIn account |
| Sales Navigator, people | 2,500 | Up to 100 | Active Sales Navigator subscription |
| Sales Navigator, companies | 1,000 | Up to 100 | Active Sales Navigator subscription |
| Recruiter | 2,500 | Up to 100 | Recruiter seat |
Classic LinkedIn search
Max results per search1,000
Results per pageUp to 10 (people and companies)
Required on the linked accountAny LinkedIn account
Sales Navigator, people
Max results per search2,500
Results per pageUp to 100
Required on the linked accountActive Sales Navigator subscription
Sales Navigator, companies
Max results per search1,000
Results per pageUp to 100
Required on the linked accountActive Sales Navigator subscription
Recruiter
Max results per search2,500
Results per pageUp to 100
Required on the linked accountRecruiter seat
Daily volume: for Sales Navigator people searches, the recommendation is to stay around 2,500 profiles per day for each linked account. A search that matches more than 2,500 people needs narrower filters, not more pages: split it by location, industry or tenure.
Last verified: 13 October 2026, against the provider limits and restrictions documentation.
Platform Limits and Responsible Use
The caps above are set by LinkedIn. Unipile relays them as they are and does not lift them, and no request can return more than the user's own seat allows. How often your product runs searches, how many results it requests and how it spaces them out is a customer-side decision: build quotas into your product, show users their usage, and keep each search tied to an action the user asked for.
Pricing
Sales Navigator API pricing: what you actually pay
There is no public price list for the Sales Navigator API itself. SNAP fees are negotiated in each partnership agreement, and the program no longer accepts new partners. With a user-side integration, the cost splits into two lines: the Sales Navigator seat each user already holds, and the API plan your company pays for its app.
| Cost line | Who pays | Price |
|---|---|---|
| Official SNAP | The LinkedIn partner | Set in the partnership agreement, not public |
| Sales Navigator Core seat | The user or their company | $119.99 per month, or $1,079.88 per year |
| Sales Navigator Advanced seat | The user or their company | $159.99 per month, or $1,799.88 per year |
| Sales Navigator Advanced Plus seat | The user's company | Custom quote from LinkedIn |
| Unipile API | Your company | Per connected account: $55 per month up to 10 accounts, then $5.50 down to $3.50 per account |
Official SNAP
Who paysThe LinkedIn partner
PriceSet in the partnership agreement, not public
Sales Navigator Core seat
Who paysThe user or their company
Price$119.99 per month, or $1,079.88 per year
Sales Navigator Advanced seat
Who paysThe user or their company
Price$159.99 per month, or $1,799.88 per year
Sales Navigator Advanced Plus seat
Who paysThe user's company
PriceCustom quote from LinkedIn
Unipile API
Who paysYour company
PricePer connected account: $55 per month up to 10 accounts, then $5.50 down to $3.50 per account
Example: your app serves 20 sales reps who each link a Sales Navigator Core account. Their seats stay on their own LinkedIn subscriptions. On your side, the API bill is 20 connected accounts at $5.50, so $110 per month, with no fee per search or per message. See every volume tier on the Unipile API pricing page.
Last verified: 26 October 2026, against LinkedIn's Sales Navigator plans page. LinkedIn prices exclude taxes and can vary by region.
Comparison
Official SNAP vs user-side API: which one fits?
The two models serve different products. SNAP fits a CRM vendor that already holds a LinkedIn partnership and wants Sales Navigator panels inside its records. A user-side API fits software that needs search results as data, for users who already pay for Sales Navigator.
| Criteria | Official SNAP | User-side API (Unipile) |
|---|---|---|
| Access | Signed LinkedIn partnership, closed to new partners | Self-serve account; each user links their own LinkedIn account |
| Onboarding | Partner review by LinkedIn | Hosted authentication flow embedded in your app |
| People search | No API endpoint | POST /api/v1/linkedin/search with "api": "sales_navigator" |
| Saved searches and lead lists | Not available | Run from a Sales Navigator URL the user pastes |
| Messages | Message and InMail modules inside embedded interface | LinkedIn messaging routes on the same linked account |
| What you get back | Embedded modules, activity analytics, CRM Sync matches | JSON results (items, paging, cursor) for your own interface |
| Who is responsible | The partner, under the SNAP agreement | Your company decides how searches are used; each user brings their own seat |
Access
Official SNAPSigned LinkedIn partnership, closed to new partners
User-side API (Unipile)Self-serve account; each user links their own LinkedIn account
Onboarding
Official SNAPPartner review by LinkedIn
User-side API (Unipile)Hosted authentication flow embedded in your app
People search
Official SNAPNo API endpoint
User-side API (Unipile)POST /api/v1/linkedin/search with "api": "sales_navigator"
Saved searches and lead lists
Official SNAPNot available
User-side API (Unipile)Run from a Sales Navigator URL the user pastes
Messages
Official SNAPMessage and InMail modules inside embedded interface
User-side API (Unipile)LinkedIn messaging routes on the same linked account
What you get back
Official SNAPEmbedded modules, activity analytics, CRM Sync matches
User-side API (Unipile)JSON results (items, paging, cursor) for your own interface
Who is responsible
Official SNAPThe partner, under the SNAP agreement
User-side API (Unipile)Your company decides how searches are used; each user brings their own seat
In practice: if you are not already a SNAP partner, the choice is made for you. And if you are one, SNAP still does not give you search results as data: products that need them use the user-side model alongside their partnership features.
Use cases
Common use cases
Three product patterns cover most Sales Navigator search integrations. In each one, the user stays in control of their own seat, their own searches and their own lists, and your product does the work around them.
Lead list to CRM
CRM enrichment from a lead list
JDJane Doe, VP SalesMatched
AKAlex Kim, Head of GrowthNew
MLMaria Lopez, CRONew
A sales rep pastes a Sales Navigator lead list URL into your CRM. Your app runs it on their behalf, matches results to existing contacts and creates the missing records, each with a link back to the LinkedIn profile.
LinkedIn API for CRM software
Sourcing search
ATS and recruiting platforms
"api": "sales_navigator"Sales
"api": "recruiter"Hiring
SRSam Reed, Backend EngineerShortlist
Recruiters often hold a Sales Navigator or a Recruiter seat. The same endpoint switches between the two with the api field, so an ATS can offer sourcing searches from whichever seat the recruiter has linked.
Multichannel sequence
Day 3: follow-up emailStep 2
Day 6: reply detectedStop
Multichannel engagement platforms
Day 1: LinkedIn messageStep 1
Sequencing tools combine LinkedIn with email. A search builds the audience on the user's seat, then messages go out through LinkedIn and through Gmail, Outlook or IMAP with the Email API, on behalf of the same user.
LinkedIn API for engagement platformsBuilding for AI agents instead? The Sales Navigator MCP server gives coding agents the same searches, with the same per-user model.
Sales Navigator API FAQ
Access, keys, pricing, lead lists and responsibilities, answered for developers.
Yes, the Sales Navigator Application Platform (SNAP), but it is a partner program, not a public API. LinkedIn states on Microsoft Learn that it is not currently accepting new partners, and SNAP does not include a people search endpoint. Developers who need search results act on behalf of each user's own Sales Navigator seat instead.
Today you cannot apply: onboarding for new SNAP partners is closed, with no published reopening date. Existing partners keep access under their signed agreement. For a new product, the practical route is a user-side API such as Unipile, where each user links their LinkedIn account and your app runs searches through POST /api/v1/linkedin/search.
No. LinkedIn does not issue a standalone Sales Navigator API key, and neither the developer portal nor a Sales Navigator subscription provides one. With Unipile, you authenticate with your own Unipile key in the X-API-KEY header and target a linked account with account_id, while the Sales Navigator seat stays with the user.
SNAP pricing is set in each partnership agreement and is not public, and the program is closed to new partners anyway. A user-side integration needs an active Sales Navigator subscription on each user's account, paid by that user or their company, plus an API plan for your app: Core seats start at $119.99 per month and the Unipile API at $5.50 per connected account (full breakdown). For the costs of the official LinkedIn APIs, see is the LinkedIn API free.
Not through SNAP, which has no lead list or saved search export. With Unipile, a user can paste the URL of a Sales Navigator search, saved search or lead list, your app sends it in the url field and pages through the results with the cursor. LinkedIn caps each people search at 2,500 results.
Only what the authenticated user can already see in Sales Navigator with their own seat: search results with fields such as name, headline, location, current positions and profile URL. Unipile keeps no independent database of LinkedIn members. Results are returned at request time, and your app decides what it stores under its own privacy policy.
LinkedIn sets the limits, and how your product uses searches is a customer-side decision. Unipile relays each request for the linked account without lifting any cap. Build per-user quotas, spread searches over time, and run them in response to actions your users ask for.
No. Unipile is not affiliated with, endorsed by, or sponsored by LinkedIn. It is not part of the Sales Navigator Application Platform (SNAP) and does not resell Sales Navigator seats. Unipile is an independent technical intermediary that acts on behalf of users who link their own LinkedIn accounts.
Still have questions? Our team is here to help.
Talk to an expertRun your first Sales Navigator search from your app
Link a LinkedIn account with a Sales Navigator seat, send one request and get JSON results back. The search documentation covers every parameter.

