LinkedIn Company Scraper API
Our LinkedIn company scraper turns any company vanity slug into structured JSON: follower count, employee count, industry, company size, headquarters, external website, full description, specialties, and logo, from a single public /company/ page.
Why it is hard
The public company page is a heavy render (Microsoft's is around 475KB) that splits its data across an embedded Organization JSON blob and hand-written About-us HTML, so a naive scrape misses half the fields. Follower count only appears in the meta description, and employee count only in an embedded literal, which is why a single selector never gets the full picture.
Quickstart
curl "https://api.linkedinscraperapi.com/api/v1/linkedin/company?company=microsoft&api_key=$API_KEY" import requests
BASE = "https://api.linkedinscraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass the company vanity slug from /company/{slug}/.
data = requests.get(
f"{BASE}/api/v1/linkedin/company",
params={"company": "microsoft", "api_key": API_KEY},
timeout=30,
).json()
print(data["name"], "-", data["industry"])
print(f"{data['followers']:,} followers | {data['employee_count']:,} employees")
print("HQ:", data["headquarters"], "| Site:", data["website"]) Params
| Parameter | Required | Default | Notes |
|---|---|---|---|
company | required | - | The company vanity slug from /company/{company}/, e.g. microsoft. A leading @ is stripped automatically. |
api_key | required | - | Your API key, passed as a query parameter. Get one free at signup. |
Response
{
"id": "microsoft",
"name": "Microsoft",
"url": "https://www.linkedin.com/company/microsoft",
"followers": 28506749,
"employee_count": 233541,
"industry": "Software Development",
"company_size": "10,001+ employees",
"headquarters": "Redmond, Washington",
"website": "https://news.microsoft.com/",
"description": "Every company has a mission. What's ours? To empower every person and every organization to achieve more...",
"founded": null,
"specialties": "Business Software, Developer Tools, Cloud Computing, Quantum Computing, AI, Artificial Intelligence, Machine Learning, Gaming, and IT Professional",
"logo": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_200_200/B56ZYQ0mrGGoAM-/0/1744038948046/microsoft_logo?e=2147483647&v=beta&t=ts9MGrTk7Lz3R1bmAfzCL8euuuuPWPCoXfdiLA2_IzM"
} | Field | Type | Description |
|---|---|---|
id | string | The company vanity slug, the stable identifier from the /company/{slug}/ URL. |
name | string | The company's display name. |
url | string | The canonical /company/ page URL. |
followers | integer | Follower count parsed from the page, e.g. 28506749. |
employee_count | integer | Number of employees on LinkedIn, from the embedded numberOfEmployees value. |
industry | string | The company's industry, e.g. "Software Development". |
company_size | string | The size band from the About section, e.g. "10,001+ employees". |
headquarters | string | The headquarters location, e.g. "Redmond, Washington". |
Use it for
Account research for sales
Firmographic enrichment
Competitor tracking
Market and TAM mapping
Under the hood
- One slug, one object Pass the company slug and get a single normalized company object back, no page tree to walk.
- JSON and HTML merged We combine the embedded Organization JSON with server-HTML About fields, so followers and employee count that live in different parts of the page both come through.
- Residential-first routing We lead with residential proxies and fall back through datacenter and free tiers, because LinkedIn walls datacenter egress on company pages more often.
- External website resolved We pick the first non-LinkedIn URL from the Organization data, so website is the company's real homepage rather than a LinkedIn link.
How it compares
| Our API | DIY (requests / headless) | Official LinkedIn API | |
|---|---|---|---|
| Input by slug | Yes, company vanity slug | Manual fetch and parse | Organization lookups are partner-gated |
| Follower and employee counts | Both parsed and merged | Live in different page sections | Only via approved Marketing/Pages access |
| Setup | API key only | Residential proxies, headless browser, parsers | Partner Program approval plus OAuth |
| About fields | Industry, size, HQ, specialties | Extra selectors, break on layout change | Limited to authorized fields |
| Anti-bot and proxies | Residential-first, built in | You build and maintain it | Not applicable |
| External website | Resolved from Organization data | You filter LinkedIn links yourself | Sometimes present in Pages data |
| Behavior when walled | Reports the block honestly | Silent partial or empty record | Returns only authorized fields |
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
What is a LinkedIn company scraper?
A LinkedIn company scraper is a tool that reads a company's public page and returns it in a structured format. Our LinkedIn company scraper API takes a company vanity slug and returns the name, follower count, employee count, industry, company size, headquarters, external website, description, specialties, and logo as JSON from a single request.
How do I scrape a LinkedIn company page?
Send one GET request to our linkedin/company endpoint with the company slug from /company/{slug}/ and your API key. We route through residential proxies, handle anti-bot checks, and merge the embedded Organization JSON with the About-us HTML, so you get one clean company object back without maintaining selectors against LinkedIn's heavy company render.
What do I pass as the company parameter?
Pass the vanity slug that appears in the company URL, for example microsoft from https://www.linkedin.com/company/microsoft/. A leading @ is stripped automatically. The endpoint builds the canonical /company/{slug}/ URL for you.
Where do the follower and employee counts come from?
LinkedIn puts them in different places. The follower count is parsed from the page's meta description ("{Company} | {N} followers on LinkedIn"), and the employee count comes from an embedded numberOfEmployees value in the page data. Our endpoint reads both and returns them as integers, so you do not have to stitch the two sources together yourself.
Why is founded sometimes null?
The founded year only appears when a company fills in that field in its About section. When the page does not render it, we return founded as null rather than guessing. The same honest-null rule applies to any About field a given company leaves blank.
Do I need a LinkedIn login or the official API?
No. You only need a linkedinscraperapi key, passed as the api_key query parameter. There is no LinkedIn login, no cookies, and no Partner Program approval. We read the public logged-out company page. The free tier includes 1,000 requests per month.