LinkedIn hosts public company pages for over 67 million organisations worldwide, from single-person consultancies to Fortune 100 enterprises. For B2B sales teams, venture investors, recruiters, and market researchers, those pages are a structured, continuously updated source of company intelligence: name, tagline, description, employee count, follower count, industry classification, headquarters location, founded year, website, and stated specialties. LinkedIn does not offer a public API for bulk extraction of company data outside expensive marketing-suite tiers. Collecting LinkedIn company data programmatically means working around the public surface area.
This post explains why LinkedIn company data matters, what makes it technically difficult to collect reliably, and how to extract clean structured data without writing or maintaining a scraper.
LinkedIn aggressively differentiates between authenticated members and anonymous visitors. Anonymous traffic to a public company page renders a stripped-down version with a subset of data exposed in meta tags and structured data, and is rate-limited heavily based on IP signals. Authenticated traffic sees the full page but is bound by LinkedIn’s terms of service for member accounts. A reliable collection approach for public company data needs to operate within the anonymous-visitor surface and parse what is actually exposed there — not what is visible after login.
Anti-bot detection and IP reputation: LinkedIn applies multi-layer detection to anonymous traffic, including IP reputation scoring, request-pattern analysis, and challenge-page redirects. Requests originating from datacenter IP ranges or arriving in non-human timing patterns are frequently redirected to authentication walls before any company data renders. Reliable collection at any meaningful scale requires realistic browser-level signals, appropriate request pacing across companies, and network-level diversity. This infrastructure layer is the hard part of LinkedIn data collection — it sits entirely outside the data parsing logic.
Field availability varies significantly by company type and size. A large enterprise like Microsoft or Stripe surfaces a complete dataset on the public page: employee count, follower count, industry, headquarters, founded year, full specialties list, and rich description. A small consultancy or recently created company page might surface only name, tagline, and industry. Production pipelines must treat all fields except company identifier and name as optional and handle their absence without error.
The structure of the company URL slug is not always predictable from the company name. LinkedIn slugs are user-chosen at page creation and may include numeric suffixes (e.g. acme-inc versus acme-corporation-123) or differ from the canonical company name in ways that defeat naive name-to-slug guessing. Production workflows either source slugs from a verified reference list or accept a name and run a search-then-fetch step.
We maintain a LinkedIn Company Scraper on Apify that handles the anonymous-visitor surface, parses meta tags and structured data, and returns clean structured company records. You supply a list of company slugs or full LinkedIn URLs; it returns normalised records ready for analysis or CRM integration.
Scrape a small batch of companies by slug:
{
"companies": ["microsoft", "stripe", "shopify"],
"max_results": 10
}
Scrape companies by full LinkedIn URL (useful when you have the URLs already from a CRM export):
{
"companies": [
"https://linkedin.com/company/microsoft",
"https://linkedin.com/company/stripe"
],
"max_results": 50
}
{
"company_id": "microsoft",
"name": "Microsoft",
"tagline": "Every company has a mission. What's ours? To empower every person and every organisation on the planet to achieve more.",
"description": "Microsoft is a technology company whose mission is to empower every person and every organisation on the planet to achieve more...",
"industry": "Software Development",
"employee_count": "230073",
"follower_count": "28121541",
"headquarters": "Redmond, Washington, US",
"founded_year": 1975,
"website": "https://www.microsoft.com",
"specialties": ["Cloud Computing", "Productivity", "AI", "Developer Tools"],
"logo_url": "https://media.licdn.com/dms/image/...",
"company_url": "https://www.linkedin.com/company/microsoft",
"scraped_at": "2026-05-01T20:09:24.000Z"
}
| Field | Type | Description |
|---|---|---|
company_id | string | LinkedIn company slug (URL-safe identifier) |
name | string | Company name as listed on LinkedIn |
tagline | string / null | Short company tagline from page meta |
description | string / null | Full company description from structured data |
industry | string / null | LinkedIn industry classification |
employee_count | string / null | Reported employee count or band |
follower_count | string / null | LinkedIn follower count |
headquarters | string / null | City, region, country of HQ |
founded_year | integer / null | Year company was founded |
website | string / null | Company-stated official website |
specialties | array / null | Self-reported areas of expertise |
logo_url | string / null | Company logo on LinkedIn CDN |
company_url | string | Canonical LinkedIn company page URL |
scraped_at | string | ISO 8601 collection timestamp |
Output is available as JSON, CSV, or XLSX. JSON integrates directly into CRM enrichment pipelines and BI tools. CSV loads into Excel or pandas for cohort analysis across an account list. Apify’s scheduling lets you run weekly or monthly enrichment refreshes across a watchlist without managing any infrastructure.
For complete go-to-market intelligence, combine company-level data with people-level and intent data. We maintain a LinkedIn Profile Scraper with a compatible output structure for adding key contacts to enriched company records, and a LinkedIn Jobs Scraper for surfacing active hiring across a target account list as a real-time growth and intent signal.
The actor uses Pay Per Result pricing at $0.008 per company (effective May 17, 2026). The first 5 results per run are free, so you can test the actor and verify output quality before committing to a full enrichment job.
| Volume | Cost |
|---|---|
| 100 companies (small enrichment batch) | ~$0.76 |
| 500 companies (mid-size account list) | ~$3.96 |
| Weekly 200-company watchlist refresh | ~$6.40/month |
Try the LinkedIn Company Scraper free on Apify Store →
Apify’s free tier covers initial testing — the first 5 results per run cost nothing. Sign up here if you do not have an account. The actor connects to Apify’s scheduling, webhook, and dataset APIs so you can run automated company enrichment pipelines without building or maintaining scraping infrastructure yourself.