LinkedIn Company Scraper — Exact Employee Count
Pricing
from $1.99 / 1,000 company-records
LinkedIn Company Scraper — Exact Employee Count
Scrape LinkedIn public company pages: exact employee count, company type, size range, specialties, tagline, industry, HQ, website, founded year, funding rounds + investors, and featured employees. No login required. parse_confidence on every row.
Pricing
from $1.99 / 1,000 company-records
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
LinkedIn Company Scraper — Exact Employee Count & Firmographics
Scrape LinkedIn public company pages for exact employee counts (not buckets), company type, size range, specialties, tagline, industry, full headquarters address, company description, website, founded year, funding rounds + investors, logo, and featured employee IDs. Optionally enrich featured employees with full person profiles.
No login required. No cookies. Scrapes only public data.
What it does
For each LinkedIn company slug or URL you provide, the actor:
- Fetches the public company home page (
/company/{slug}/) — the only LinkedIn surface that is not auth-walled. - Parses the
Organizationnode from<script type="application/ld+json">for core firmographics (exact employee count, industry, HQ, website, founded year). - Reads the public about-us overview card for company type, size range, specialties, tagline, and funding history (rounds, last amount/date, investors, Crunchbase link).
- Extracts featured employee public-profile IDs from
trk=org-employeeslinks. - Optionally enriches featured employees via a managed proxy (the
enrichEmployeesmode). - Outputs one flat row per company, charged as a single PPE event.
Auth-walled surfaces (NOT scraped)
/company/{slug}/about/→ redirects to login/company/{slug}/people/→ redirects to login
Only the home page is public. This is documented to set accurate expectations.
Edge: EXACT employee count
Every other LinkedIn company scraper returns employee buckets ("1001–5000") from the UI text. This actor reads numberOfEmployees.value from the structured Organization ld+json, which LinkedIn embeds with the exact integer (e.g. 231732).
The output field employee_count_source is labeled "ldjson_exact" so buyers know they are getting the real figure, not a range.
Competitors tested return the bucket string, wrong member counts, or null.
Input
| Field | Type | Description |
|---|---|---|
companies | array | Slugs ("microsoft"), full /company/ URLs, or numeric IDs. |
maxCompanies | integer | Max companies to scrape. 0 = all. |
enrichEmployees | boolean | Enrich 1–4 featured employees with full profile data (default: false). |
proxyConfiguration | object | Proxy settings. Defaults to Apify Residential (buyer-paid). |
Example input:
{"companies": ["microsoft", "stripe", "openai", "https://www.linkedin.com/company/anthropic/"],"enrichEmployees": false}
Output schema (one row per company)
| Field | Type | Notes |
|---|---|---|
company_name | string | From ld+json |
slug | string | Normalized slug |
linkedin_url | string | Full company URL |
tagline | string|null | Short company tagline (about-us card / og:description) |
description | string | Company description |
industry | string|null | Opportunistic HTML extraction |
company_type | string|null | e.g. "Public Company", "Privately Held" (about-us card) |
company_size | string|null | Employee range, e.g. "5,001-10,000 employees" (about-us card) |
employee_count | integer|null | Exact count from ld+json (our edge) |
employee_count_source | string|null | "ldjson_exact" or null |
specialties | array | Company specialties / focus areas (about-us card) |
website | string|null | Company website (decoded from the LinkedIn redirect) |
hq_address | string|null | Flat formatted HQ address |
hq | object | Structured: street, city, region, postal, country |
logo_url | string|null | LinkedIn CDN logo URL |
follower_count | integer|null | Extracted from page HTML |
funding | object|null | Funding history: total rounds, last round type/date/amount, investors, Crunchbase URL |
featured_employee_ids | array | Public profile IDs (1–4 per company) |
featured_employees | array | Enriched person dicts (when enrichEmployees=true) |
founded_year | integer|null | Opportunistic HTML extraction |
scraped_at | string | ISO-8601 UTC timestamp |
parse_source | string | "ldjson" or "html_fallback" |
parse_confidence | float | 0.0–1.0 quality signal |
warnings | array | Machine-readable parse warnings |
enrichEmployees mode (hybrid)
When enrichEmployees: true, for each company the actor takes the featured_employee_ids (1–4 employees featured on the company home page) and fetches each profile via a managed proxy.
Each enriched employee includes:
{"full_name": "Reid Hoffman","headline": "Co-Founder, LinkedIn...","location": "United States, US","current_title": "Co-Founder, Board Chair","current_company": "Manas AI","profile_url": "https://www.linkedin.com/in/reidhoffman","photo_url": "https://media.licdn.com/...","followers": 2767834}
Honest limitation: This enriches only the 1–4 publicly-featured employees shown on the company home page — not the full roster. The full /people/ list requires authentication and is not accessible. Billing remains 1 charge per company (employees are embedded in the row, not separate rows).
Proxy infrastructure is handled automatically via your Apify Proxy configuration — no external credentials required.
Proxy note
LinkedIn requires residential IPs — datacenter IPs typically receive HTTP 999 or a login redirect. The actor uses Apify Residential proxy (billed to your Apify account) by default, which provides the residential IP rotation LinkedIn expects. Configure via the proxyConfiguration input.
parse_confidence
Every row includes a parse_confidence float (0.0–1.0). Values below 0.7 indicate structural drift — LinkedIn changed the page layout and the parser may have fallen back to HTML heuristics. Acts as an early warning system; watch it in aggregate across runs.
Pricing
$0.00205 per company record ($2.05 / 1 000 companies). Pay only for the rows you get.
Scraping 1,000 companies costs approximately $2.05 in actor fees. Residential proxy usage is billed by Apify to your own account on top (typically a fraction of a cent per company). This undercuts the niche leader (≈$4 / 1 000 companies) while returning a richer flat row: exact-count integer (vs competitors' bucket strings), company type, size range, specialties, tagline, funding history, a structured hq object, parse_confidence, and optional featured-employee enrichment.
Integrations
Built for sales and market-intelligence teams enriching firmographics with exact employee counts and company details from LinkedIn — the JSON/dataset output drops into the tools you already run, no glue code:
- n8n / Make / Zapier — trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
- Webhooks — fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
- MCP server — expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
- API & SDKs — fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.
See all Apify integrations.
Legal
Scrapes public company pages only — no login, no authentication, no data behind a paywall. LinkedIn company pages are publicly accessible to any web browser.
Not affiliated with, endorsed by, or officially connected to LinkedIn Corporation.
Competitors
| Actor | Stars | Employee count | parse_confidence | Enrich |
|---|---|---|---|---|
| harvestapi/linkedin-company | 4.7★ | Bucket string | No | No |
| This actor | — | Exact integer | Yes | Yes (1–4) |