The LinkedIn company API that returns the real headcount

Any public company page as clean JSON, with the exact employee count.

Numeric company id Exact employee count 1 credit per successful call
THE ENDPOINT

One GET request, the whole company record

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.

curl "https://crustapi.com/v1/linkedin?type=company&url=https://www.linkedin.com/company/stripe" \ -H "x-api-key: YOUR_KEY"
PULLED LIVE FROM THE API, AUGUST 11, 2026

A real response, not a mockup

This is the exact JSON the curl above returned for Stripe, trimmed for width. It came back in 795 ms and cost 1 credit.

// trimmed for width: logo, banner, description, address, and other // fields on the full record removed for readability { "type": "company", "url": "https://www.linkedin.com/company/stripe", "tookMs": 795, "company": { "name": "Stripe", "universalName": "stripe", "linkedInId": 2135371, "tagline": "Help increase the GDP of the internet.", "industry": "Technology, Information and Internet", "companySize": "5,001-10,000 employees", "employeeCount": 17112, "followers": 1623196, "founded": 2010, "headquarters": "South San Francisco, California", "website": "https://stripe.com" } }

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 DIFFERENCE

Exact count and numeric id, not a size band

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.

SourceEmployee sizeNumeric company id
LinkedIn's public company page5,001-10,000 employees (a band)Not shown on the page
CrustAPI type=company17,112 as employeeCount, band kept too2135371 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.

Pull a company record in the next minute
Free 3,000 credits a month, no card.
Get started →
THE RECORD

What data do you get?

The public company record, structured. Same fields on every call, so your parser stays simple.

Identityname · universalName · linkedInIdPositioningtagline · industrySizecompanySize band · employeeCount exactReachfollowers · foundedLocationheadquarters · website

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.

WHAT IT DOES NOT RETURN

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.

THE KNOBS

Parameters that matter

Two options for the company type, and both have a sane default.

ParameterRequiredWhat it does
urlYesA linkedin.com/company URL, or just the slug after it. This is the company to pull. It is a URL, not a search term.
employeesNoSet 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.

THREE STEPS

How do you get started?

From zero to your first company JSON in about a minute:

  1. 1

    Create a free account. You get 3,000 credits a month, no card needed.

  2. 2

    Copy your key from the dashboard. It is on the first screen after you sign in.

  3. 3

    Run the curl above with any company URL. The public company record comes back as JSON.

PRICING

How much does the company API cost?

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.

PackCreditsYou pay
Free tier3,000 a month$0, no card needed
25,000 calls25,000$49 ($1.96 per 1,000)
100,000 calls100,000$149 ($1.49 per 1,000)
500,000 calls500,000$549 ($1.10 per 1,000)
2.5 million calls2,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.

WHO IT'S FOR

Who uses the company API?

Related: LinkedIn Company Scraper · LinkedIn API · Proxycurl alternative · Bright Data LinkedIn alternative

BEFORE YOU ASK

Common questions

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.

WORKS WITH YOUR STACK

Point it at a company and 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
No credit card required