100 free credits on signup · no card required

LinkedIn Company API

One URL in. Clean JSON out.

Give this endpoint a LinkedIn company URL or the slug from it, and it returns the company's public profile as JSON: follower count, headcount, industry, website, headquarters, founding year. 10 credits per company, one company per call. It reads the same page a logged-out visitor sees, so there is no OAuth dance and no LinkedIn partner application to fill in.

Credits 10 / company
Input ?url=
Cache 12h
GET · BEARER
Request composing…
Cached 12 hours
cheap to re-poll
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<div class="feed-shared-update-v2 artdeco-card" data-urn="urn:li:activity:7181111111111111111"><div class="update-components-text relative"><span dir="ltr">We just cut p95 latency in half by moving the cache closer to the edge.</span></div><div class="social-details-social-counts"><li class="social-details-social-counts__item"><span aria-label="842 reactions">842</span></li><li class="social-details-social-counts__comments">63 comments</li><li>41 reposts</li></div><time class="update-components-actor__sub-description">4d</time><code style="display:none">{"data":{"*elements":["urn:li:fsd_update:(urn:li:activity...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 11 typed fields
{
"data": {
"platform": "linkedin",
"handle": "example-co",
"name": "Example Co",
"industry": "Software Development",
"employees_range": "201-500",
"headquarters": "Austin, Texas",
"metrics": {
"followers": 96210
}
},
"request_id": "req_01JZX4M8Q2TE9W"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 One flat object per company

One flat object per company. Two halves, roughly: firmographics that barely change (industry, website, founding year, headquarters city) and figures that drift (follower count, employee count). Nothing is nested, so you can write the whole thing into a row without flattening logic.

02 Two headcount numbers, both estimates

Employee count deserves a note. LinkedIn shows two different numbers for headcount — a precise-looking count and a bucketed band like 51-200 — and we return both, as `employees` and `employee_range`. The count is derived from profiles that list the company as their employer, not from a payroll file. It undercounts firms in regions where LinkedIn adoption is low and overcounts ones where ex-employees never updated their profile.

03 Thinner than the page looks

The response is thinner than the company page looks in a browser. There are no specialties, no locations list, no funding history, no logo URL, and no posts. If a key is not in the table below, this endpoint does not return it.

Field explorer Pick a key to see its type and the caveats.
number|null Nullable Per item
employees

Headcount as LinkedIn counts it — profiles that list this company as employer. An estimate, not a payroll number.

{
"handle": "example-co",
"name": "Example Co",
"followers": 96210,
"industry": "Software Development",
"employees": 0,
"employee_range": "…",
"website": "…",
"description": "…",
"headquarters": "Austin, Texas",
"founded": 0,
"url": "…"
}
Good fit

Reach for this when

  • Enriching inbound leads or a CRM: you have a company LinkedIn URL from a form field and want industry, size band and website attached to the record before it reaches a rep.
  • Building an ICP list — pull a few hundred companies, then filter on employee_range and industry to see which segment your existing customers actually cluster in.
  • Tracking follower growth for a competitor set. Call each company weekly, store the count with a timestamp, and you have a share-of-audience chart nobody has to update by hand.
  • Deduplicating a messy account table. The `handle` is a stable identifier where company names are not, so it resolves "Acme Inc", "Acme, Inc." and "ACME" to one row.
  • Backfilling founding year and headquarters onto a dataset assembled from somewhere else that only had names.
Different job?

There's an endpoint for that

  • You want what the company has been posting. That is the LinkedIn Company Posts API, which returns a list of that page's recent posts for the same URL.
  • You want a person rather than an organisation — the LinkedIn Profile API handles individual member profiles.
  • You do not have the company URL yet and need to find companies by keyword. Start with the LinkedIn People Search API or the LinkedIn Search API, depending on whether you are searching for people or post content.
  • You need verified financials, registration numbers or funding rounds. None of that is on a LinkedIn company page, so none of it is in this response.

Pricing

Start free, pay for what comes back

One company lookup is 10 credits — about 5¢ on the monthly plan, so $5 covers roughly 100 companies. Cached repeats bill the same, and failed calls are never charged.

Estimate your bill
$29/ month
30 companys/day × 10 credits × 365 days = 109,500 credits/yr, or $348/yr on the annual plan plus 98 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 109,500
Plan Annual $54/yr
Per company

Estimate only, on a full-year basis. 10 credits per returned company. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.

Engineering notes

Docs you can build on

We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.

Failed calls are never charged Public data only, no login session Built for parallel traffic

Pass the full https://www.linkedin.com/company/acme-robotics/ URL, or just acme-robotics. Both resolve to the same call and the same 10 credits.

What does not work is a numeric company ID from LinkedIn's ad tooling, or a showcase-page URL under a different path. If you only have a name, resolve it to a slug first — guessing slugs from company names fails often enough to be a bad strategy.

`employees` looks precise and is not. It reflects how many LinkedIn members currently list the company as their employer. Firms in the US and Western Europe read high relative to their real headcount; firms in markets with low LinkedIn penetration read low.

If you are segmenting, use `employee_range`. It is coarser, which is the point — it does not shift by three people overnight and break your bucket boundaries.

Every field except the object itself is nullable. Small companies, regional subsidiaries and pages set up years ago and abandoned routinely have no About text, no website, no founding year. A response with a name, a handle and four nulls is a normal response, not a failure.

A page that does not exist, or has been taken down, returns an error rather than an object of nulls — and errored calls are not charged.

Company pages change slowly, so responses are cached with a long window and repeat calls for the same company come back in milliseconds with x-cache: hit. A hit costs the same 10 credits.

That caching is a feature when you are enriching a list where the same parent company appears fifty times. It is a problem if you are specifically watching follower counts move — add fresh=true on those calls to force a live fetch.

We read the logged-out company page. Anything LinkedIn shows only to signed-in members, only to page admins, or only inside Sales Navigator is out of reach and always will be. There is no login, no session, no member data beyond what LinkedIn itself publishes to anonymous visitors.

Questions

Frequently asked

Send a GET to /v1/linkedin/company with the company URL or slug and your API key. LinkedIn's official Marketing and Pages APIs only reach organisations you already administer, and access requires a partner application, so they cannot enrich a list of third-party companies. This endpoint reads the public company page instead and returns the same firmographics as JSON.

It is an estimate. LinkedIn derives headcount from member profiles that name the company as their current employer, so it drifts from real headcount in both directions — high where LinkedIn use is near-universal, low in markets where it is not, and high again where former employees never updated their profiles. For segmentation, use employee_range rather than the raw number.

10 credits, covering one company. Credits are $0.005 each on monthly billing and $0.0045 on annual, so a lookup runs about 5 cents, and $50 enriches roughly a thousand companies. Cached responses are billed the same as fresh ones. Calls that fail — dead page, bad slug — are not charged at all.

No. One company per call. Run them concurrently instead; the calls are independent and the API handles parallel traffic fine. For a large enrichment job, dedupe your input list on the company slug first — repeated companies each cost full price even when the second one is served from cache.

No, it returns the profile only. Follower count, headcount, industry, website, description, headquarters, founding year. For the content a company page publishes — post text, engagement counts, timestamps — call the LinkedIn Company Posts API with the same URL. They are separate endpoints because most enrichment jobs need one and never the other.

No. This endpoint returns organisation-level data only, and email addresses are not on a LinkedIn company page in the first place, so they are not in the response. If you need individual public member profiles, that is the LinkedIn Profile API. We read public pages logged out and never access anything behind a login.

It reflects what the company page showed when the page was last fetched, and this endpoint caches for a long window because company data changes slowly. For a one-off enrichment that is fine. If you are charting follower growth week over week, pass fresh=true so each sample is a live read rather than a repeat of the cached one.

Next

Pairs well with

Full LinkedIn API reference →
/v1/linkedin/company-posts
LinkedIn Company Posts API Latest posts from a LinkedIn company page with per-post metrics. 5 cr / post
/v1/linkedin/profile
LinkedIn Profile API Public profile data for a LinkedIn member: headline, positions, education. 10 cr / profile
/v1/linkedin/people-search
LinkedIn People Search API Search public LinkedIn profiles by keyword, title, company or location. 5 cr / profile
/v1/facebook/page-stats
Facebook Page Stats API Followers, likes and metadata for a Facebook page. 10 cr / page

More LinkedIn endpoints

/v1/linkedin/stats Reactions, comments and reposts for a LinkedIn post. 5 credits / post /v1/linkedin/comments Paginated comments on a LinkedIn post; charged per comment returned. 5 credits / comment /v1/linkedin/profile Public profile data for a LinkedIn member: headline, positions, education. 10 credits / profile /v1/linkedin/company-posts Latest posts from a LinkedIn company page with per-post metrics. 5 credits / post /v1/linkedin/search Keyword search over public LinkedIn posts. 5 credits / result /v1/linkedin/people-search Search public LinkedIn profiles by keyword, title, company or location. 5 credits / profile

Try the LinkedIn Company endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/linkedin/company
Get your free API key