LinkedIn profile scraper API
A LinkedIn profile scraper API that returns the public preview of a profile: name, headline, location, current company, job titles, education, follower and connection counts, and the photo — from slugs or /in/ URLs, without logging into anyone's account.
$0.005 per delivered profile · $2 free every month · Failed runs never billed
$ curl $QD/linkedin_profile/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"profiles": ["williamhgates"], "max_results": 5}'
{ "status": "done", "count": 5,
"results": [
{
"slug": "…",
"name": "…",
"headline": "…",
"location": "…" } ],
"cost": 0.025 }
# 5 profiles × $0.005 · nothing delivered, nothing charged
What a LinkedIn profile scraper API does
Logged out, LinkedIn serves a preview page and puts the rest behind a sign-in wall. This collector reads exactly the public half — the schema.org block and the top card — and stops there. It does not authenticate, does not replay someone's session cookie, and does not pretend the hidden fields are available.
That boundary is the product decision. Tools that promise full profiles are logging in as somebody, which is the part that gets accounts banned and creates a compliance problem you inherit. If the public preview is enough for your use case, this is a clean way to collect it at volume.
What one profile looks like
Every delivered profile carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
slug | string | Profile slug. |
name | string | Full name. |
headline | string · nullable | Profile headline. |
location | string · nullable | Location as published. |
country | string · nullable | Country when exposed. |
job_titles | string[] | Titles listed in the public schema block. |
company | string · nullable | Current company. |
company_url | string · nullable | Company LinkedIn URL. |
education | string[] | Schools listed publicly. |
followers | integer · nullable | Follower count. |
connections | integer · nullable | Connection count as shown. |
image | string · nullable | Profile photo URL. |
url | string | Profile URL. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
profiles | array | yes | Profile slugs (williamhgates) or /in/ URLs, one per line. |
country | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
max_results | integer | no | How many profiles to deliver at most (1–50). You pay only for delivered profiles. |
Pricing
LinkedIn profile scraper API pricing
$0.005 per delivered profile. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 400 profiles before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/linkedin_profile/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"profiles":["williamhgates"],"max_results":5}'
What people build with the LinkedIn profile scraper API
Three shapes of work this endpoint was designed around.
Lead enrichment
Attach title, company and location to a list of profile URLs you already hold.
Recruiting research
Screen a candidate shortlist on headline and current employer before reaching out.
Data hygiene
Detect when a contact has changed role or company since your CRM last saw them.
LinkedIn profile scraper API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| Authentication | Your cookie, your account at risk | None — public preview only |
| Scope claims | Promise the full profile | Documented as the public half |
The only official read is your own visitor
LinkedIn's API offers Sign In with LinkedIn, which returns the profile of a user who has just authenticated with your application and consented to share basic fields. That is an authentication product. Reading profiles of people who have not authorised you runs through partner programmes that are not granted for enrichment or prospecting, at any price.
Which leaves the logged-out public preview — what this reads — or a commercial contact database. They are different products: databases sell verified emails and direct dials that no public page contains; this returns current, self-published positioning for anyone with a public profile, and returns it as a typed row rather than a page.
Limits, scope and the legal bit
Up to 50 profiles per run, logged-out fields only. Everything behind the sign-in wall — full experience history, contact details, skills — is out of scope by design and is never guessed to fill a column. Throughput is your plan's rate limit rather than anything about the collector: 60 requests/minute on pay-as-you-go, up to 1,200 on the top tier.
This is the most personal-data-heavy collector in the catalogue. US courts have repeatedly held that scraping publicly accessible pages is not unauthorised access under the CFAA, which is meaningful and narrow: a profile is still personal data under GDPR and equivalents, so you need a lawful basis, individuals hold access and erasure rights, and LinkedIn's terms prohibit automated collection independently of any statute. None of this is legal advice — get some for your actual use case.
Does it return the full work history?
No. Experience beyond the current role, contact details and connections are behind LinkedIn's sign-in wall, and this API does not log in. You get name, headline, location, current company, public job titles and education.
Do I need a LinkedIn account or cookie?
No. That is the point: nothing is authenticated, so no account of yours is exposed.
Is the company page richer?
Considerably. linkedin_company returns employee count, follower count, industry, website and the structured headquarters address.
Is there a free LinkedIn profile scraper API?
Every account gets $2 of credit every month with no card, which is about 400 delivered profiles on this endpoint at $0.005 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.005. A run capped at 50 profiles — the maximum for this collector — costs $0.25 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Why is the dataset narrower than other LinkedIn tools claim?
Because it only reads what LinkedIn shows to signed-out visitors. Tools that return full experience history are holding a session, and sessions on LinkedIn get detected and the account restricted. A narrower dataset that keeps working is the deliberate trade.
Can it return email addresses?
No. LinkedIn does not publish email addresses on public profiles, so no LinkedIn collector can return one honestly. For business contact details, the site contacts and company profile collectors read what a company publishes on its own site.
Run the LinkedIn profile scraper API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.