Skip to main content
POST
Start a Sales Navigator search. Returns immediately with a search id.

Authorizations

X-API-Key
string
header
required

Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.

Body

application/json

Sales Navigator search to run

Request body for a Sales Navigator lead search. Either paste a Sales Navigator people-search URL (searchMode 'url') or supply structured filters (searchMode 'filters'). The search runs in the background: the response carries a searchId to poll, not the leads. Nothing is written to a smart list — once the search completes, add the leads you want with POST /lists/{listId}/rows. No LinkedIn account or session cookie is required. Costs 1 data credit per lead returned, charged when the search finishes — the same balance enrichment and People Search draw from; a search that matches nobody is free.

searchMode
enum<string>
default:url

How the search is specified: 'url' to use searchUrl, 'filters' to use filters. Default: 'url'.

Available options:
url,
filters
searchUrl
string

Full Sales Navigator people-search URL (a linkedin.com/sales/search/people… link). Required when searchMode is 'url'.

filters
object

Structured search filters. Required when searchMode is 'filters' — at least one filter must be non-empty.

maxResults
integer
default:50

Maximum leads to return (1-500). Data credits are reserved against this ceiling but only the leads actually returned are charged. Default: 50.

companyId
string

Company ID that owns the list. Required when authenticating with a personal access key (pak_…) — the key is not tied to a specific company so the server cannot infer it. Required when authenticating with a company API key only if the key belongs to a user who has access to multiple companies; otherwise it defaults to the key's company. Optional for JWT (dashboard) auth — defaults to the user's active company.

Response

Search accepted — poll GET /lead-searches/{searchId} for results

A Sales Navigator search that has been accepted and is now running. The leads are NOT in this response: poll GET /lead-searches/{searchId} until its status is no longer 'pending', then read them from that response's results. Do not call the search endpoint again while a search is pending — each call runs and charges for a new search, while polling costs nothing.

status
string

Always 'pending' — the search has started and has not finished yet.

searchId
string

ID of the saved search. Poll GET /lead-searches/{searchId} with this to get the status and, once complete, the leads.

dataCredits
number

The billing principal's data credit balance. The search has not been charged yet — leads are charged when it finishes.

priorityFields
string[]

Field names to show first, in order, when rendering the results as a table.