LinkedIn scraper

Create a LinkedIn scraper (start an extraction)

Starts extracting the people (or companies) of a LinkedIn search into a CSV. The extraction runs in the background on Emelia servers: this call only creates the scraper and returns its id (scrapId). Follow it with GET /linkedin-scrappers/{id} or with a webhook (POST /linkedin-scrappers/{id}/webhook).

Accepted URLs and accounts

  • Sales Navigator people search (https://www.linkedin.com/sales/search/people...), lead list (.../sales/lists/people/...) or account search (.../sales/search/company..., companies instead of people). authes must contain ids of LinkedIn accounts connected for scraping (the authId returned by POST /linkedin-scrappers/authes).
  • Classic LinkedIn people search (https://www.linkedin.com/search/results/people/...). It runs on a LinkedIn account connected for campaigns: authes must contain ids of LinkedIn accounts connected for campaigns, not of accounts connected for scraping.
  • Any other https://linkedin.com/sales/... URL is accepted here but the scraper then stops with the error BAD_SALES_NAV_URL.

Volume limits (applied during the extraction, not at creation)

  • Sales Navigator never returns more than 2,500 results per search (100 pages of 25). Lead lists and saved searches are capped at 2,500, searches filtered on your network (CONNECTION_OF) at 1,000, account searches at 1,000 companies, classic searches at 1,000 people.
  • Grow and Scale plans: a search with 3,000 results or more that contains filters is split automatically into chunks of at most 2,500 (segmented: true) and extracted over several days, at 2,500 contacts per day per LinkedIn account (5,000 for an account with a Sales Navigator Advanced seat). Give several accounts in authes to go faster. Above 80,000 results the scraper stops with TOO_MUCH_RESULT.
  • Start plan and free use: capped at 2,500, no automatic split.
  • max_contacts stops the extraction early. On Sales Navigator it is applied per page of 25 (you can get up to 25 more) and it is ignored for segmented searches. On classic searches it is exact.

Rules checked by this call: the name is unique among your scrapers; with a single account and no plannedStart, that account must not already run a scraper; every account exists, belongs to you and is valid; plannedStart is at least one hour ahead; your workspace has an active subscription, or has not used its free extraction yet, or still has credits (without subscription, extraction costs about 1 credit per 2 contacts and pauses when credits run out). Fields not listed in the schema are rejected.

post/linkedin-scrappers

Request

  • Base URL: https://api.emelia.io
  • URL: https://api.emelia.io/linkedin-scrappers
  • Auth: API key in header Authorization

Request body

namestring required

Unique among your scrapers. Keep it at 100 characters or less (the rename limit).

authesstring[] required

LinkedIn account ids. Sales Navigator URL: ids of accounts connected for scraping (authId returned by POST /linkedin-scrappers/authes). Classic search URL: ids of the LinkedIn accounts connected to your campaigns. All must be valid and yours. Several accounts share the chunks of a segmented extraction; otherwise one of them is picked at random.

urlstring uri required

Sales Navigator people search, lead list or account search URL, or classic LinkedIn people search URL, copied from the browser address bar.

plannedStartstring date-time

Optional ISO 8601 start date, at least one hour ahead. The scraper stays planified until then.

max_contactsinteger

Optional maximum number of contacts. Approximate on Sales Navigator (page of 25), ignored on segmented extractions, exact on classic searches.

Response

Scrapper created. status is running (or planified with plannedStart).

successboolean required
scrapIdstring required

Id of the new scraper.

Changes

No recorded changes to this operation across all 1 revision of this API.