LinkedIn Extraction
Operations for extracting profiles from LinkedIn
Extract a Sales Navigator search or list
Extract every lead or account behind a Sales Navigator search URL, saved search URL, or lead/account list URL.
The URL is checked against Sales Navigator while you wait, so an unusable search is rejected immediately rather than failing later. Everything after that runs in the background: the response returns an extraction_id straight away, and you either poll GET /v1/extractions/{extraction_id}/ until its status is EXECUTED or supply a webhook_url and be notified when the results are ready. Large searches take several minutes.
Every lead gets a verified professional email where one exists.
Cost: 1 credit per lead or account extracted, emails included. A search's true size is unknown until it has been paged through, so the request only needs a positive balance to start; the credits are debited when the results are ready.
Extract a Sales Navigator search or list › Request Body
linkedin_urlThe Sales Navigator URL to extract. Accepts a people or company search URL, a saved search URL, or a lead or account list URL. Copy it straight from your browser's address bar; it must be a linkedin.com/sales/... URL.
search_nameYour own name for this extraction. Shown in the Evaboot dashboard and returned by the list and detail endpoints, so use something you will recognize later.
Optional list tab: changed_jobs selects leads who changed jobs in the past 90 days; posted_on_linkedin selects leads who posted on LinkedIn in the past 30 days; all selects the whole list. The two filtered categories are only supported on lead lists. Omit to preserve the URL filter. Conflicts are rejected.
Optional HTTPS URL to notify once the extraction finishes. It receives a POST carrying the same results as GET /v1/extractions/{extraction_id}/, so you do not have to poll. Leave it out to poll instead.
enrich_emailDeprecated and ignored: every lead extraction now finds and verifies a professional email for every lead, and each lead costs 1 credit with its email included. Still accepted so existing integrations keep working.
Extract a Sales Navigator search or list › Responses
Accepted
extraction_idIdentifier of the new extraction. Poll GET /v1/extractions/{extraction_id}/ with it to follow progress and collect the results; it is the same value the list endpoint returns as search_id.
successAlways true when the extraction was accepted.
messageHuman-readable confirmation that the job was queued.
statusStage the job was in when it was accepted.
countNumber of leads or accounts submitted, when known upfront. It is 0 for a search or list URL, whose real size is only known once Sales Navigator has been paged through.
Extract a single Sales Navigator profile
Extract one Sales Navigator lead or account and get the full record back in the response.
This is the only extraction endpoint that is synchronous: there is nothing to poll and no webhook to wire up, so it suits enriching a single record inside a live workflow. Expect it to take a few seconds.
Slow lookups: if the scrape and email lookup are still running after about 25 seconds you get 202 with an extraction_id instead. It carries on and is billed the same way; poll GET /v1/extractions/{extraction_id}/ for the prospect. Use POST /v1/extractions/profiles/ for more than one profile at a time.
The returned prospect object carries the identity, role, tenure and company fields Evaboot collects, plus a verified email address and its status where one exists.
Cost: 1 credit, email included.
Extract a single Sales Navigator profile › Request Body
profile_idThe lead or account to extract, as a Sales Navigator URL (linkedin.com/sales/lead/...) or as a bare Sales Navigator id. Public linkedin.com/in/... profile URLs are not accepted.
enrich_emailDeprecated and ignored: every lead extraction now finds and verifies a professional email for every lead, and each lead costs 1 credit with its email included. Still accepted so existing integrations keep working.
Extract a single Sales Navigator profile › Responses
OK
extraction_idIdentifier of the extraction that produced this record. Use it with GET /v1/extractions/{extraction_id}/ to fetch the same result again later.
successAlways true when the profile was extracted.
The extracted record, as human-readable column names mapped to values: identity, role and tenure, company details, and the email address plus its verification status when enrichment was requested. Which columns are present depends on whether a lead or an account was extracted. Empty if nothing could be extracted.
Extract a list of Sales Navigator profiles
Extract a specific set of Sales Navigator leads or accounts, given their URLs or ids, without going through a search.
Use it when you already know exactly who you want: up to 2500 entries per request, all leads or all accounts, never a mix. Public linkedin.com/in/... profile URLs are rejected.
The work runs in the background: the response returns an extraction_id straight away, and you either poll GET /v1/extractions/{extraction_id}/ until its status is EXECUTED or supply a webhook_url and be notified when the results are ready.
Every lead gets a verified professional email where one exists.
Cost: 1 credit per profile submitted, emails included. The whole batch is refused if your balance does not cover it.
Extract a list of Sales Navigator profiles › Request Body
profile_idsThe Sales Navigator leads or accounts to extract, as full URLs or as bare Sales Navigator ids. One batch must be either all leads or all accounts, and public linkedin.com/in/... profile URLs are not accepted. Between 1 and 2500 entries.
search_nameYour own name for this extraction. Shown in the Evaboot dashboard and returned by the list and detail endpoints.
Optional HTTPS URL to notify once the extraction finishes. It receives a POST carrying the same results as GET /v1/extractions/{extraction_id}/, so you do not have to poll.
enrich_emailDeprecated and ignored: every lead extraction now finds and verifies a professional email for every lead, and each lead costs 1 credit with its email included. Still accepted so existing integrations keep working.
Extract a list of Sales Navigator profiles › Responses
Accepted
extraction_idIdentifier of the new extraction. Poll GET /v1/extractions/{extraction_id}/ with it to follow progress and collect the results; it is the same value the list endpoint returns as search_id.
successAlways true when the extraction was accepted.
messageHuman-readable confirmation that the job was queued.
statusStage the job was in when it was accepted.
countNumber of leads or accounts submitted, when known upfront. It is 0 for a search or list URL, whose real size is only known once Sales Navigator has been paged through.
Get LinkedIn extraction job results
Fetch an extraction's status and, once it has finished, its extracted records. This is the endpoint you poll after creating an extraction, and it returns the same data a webhook_url would have delivered.
The status code tells you which of two payloads you get:
- 202: still running. You get the status and a
progresspercentage, and should poll again shortly. - 200: finished. You get the full payload including
prospects.
Each record maps human-readable column names to values: identity, role and tenure, company details, and the email address plus its verification status when the extraction was created with enrich_email. Which columns appear depends on whether leads or accounts were extracted.
For large extractions, page the records with the optional start and limit query parameters; total_count and has_more then describe the whole result set. Omit limit and every record is returned in one response. limit=0 returns the status, progress and counts with an empty prospects list.
Synchronous and free: reading results costs no credits.
path Parameters
extraction_idquery Parameters
startlimitGet LinkedIn extraction job results › Responses
OK
search_idIdentifier of the extraction you requested.
search_nameThe name you gave the extraction when you created it.
statusWhere the extraction stands. On this response it is EXECUTED when the results are complete, or FAILED / PAUSED when they are not.
extraction_typeHow the extraction was created: SEARCH, LIST, UPLOAD or SINGLE.
total_prospectsNumber of leads or accounts Sales Navigator reported before scraping. An estimate; use total_count for the number of records actually extracted.
progressCompletion percentage, 0 to 100. 100 once the extraction has finished successfully.
When the extraction was created (UTC).
When the extraction finished (UTC). null if it never finished.
failure_reasonShort machine-readable reason the extraction did not complete, for example insufficient_credits, auth_error, quota_exceeded or invalid_urls. Empty string when the extraction succeeded.
The extracted records, each a mapping of human-readable column names to values: identity, role and tenure, company details, and the email address plus its verification status when enrichment was requested. Which columns are present depends on whether leads or accounts were extracted.
startZero-based index of the first record returned.
Page size that was applied, echoing the limit you sent. null when you did not page and every record was returned.
returned_countNumber of records in prospects on this response.
total_countNumber of records this extraction produced in total, across all pages.
has_moreWhether records remain after this page. Request the next page with start = start + returned_count.
List LinkedIn extraction jobs
List the extractions on your account, newest first.
Returns a summary of each one (name, status, type, estimated size, creation date) rather than the extracted records; fetch those from GET /v1/extractions/{extraction_id}/. Page with start and limit (25 per page by default).
status narrows the list. It takes the lowercase job states pending, scheduled, processing, completed, paused and failed. Note that these are not the uppercase values the responses report.
Synchronous and free: listing costs no credits.
query Parameters
startlimitstatusList LinkedIn extraction jobs › Responses
OK
search_idIdentifier of the extraction. Pass it to GET /v1/extractions/{extraction_id}/ to fetch the results.
search_nameThe name you gave the extraction when you created it.
statusWhere the extraction stands: ACCEPTED (queued), SCHEDULED (waiting for its start date), EXECUTING (running), EXECUTED (finished, results available), PAUSED (waiting for credits) or FAILED.
extraction_typeHow the extraction was created: SEARCH (a search URL), LIST (a lead or account list URL), UPLOAD (a list of profiles) or SINGLE (one profile).
total_prospectsNumber of leads or accounts Sales Navigator reported for this search before scraping. An estimate, so it can differ from the number of records finally returned.
When the extraction was created (UTC).
List recurring exports
Every recurring export on your account that can still run, soonest next run first. Paused schedules are included. Stopped ones are not.
Synchronous and free.
List recurring exports › Responses
OK
idSchedule id. Pass it to get, update, and delete.
nameName copied onto each future run.
frequencydaily, weekly, or monthly.
pausedWhen true, the scheduler skips this schedule.
search_urlThe saved search on LinkedIn, without the new-since-last-run filter.
lead_searchtrue for a people search, false for a company search.
The extraction this schedule was started from, when it still exists. Same id GET /v1/extractions/{extraction_id}/ accepts.
When the schedule last launched a run. Null before the first automatic run.
When the next run is due. A paused schedule still reports the date it would have used.
runsExports this schedule has already produced.
leadsLeads collected across those runs.
Automatic integrations that receive each run: those sending all exports, all recurring exports, this recurring export, or the folder its runs are filed in. People-only integrations are left out of a company search.
Create a recurring export
Schedule an extraction you already launched, or a Sales Navigator people or company search URL, so Evaboot repeats it daily, weekly, or monthly. Pass exactly one of extraction_id or url.
This does not scrape. The next run is one interval after this call and contains only leads new since now, including when the original extraction is still in progress. Each run uses your connected Sales Navigator account, spends credits, and counts against the daily quota. With no credits or no connected account, that run is skipped and the next date still moves forward.
A URL that already contains savedSearchId is scheduled as that saved search. Nothing is saved again. Any other people or company search, including a people search filtered on an account list, is saved once on your Sales Navigator seat and then scheduled as that search. A search you already automate is not duplicated: the existing schedule's cadence is updated and created is false.
Lists and single profiles are rejected, and so is a search filtered on the temporary company lists of an account-based search agent job: schedule its accounts_url instead.
Create a recurring export › Request Body
frequencyHow often a new export of leads found since the previous run is launched.
Identifier of an existing extraction, as returned by POST /v1/extractions/url/ and by the list endpoint's search_id. People and company searches only. Lists and single profiles cannot recur. Pass this or url, not both.
A Sales Navigator people or company search URL. When it already contains savedSearchId, that saved search is scheduled and nothing is saved again. Any other people or company search is saved once on your Sales Navigator seat, then scheduled. A people search filtered on an account list stays that lead search. Pass this or extraction_id, not both.
Create a recurring export › Responses
OK
idSchedule id. Pass it to get, update, and delete.
nameName copied onto each future run.
frequencydaily, weekly, or monthly.
pausedWhen true, the scheduler skips this schedule.
search_urlThe saved search on LinkedIn, without the new-since-last-run filter.
lead_searchtrue for a people search, false for a company search.
createdtrue when a new schedule was stored. false when this search was already recurring and only the cadence changed.
The extraction this schedule was started from, when it still exists. Same id GET /v1/extractions/{extraction_id}/ accepts.
When the schedule last launched a run. Null before the first automatic run.
When the next run is due. A paused schedule still reports the date it would have used.
runsExports this schedule has already produced.
leadsLeads collected across those runs.
Automatic integrations that receive each run: those sending all exports, all recurring exports, this recurring export, or the folder its runs are filed in. People-only integrations are left out of a company search.
Get a recurring export
One recurring export. Unknown, stopped, and another account's ids are not found.
path Parameters
schedule_idGet a recurring export › Responses
OK
idSchedule id. Pass it to get, update, and delete.
nameName copied onto each future run.
frequencydaily, weekly, or monthly.
pausedWhen true, the scheduler skips this schedule.
search_urlThe saved search on LinkedIn, without the new-since-last-run filter.
lead_searchtrue for a people search, false for a company search.
The extraction this schedule was started from, when it still exists. Same id GET /v1/extractions/{extraction_id}/ accepts.
When the schedule last launched a run. Null before the first automatic run.
When the next run is due. A paused schedule still reports the date it would have used.
runsExports this schedule has already produced.
leadsLeads collected across those runs.
Automatic integrations that receive each run: those sending all exports, all recurring exports, this recurring export, or the folder its runs are filed in. People-only integrations are left out of a company search.
Delete a recurring export
Stop a recurring export permanently. Runs already produced stay. Integrations pinned to it stop receiving it, and turn manual when it was their only schedule. There is no way to restore the schedule.
path Parameters
schedule_idDelete a recurring export › Responses
OK
idThe schedule that was stopped.
deletedAlways true. The schedule cannot be restored.
Update a recurring export
Change the name, the cadence, or whether the schedule is paused. Omit a field to leave it. Sending the current value changes nothing, including an already-active schedule whose next run is overdue.
Renaming also renames the template extraction, which is the name the next run is created with. Changing the cadence recomputes the next run.
path Parameters
schedule_idUpdate a recurring export › Request Body
Name of the schedule and of the template extraction. The next run is created with this name. Exports already produced keep theirs.
New cadence. The next run is recomputed from the last one, so it can move sooner.
true stops future runs and keeps the schedule. false resumes it. Resuming an overdue schedule waits one full interval instead of firing immediately.
Update a recurring export › Responses
OK
idSchedule id. Pass it to get, update, and delete.
nameName copied onto each future run.
frequencydaily, weekly, or monthly.
pausedWhen true, the scheduler skips this schedule.
search_urlThe saved search on LinkedIn, without the new-since-last-run filter.
lead_searchtrue for a people search, false for a company search.
The extraction this schedule was started from, when it still exists. Same id GET /v1/extractions/{extraction_id}/ accepts.
When the schedule last launched a run. Null before the first automatic run.
When the next run is due. A paused schedule still reports the date it would have used.
runsExports this schedule has already produced.
leadsLeads collected across those runs.
Automatic integrations that receive each run: those sending all exports, all recurring exports, this recurring export, or the folder its runs are filed in. People-only integrations are left out of a company search.