We read the live LinkedIn page and return the numeric ids.
Enrich Layer is the rebranded Proxycurl. As of August 2026 it serves LinkedIn records from a stored database by default, so a row can be any age. CrustAPI reads the live logged-out page on every call.
The other gap is the numeric ids. In our own benchmark, Enrich Layer returned none of LinkedIn's numeric ids. CrustAPI returns memberIdentifier on every profile, plus company and school ids when you ask.
| What matters | CrustAPI | Enrich Layer |
|---|---|---|
| Where the data comes from | The live, logged-out LinkedIn page, read on each call | A stored database, records can be any age by default |
| How fresh is a record | Read live from the page on every call | Served from a stored database, any age since its last refresh |
| LinkedIn numeric ids (company, school, member) | memberIdentifier on every profile; companyId and schoolId opt-in | None returned in our benchmark (0%) |
| A failed or empty result | Free, you pay only when data comes back | Failed requests are billed |
| Do credits expire | Never | Free credits expire in 30 days; paid credits expire after 18 months of inactivity |
| To sign up | No card, 3,000 free credits a month | A card is required, free tier is 100 to 200 credits |
Enrich Layer figures reflect their public plan terms, documentation, and our own benchmark as of August 2026. Check their site for current specifics.
Everything CrustAPI returns lives at one endpoint, GET /v1/linkedin. Pick a surface with type, pass a URL, and add companyId=true and schoolId=true when you want the numeric ids resolved.
This is the exact JSON the curl above returned, trimmed for width. It came back in under a second and cost 1 credit. Note the numeric ids that our benchmark of Enrich Layer never produced.
Three ids to notice. memberIdentifier is LinkedIn's permanent member id, the right join key because it survives name and vanity-URL changes. companyLinkedInId and schoolLinkedInId arrive when you pass companyId=true and schoolId=true.
The whole public record, structured the same way on every call, so your parser is written once and never breaks on a schema surprise.
The email field is opt-in: add email=true and the response appends workEmail and emailStatus (verified, pattern-likely, or unknown). Filter to the confirmed ones and treat the rest as guesses.
Fields that only exist behind a login stay out, on purpose. Connection lists, mutual connections, and profile viewers never appear on the logged-out page, so they are not in the response. That boundary lets the API run with no accounts and nothing of yours at risk.
From zero to your first profile JSON in about a minute:
Create a free account. You get 3,000 credits a month, no card needed.
Copy your key from the dashboard. Signup issues one automatically.
Run the curl above with any public profile URL. The JSON comes back with the ids in it.
Every successful LinkedIn call is 1 credit, whatever the type. A private or empty profile is not charged, unlike a model that bills failed requests.
| What you pull | Credits | You pay |
|---|---|---|
| First 3,000 calls each month | 3,000 | $0, free tier, no card |
| 25,000 profile calls | 25,000 | $49 ($1.96 per 1,000) |
| 100,000 profile calls | 100,000 | $149 ($1.49 per 1,000) |
| 500,000 profile calls | 500,000 | $549 ($1.10 per 1,000) |
| 2.5 million profile 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 never expire, unlike Enrich Layer's 30-day free and 18-month paid expiry clocks as of August 2026. For big refresh runs, POST up to 100 profile URLs to /v1/linkedin/batch; a failing row never fails the batch.
Related: LinkedIn API · Proxycurl alternative · Lusha alternative · ZoomInfo alternative · Clearbit alternative
CrustAPI is a LinkedIn data API built on public, logged-out pages. One GET request to /v1/linkedin returns a profile, company, posts, or jobs as clean JSON. Where Enrich Layer, the rebranded Proxycurl, serves from a stored database by default, CrustAPI reads the live page on each call and returns it under one stable schema. Every successful call is 1 credit and an inaccessible profile is free.
Live by default. Every profile call reads the current logged-out page, so you are not handed a record of unknown age. Enrich Layer serves from a stored database by default, so a row can be any age since its last refresh. With CrustAPI the live read is the standard call, so the data is current every time.
Yes. Every profile carries memberIdentifier, LinkedIn's permanent numeric member id, and you can add companyId=true and schoolId=true to resolve the current company and school to their numeric ids. In our own benchmark, Enrich Layer returned none of these numeric ids (0%). The member id never changes with a name or vanity-URL edit, so it is the right join key for a database.
No card to start, and failed calls are free. The free tier is 3,000 credits every month with no card, and you are billed one credit only when a call returns data. An empty or inaccessible profile costs nothing. Enrich Layer requires a card at signup and bills failed requests.
No, prepaid credits never expire. On Enrich Layer, free-tier credits expire in 30 days and paid credits expire after 18 months of account inactivity. With CrustAPI you buy credits once and use them whenever you need them.
We read only public, logged-out pages and never use fake accounts or logins, and fields that exist only behind a login are deliberately excluded. A site's own terms may restrict automated access on their side. What you receive is data that is public for anyone to see.
Start on the free 3,000 credits a month, no card needed. One GET returns the public profile as clean JSON with LinkedIn's numeric ids, 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