The LinkedIn data API

Public LinkedIn profiles, companies, posts, jobs, and people search, all from one endpoint. No login, no accounts to ban.

Public, logged-out data Clean JSON, one endpoint 3,000 free / month
tldr.txt
one endpoint, five surfaces: profile, company, posts, jobs, people search
public pages only, no login, no cookie, nothing of yours to ban
profiles and companies come back in about a second (measured ~0.8s server time)
from $1.96 per 1,000 down to $0.65 at volume, credits never expire
full public profile in one call: work history, education, followers, skills
→ Bright Data is cheaper at entry ($1.50/1k) with a bigger free tier; we say so below
ONE ENDPOINT

Five surfaces, one call

Everything runs through GET /v1/linkedin?type=<type> with your key in the x-api-key header. You change the type and the inputs, not the endpoint.

type=profile

A person's public profile by url (a linkedin.com/in/ link). Name, headline, current role, location, follower count, work history, education, and more.

type=company

A company page by url (a linkedin.com/company/ link). Add employees=true to pull an employee sample alongside the company data.

type=posts

Recent public posts for a profile or company url. Add comments=true to include comment counts. One call returned 16 posts on our test.

type=jobs

A job search by keywords and optional location, or a single posting by url. One search returned 10 jobs in under half a second of server time.

type=search

People search by keywords. By default you get name, headline, location, and profile URL. Add enrich=true to return each person's full profile in the same call.

Billing is per result

One credit per successful call. A private or empty result returns 200 with a note and costs nothing. Enriched people search charges one credit per full profile returned.

THE REAL RESPONSE

What you get

I ran this call on 2026-07-15 against the public profile at linkedin.com/in/satyanadella. Here is the request and the shape that came back, trimmed only where an array repeats. Dawson Young, founder of CrustAPI.

