---
title: "Scrape LinkedIn profiles"
method: POST
path: "/api/contacts/linkedin/scraping"
tags: ["Contact"]
---

# Scrape LinkedIn profiles

`POST /api/contacts/linkedin/scraping`

## Request

- Base URL: `https://api.sponsorunited.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sponsorunited.com/api/contacts/linkedin/scraping`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sponsorunited/apis/sponsorunited-api/docs/api/contacts/linkedin/scraping/post.ts> (a function with typed inputs; its response is checked against the schema)

Scrape Linkedin profiles by given urls and wait for the result, read the result of a run started earlier (container), or start a run and answer with its id at once (urls with wait: false). The start refuses with a fixed error_code. use_fast_scraper scrapes the urls with the fast scraper in either mode. A waiting fast scrape of several urls, or a waiting read of a fast-scraper run, waits up to 30 seconds for the emails and the merge, then answers 202 with the run's id and status processing.

## Request body

- ContactLinkedinScrapeShowRequest
  - `urls` string[], required
  - `container` string: Read the result of a run started earlier, instead of scraping urls.
  - `wait` boolean: false answers at once instead of waiting. With urls: starts the run and answers 202 with its id. With container: answers 202 with status running (PhantomBuster is still scraping) or processing (the emails are still being found), then 200 with the profiles once ready; the result stays readable for 7 days.
  - `use_fast_scraper` boolean: Scrape the urls with the fast scraper, in either wait mode. Its profiles are merged into the stored ones, and a profile only the fast scraper ever read has no phone, other social links or jobs before the previous one. A container read finds out from the container which scraper ran it, so it needs no flag.

## Response `200`

Success

- ContactLinkedinScrapedDataResource
  - `name` string, required
  - `position` string, required
  - `company_name` string
  - `company_url` string
  - `profile_picture` string, required
  - `location` string, required
  - `linkedin` string, required
  - `twitter` string, required
  - `work_phone` string, required
  - `email` string, required
  - `email_status` string, required
  - `current_jobs` object[]
    - `companyUrl` string
    - `companyName` string
    - `logoUrl` string
    - `jobTitle` string
    - `dateRange` string
    - `startedSince` string
    - `isCurrent` boolean
    - `duration` string
    - `description` string
    - `location` string
  - `linkedin_data` string[], required: Data fetched from Linkedin, with jobs, schools, skills, general data etc.

## Other responses

- `202`: wait: false. With urls: the run was started; read it later with its id as container. With container: the profiles are not ready yet - running while PhantomBuster scrapes, processing while their emails are found; read again later. A waiting fast-scraper scrape or read that ran out of time answers with the run's id and status processing; read it later with wait: false.
- `400`: Scraping or reading failed
- `403`: The user lacks the edit-contacts permission
- `422`: Validation failed
- `429`: wait: false - PhantomBuster is at its parallel run limit (error_code parallel_limit); retry after the Retry-After header
- `502`: wait: false - the run could not be started (error_code start_failed)
- `503`: wait: false - no free LinkedIn session (no_free_session), or less than 2 hours of PhantomBuster run time left (not_enough_run_time)

## Changes

- **2026-11-10** `cbf1ca5bff8f`: 1 breaking, 1 info
  - added `subschema #3` to the response body `oneOf` list for the response status `202`
  - added the new optional request property `use_fast_scraper`

[Operation history](https://skmtc.dev/sponsorunited/apis/sponsorunited-api/changes/api/contacts/linkedin/scraping/post.md)

---

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