Reads only the logged-out page. No accounts, no cookies.
LinkedIn does not publish a general-purpose data API, which is why people keep searching for one. CrustAPI fills that gap: GET /v1/linkedin reads the logged-out public page and hands it back as clean JSON.
This page answers the two questions people ask most: does a public LinkedIn API exist, and is using one allowed. For the full field reference, see the LinkedIn API page; for the step by step, see how to scrape LinkedIn without login.
Pick a surface with type, pass a URL or keywords, and the result comes back under a key named after the type. One billing rule covers all of them: a successful call is one credit, and an empty or inaccessible result is free.
| type | What the public page gives you | Input |
|---|---|---|
| profile | The public profile: name, headline, work history, education, follower count, and stable ids. The default type. | url (a linkedin.com/in/... URL) |
| refresh | The current company and school with their numeric LinkedIn ids, plus companyState. The lean, low-latency call for keeping a database current. | url |
| company | The public company page. See the LinkedIn company API for the full shape. | url (a linkedin.com/company/... URL) |
| posts | Public posts, up to 100 per call. Add comments=true for comments on each post. | url (profile or company) |
| jobs | Public job listings, up to 50 per call, with paging via start. | keywords plus optional location, or a job url |
| search (beta) | People search over public results. Add enrich=true to get each person's full profile in the same call. | keywords |
Note the input rule: profile, company, and posts take url, never a search query. If you only have a name, find the person first with type=search (beta), then pass the profile URL you get back.
This is the exact JSON the curl above returned, trimmed for width. It came back in about 1 second and cost 1 credit.
Two fields worth noticing. accessible tells you whether the profile has a public page at all; when it is false, profile is null, a note explains why, and the call is not charged.
memberIdentifier is LinkedIn's permanent numeric member id. It survives name and vanity-URL changes, so it is the right join key for a database.
A public LinkedIn API can only return what a signed-out visitor sees. That is a feature, not a limit: it is what lets the call run with no account of yours attached.
The email field is opt-in: add email=true to a profile call and the response appends workEmail and emailStatus.
The status is verified, pattern-likely, or unknown, so you can keep the confirmed addresses and treat the rest as guesses. Email is a field on the profile call, not a separate product.
Fields that only exist behind a login stay out, on purpose. A person's connection list, mutual connections, who viewed a profile, or anything else that never appears on the logged-out page is not in the response. That boundary is what makes it a public LinkedIn API in the first place, with no account and nothing of yours at risk.
The short version: it reads data that is already public, and it uses no login. Here is the fuller picture, without the hand-waving.
The data comes from pages that anyone can open in a browser with no account. Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims. No fake accounts, no logins, no CAPTCHA fraud.
A site's terms still restrict automated access on their side, which is why we keep the whole thing to public pages and never touch a login wall. We handle the collection, and what you receive is plain public data.
That distinction separated the tools that survived from the ones that were shut down: reading public pages logged-out is not the same as operating fake logged-in accounts.
From zero to your first profile as JSON in about two minutes:
Create a free account. You get 3,000 credits a month, no card needed.
Copy your key from the dashboard. It is issued the moment you sign up.
Run the curl above with any public LinkedIn URL. The profile comes back as JSON.
Every successful call is one credit, whatever the type. A profile that is not accessible costs nothing, and an empty search result is free. Here is what the packs cost:
| Calls | Credits | You pay |
|---|---|---|
| 3,000 every month | 3,000 | $0, free tier, no card |
| 25,000 calls | 25,000 | $49 ($1.96 per 1,000) |
| 100,000 calls | 100,000 | $149 ($1.49 per 1,000) |
| 500,000 calls | 500,000 | $549 ($1.10 per 1,000) |
| 2.5 million calls | 2,500,000 | $1,999 ($0.80 per 1,000) |
Packs continue up to 250 million credits for $100,000, which is $0.40 per 1,000. Prices ex-tax.
Credits are prepaid and never expire. One exception to the flat rule: people search (beta) with enrich=true bills one credit per full profile it returns.
Related: LinkedIn API reference · Scrape LinkedIn without login · LinkedIn company API · Proxycurl alternative
Yes. CrustAPI is a public LinkedIn API at GET /v1/linkedin. It reads the logged-out public version of a profile, company page, or job listing and returns it as clean JSON. Set type to profile, refresh, company, posts, jobs, or search (beta). Every successful call is 1 credit, and a profile that is not accessible is free.
No. It reads only the public, logged-out page, so there is no cookie to paste, no session to hand over, and no account of yours in the request. Fields that appear only behind a login, like connection lists, are deliberately not part of it.
It reads data that is already public for anyone to see, with no login. Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, and we use no fake accounts or logins. A site's terms still restrict automated access on their own side, so we keep to public pages, handle the collection, and hand you plain public data.
For a profile: name, headline, location, current company, the full experience history with company links and dates, follower count, and stable identifiers including memberIdentifier, LinkedIn's permanent numeric member id. Add email=true to append workEmail with an emailStatus of verified, pattern-likely, or unknown. Company pages, public posts, and job listings have their own shapes on the same endpoint.
One credit per successful call, for every type. The exception is people search (beta) with enrich=true, which bills 1 credit per full profile returned. A private or inaccessible profile returns null with a note and is not charged, and empty results are free. The free tier is 3,000 credits a month with no card.
Same endpoint, different question. This page answers whether a public LinkedIn API exists and whether it is allowed. The LinkedIn API page is the full reference for every type, field, and parameter, and the scrape LinkedIn without login page is the step by step.
Start on the free 3,000 credits a month, no card needed. One GET returns the public profile as clean JSON, and a profile that is not accessible costs you nothing. No account of yours is ever part of the request.
Get 3,000 free credits