# the request curl "https://crustapi.com/v1/linkedin?type=profile&url=https://www.linkedin.com/in/satyanadella" \ -H "x-api-key: YOUR_KEY"
{ "type": "profile", "url": "https://www.linkedin.com/in/satyanadella", "tookMs": 796, "profile": { "name": "Satya Nadella", "headline": "Chairman and CEO at Microsoft", "currentTitle": "Chairman and CEO", "currentCompany": "Microsoft", "location": "Redmond, Washington, United States, US", "city": "Redmond", "state": "Washington", "country": "US", "followerCount": 12068716, "connectionsCount": 500, "publicIdentifier": "satyanadella", "linkedinUrl": "https://www.linkedin.com/in/satyanadella", "photo": "https://media.licdn.com/dms/image/...", "bannerImage": "https://media.licdn.com/dms/image/...", "memberId": "19186432", "experience": [ { "position": "Chairman and CEO", "companyName": "Microsoft", "companyLinkedinUrl": "https://www.linkedin.com/company/microsoft", "location": "Redmond, Washington", "startDate": "2014-02", "endDate": null } // 5 roles total ], "education": [ /* 3 schools: schoolName, schoolLinkedinUrl, dates */ ], "skills": [], "honorsAndAwards": [], "languages": [] } }

We drop LinkedIn's placeholder guest connection value of 8 and report the real 500+ figure. The skills array can be empty on some profiles, so we never promise it is always filled. Something look off? Email support@crustapi.com.

Run this exact call free
3,000 credits a month. No card, no contract.
Get started →
MEASURED JULY 15, 2026

Speed, measured

These are the server processing times (tookMs) from live calls I ran on 2026-07-15. Wall-clock is a little higher because it includes network. Profiles and companies land in about a second. People search is slower and I say so plainly below.

Profile
tookMs796ms · wall 1380ms
Company
tookMs793ms · wall 1004ms
Jobs (10 returned)
tookMs486ms · wall 773ms
Posts (16 returned)
tookMs1450ms · wall 1798ms
People search
tookMsabout 1 to 3s, occasionally slower

People search returns matching public profiles with name, headline, location, and URL, and a search can occasionally come back empty, which is free. When you need the full record for each match, add enrich=true and it returns full profiles in the same call.

THE HONEST FIELD

LinkedIn data vendors, side by side

The prices below are normalized to per 1,000 profile records where a vendor publishes enough to do the math. Where a vendor does not publish a per-profile price, that is what the cell says. Sources are linked in each row.

VendorMethodPer 1,000EmailFree tier
CrustAPI Public, logged out $1.96 → $0.65 No 3,000 / month, no card
Bright Data scraper API Public scraping $1.50 (PAYG) No work email 5,000 / month, no card
Bright Data datasets Pre-collected database ~$2.50 ($250 min order) No Free sample
ScrapIn Public / real-time PAYG from $500, no public per-profile price Claimed, unverified None ($30 paid 7-day trial)
Lix Account / extension ~$98 ($49 per 500 calls) Add-on, extra None
Unipile Your own connected accounts €5 / account / month (€49 min) No None
PhantomBuster Your own session cookie Execution time, $69–$439 / month Separate tool Free trial
Apify (dev_fusion) Public, no cookie $10.00 No Apify free credits
Apify (apimaestro) Public, no cookie $5.00 No Apify free credits
EnrichLayer Cached database (live +9 credits) 1–3 credits at $0.02–$0.10 each Separate endpoint Free credits

Figures pulled from each vendor's public pricing pages, checked July 15, 2026. Prices and tiers change; if a cell is stale, tell us at support@crustapi.com and we will fix it.

WHY THE METHOD MATTERS

How the methods differ

The "Method" column above is the most important one, because it decides what can go wrong for you. There are three ways to get LinkedIn data, and they carry very different risk.

Public, logged out

Read the same pages a signed-out visitor sees. No account, no login, nothing of yours to restrict or ban. CrustAPI, Bright Data's scraper API, and ScrapIn work this way.

Account or session cookie

The data rides on a real LinkedIn login, usually yours. PhantomBuster, Unipile, and Lix work this way. It reaches more, but the account can be restricted or banned and there are daily caps.

Pre-collected database

A snapshot gathered earlier and served back fast. Bright Data datasets, EnrichLayer's default cache, and similar providers work this way. Quick, but a record can be stale between refreshes.

Why public is the safe lane

If a method needs a login, some account has to accept the risk. Public and logged out puts no account of yours in the loop, so a job or a project cannot get your LinkedIn profile banned. That is the lane CrustAPI is in.

THE WORKED MATH

What it costs

One credit is one result. Packs are pay-as-you-go and the credits never expire, so a paused project does not burn what you already bought.

ENTRY PACK
$1.96 per 1,000

$49 buys 25,000 profiles. Good for a first project or a proof of concept.

AT VOLUME
$0.65 per 1,000

$6,500 buys 10 million profiles. The bigger the pack, the lower the per-1,000 rate.

The full ladder: 25k $49 ($1.96/1k) · 100k $149 ($1.49/1k) · 500k $549 ($1.10/1k) · 2.5M $1,999 ($0.80/1k) · 10M $6,500 ($0.65/1k), ex-tax. The free tier resets to 3,000 credits every month and does not stack. Empty and private results are free, so a run of dead URLs does not cost you.

hiQ v. LinkedIn (CFAA). The Ninth Circuit held in 2019, reaffirmed on April 18, 2022, that scraping data from a public website is not access "without authorization" under the Computer Fraud and Abuse Act, because a public page has no login gate to circumvent (EFF). The honest caveat: hiQ ultimately lost on contract, not on hacking. A court found it had breached LinkedIn's User Agreement, which binds people who signed in and agreed to it, including by using fake accounts, and it settled for $500,000 and shut down (Privacy World). The public-scraping-is-not-hacking point stands; the loss was for violating a contract hiQ had agreed to.

Meta v. Bright Data (Jan 23, 2024). A federal court ruled that the Facebook and Instagram Terms do not bar logged-off scraping of public data (Bright Data, TechCrunch).

X Corp. v. Bright Data (May 9, 2024). The court dismissed X's claims, finding that attempts to block copying of public data were preempted by federal copyright law (Social Media Today).

The gate framing. Courts treat the two situations differently. Reading a public, logged-out page is like walking through an open door, there is no login gate to breach, whereas logging in, or creating fake accounts to do so, crosses an authorization gate.

The contrast that shows the line. When Proxycurl was hit with a permanent injunction to delete unlawfully obtained data and stop accessing LinkedIn, what LinkedIn had gone after was fake logged-in accounts, not public logged-out reading (Social Media Today). CrustAPI uses no accounts and no fake profiles, so it is not in that situation.

Keep two things in mind. The Bright Data rulings are district-court decisions, persuasive but not nationwide binding precedent, the X ruling was on a motion to dismiss, and each turned on those platforms' specific terms. So the fair way to say it is that courts have sided with public-data scrapers, not that scraping is settled law. This is background, not legal advice; check your own use with a lawyer.

FAIR PLAY

Where the others win

Bright Data is cheaper at entry. Its scraper API is $1.50 per 1,000 records against our $1.96, and its free tier is 5,000 records a month against our 3,000. If entry price and free volume are what you weigh most, it wins there.Cheaper entry
Bright Data datasets hand you a large pre-collected snapshot fast, which beats live calls when you want millions of records at once and can accept that some are stale between refreshes.Bulk snapshot
Account-based tools like PhantomBuster and Unipile reach data that only appears behind a login. If you accept the account risk and need that reach, a session method covers ground a public reader cannot.Behind login
BEFORE YOU ASK

Common questions

# one endpoint, five surfaces curl "https://crustapi.com/v1/linkedin?type=profile&url=https://www.linkedin.com/in/USERNAME" -H "x-api-key: YOUR_KEY"

Full parameter reference at /docs#linkedin.

WORKS WITH YOUR STACK

Try it on your own URLs

Point the endpoint at the profiles, companies, and jobs you actually care about. The free tier is real, and the JSON decides, not this page.

Get 3,000 free credits
No credit card required