Any public company page as clean JSON, with the exact employee count.
Point GET /v1/linkedin?type=company at any public linkedin.com/company URL and you get that company's firmographic record as clean JSON. Your key goes in the x-api-key header.
The input is a URL, not a search query. Pass the full linkedin.com/company/... link or just the slug after it.
The result comes back under a company key with the same shape every time, so your parser is written once. It is the same live endpoint the playground runs on.
This is the exact JSON the curl above returned for Stripe, trimmed for width. It came back in 795 ms and cost 1 credit.
Look at the two size fields. companySize is the band LinkedIn prints on the page, and employeeCount is the resolved number sitting right next to it. Both ship on the same call, so you can display the label and sort on the real figure.
The public company page shows a size band like 5,001 to 10,000, and most company data providers pass that band straight through. We return the resolved number and the stable id.
| Source | Employee size | Numeric company id |
|---|---|---|
| LinkedIn's public company page | 5,001-10,000 employees (a band) | Not shown on the page |
| CrustAPI type=company | 17,112 as employeeCount, band kept too | 2135371 as linkedInId |
You can filter and score companies on an actual headcount instead of a bucket. That matters the moment you want everyone over 10,000 or everyone between 200 and 500.
linkedInId is LinkedIn's permanent numeric company id, the join key that survives a rename or slug change. The universalName is the URL slug for building links back.
The public company record, structured. Same fields on every call, so your parser stays simple.
Add employees=true to the same call and the response appends the employee list from the public company page. You get the firmographic record and a roster in one request.
Fields the page does not list come back empty rather than made up, so you can trust a value when it is there.
Fields that only exist behind a login stay out, on purpose. Anything that never appears on the logged-out company page is not in the response. That boundary is what lets the API run with no accounts and nothing of yours at risk.
Two options for the company type, and both have a sane default.
| Parameter | Required | What it does |
|---|---|---|
| url | Yes | A linkedin.com/company URL, or just the slug after it. This is the company to pull. It is a URL, not a search term. |
| employees | No | Set to true to include the employee list from the public company page in the same response. |
Need a person instead of a company? That is type=profile on the same endpoint. Want a company's public posts or open roles? Use type=posts or type=jobs. It is one endpoint with a type switch, documented on the LinkedIn API page.
From zero to your first company 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. It is on the first screen after you sign in.
Run the curl above with any company URL. The public company record comes back as JSON.
Every successful company call is 1 credit, whether or not you add employees=true. A page that is not accessible returns null with a note and is not charged.
| Pack | Credits | You pay |
|---|---|---|
| Free tier | 3,000 a month | $0, no card needed |
| 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, so an unused pack is still yours next year.
Related: LinkedIn Company Scraper · LinkedIn API · Proxycurl alternative · Bright Data LinkedIn alternative
One endpoint, GET /v1/linkedin?type=company, that returns any public LinkedIn company page as clean JSON. Pass a linkedin.com/company URL and you get name, universalName, the numeric linkedInId, industry, the size band, the exact employeeCount, followers, founded, headquarters, and website. Every successful call is 1 credit.
The public company page shows a size band, like 5,001 to 10,000 employees, and many company data providers pass that band straight through. We keep the band in companySize and also return the resolved number in employeeCount, so on Stripe you see both the 5,001-10,000 label and the 17,112 count. That lets you filter and sort on a real headcount instead of a bucket.
It is LinkedIn's permanent numeric id for the company, returned as linkedInId. Unlike the name or the URL slug, it does not change when a company rebrands or renames its page, so it is the stable key for joining a company across your systems. The universalName field carries the slug for building links back to the page.
No. It reads only the public, logged-out version of each company page, so there is no cookie to paste, no session to hand over, and no account of yours in the loop. Fields that only exist behind a login are deliberately not part of the product.
One credit per successful call, whether or not you add employees=true. A company page that is not accessible returns a null result with a note and is not charged, so a bad or private URL never costs a credit. The free tier is 3,000 credits a month with no card.
We collect only the public, logged-out company page, the same one anyone can open without signing in. Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims, and we use no fake accounts or logins. We handle the collection, and what you get 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 company page as clean JSON, with the numeric company id and the exact headcount. A page that is not accessible costs you nothing.
Get 3,000 free credits