---
title: "Extract a list of Sales Navigator profiles"
method: POST
path: "/v1/extractions/profiles/"
tags: ["LinkedIn Extraction"]
---

# Extract a list of Sales Navigator profiles

`POST /v1/extractions/profiles/`

## Request

- Base URL: `https://api.evaboot.com`
- URL: `https://api.evaboot.com/v1/extractions/profiles/`
- Auth: HTTP bearer

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.

## Request body

- ProfileExtractionCreateIn
  - `profile_ids` string[], required: The 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_name` string, required: Your own name for this extraction. Shown in the Evaboot dashboard and returned by the list and detail endpoints.
  - `webhook_url` string, nullable: 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_email` 'none' | 'matching' | 'all': Deprecated 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.

## Response `202`

Accepted

- ExtractionCreateOut: 202 Accepted response for URL + profile-list extractions. Old wire shape uses ``extraction_id`` (not ``search_id``) on POSTs; GET endpoints continue to expose the same value as ``search_id``. See evaboot_django/public_api/views/extraction.py:506 (URL), line 867 (profile_ids/upload).
  - `success` boolean: Always `true` when the extraction was accepted.
  - `extraction_id` string, required: Identifier 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`.
  - `message` string: Human-readable confirmation that the job was queued.
  - `status` string: Stage the job was in when it was accepted.
  - `count` integer: Number 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.

## Other responses

- `401`: The API key is missing, malformed or unknown.
- `402`: Not enough credits to cover the request.
- `409`: No usable Sales Navigator seat (never connected, or expired).
- `422`: The request body or a supplied URL failed validation.
- `429`: A daily quota or rate limit is exhausted.

---

[API](https://skmtc.dev/evaboot/apis/evaboot-public-api.md) · [All operations](https://skmtc.dev/evaboot/apis/evaboot-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/evaboot/apis/evaboot-public-api/revisions/d770494f2718?raw)
