# LinkedIn Company Scraper: Employee Count & Headcount Growth (`s_actors/linkedin-company-scraper`) Actor

Scrape LinkedIn company pages without login or cookies: exact employee count, headcount growth between runs, size, industry, website, HQ and every office, founded, followers, similar companies (lookalikes), recent posts. By LinkedIn URL, company name, website domain or ID.

- **URL**: https://apify.com/s_actors/linkedin-company-scraper.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** Lead generation, Social media, AI
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### LinkedIn Company Scraper: Employee Count, Headcount Growth & Company Data

**Scrape LinkedIn company pages without login or cookies**: the **exact employee count** on LinkedIn, company size, industry, website, headquarters and **every office address**, founded year, company type, specialties, followers, similar companies and recent posts. Give it any mix of **LinkedIn company URLs, company names, website domains** (`openai.com`) or LinkedIn IDs: the Actor finds the right page.

Every run saves each company's employee count and followers, so the next run shows **headcount growth**: how many employees a company gained or lost since your last check, in numbers and percent. Schedule it weekly or monthly and you have a **LinkedIn headcount tracker** for your accounts, competitors or portfolio.

Use cases: enrich company lists for lead generation and CRM, find the LinkedIn page of a website, track hiring and layoffs through headcount, build lookalike prospect lists, research markets and competitors. A **LinkedIn company data API** with clean JSON, CSV or Excel.

#### What makes it different

| | |
| --- | --- |
| 📈 **Headcount growth between runs** | `previousEmployeeCount`, `employeeCountChange`, `employeeGrowthPct`, `followersChange` and a `headcountHistory` of up to 60 checks per company: nobody else keeps it |
| 🔔 **Headcount change alerts** | *Only report headcount changes* returns just the companies whose employee count moved since the last check; unchanged ones are free |
| 🌐 **Website → LinkedIn page** | Put a domain (`openai.com`): the Actor reads the company's own site for its LinkedIn link, or matches the domain against LinkedIn pages. A LinkedIn company URL finder in the same run |
| 🧲 **Lookalike companies** | *Also scrape similar companies* adds the ~10 companies LinkedIn shows as "Similar pages" for each of yours, with full data and a `similarTo` column |
| 🔢 **Exact employee count, not just a range** | `employeeCount` 16 609 next to `companySize` "5,001-10,000 employees" (LinkedIn's own range is often out of date) |
| 🏢 **Every office** | All office addresses of the company page, not only the headquarters |
| 🔒 **No account, no cookies** | Public LinkedIn pages only; your LinkedIn account is never used or at risk |

#### Example

Input: `https://www.linkedin.com/company/stripe/`, `Notion`, `openai.com`, `1053`. Real run, 10 Oct 2026:

| Company | Found by | Employees | Company size | Industry | HQ | Followers |
| --- | --- | --- | --- | --- | --- | --- |
| Stripe | link | 16 609 | 5,001-10,000 | Technology, Information and Internet | South San Francisco, US | 1 759 786 |
| Notion | name | 7 167 | 501-1,000 | Software Development | San Francisco, US | 1 127 594 |
| OpenAI | website domain | 11 252 | 1,001-5,000 | Research Services | San Francisco, US | 11 905 458 |
| Intel | id | 109 693 | 10,001+ | Semiconductor Manufacturing | Santa Clara, US | 4 380 675 |

Notion lists itself as 501-1,000 employees, while 7 167 LinkedIn members work there: the exact count is the better number.

What the *Headcount growth* view looks like on the next scheduled run (illustration):

| Company | Employees | Before | Change | Growth % | Days since |
| --- | --- | --- | --- | --- | --- |
| Stripe | 16 609 | 16 578 | +31 | 0.19 | 7 |
| OpenAI | 11 255 | 11 230 | +25 | 0.22 | 7 |

*Also scrape similar companies* with Stripe as the seed returned Airbnb, Anthropic, Rippling, Atlassian, Revolut, Wise, Databricks, Ramp and others, each with full data.

#### Input

| Field | What it does |
| --- | --- |
| **Companies** | One per line, any mix: `https://www.linkedin.com/company/stripe/` (also showcase pages), a name (`Notion`), a website (`openai.com`) or a LinkedIn ID (`1053`) |
| **Also scrape similar companies** | Adds LinkedIn's "Similar pages" of every company (lookalikes), up to *Max companies* |
| **Max companies** | Stop after this many companies (1-5 000) |
| **Include recent posts** | The latest public posts: date, likes, text, link (the last post date is always included) |
| **Only report headcount changes** | For scheduled runs: only companies whose employee count changed since the last check |

#### Output

| Field | Example |
| --- | --- |
| `name`, `linkedinUrl`, `universalName`, `companyId`, `pageType` | Stripe, https://www.linkedin.com/company/stripe, stripe, 2135371, company |
| `employeeCount`, `companySize`, `companySizeMin`, `companySizeMax` | 16609, 5,001-10,000 employees, 5001, 10000 |
| `previousEmployeeCount`, `employeeCountChange`, `employeeGrowthPct` | 16578, 31, 0.19 (from the second check on) |
| `followers`, `previousFollowers`, `followersChange` | 1759801, 1758800, 1001 |
| `previousCheckAt`, `daysSincePreviousCheck`, `headcountHistory` | 2026-10-03T09:00:00+00:00, 7, `[{date, employeeCount, followers}]` |
| `website`, `websiteDomain`, `industry`, `tagline`, `description` | https://stripe.com, stripe.com, Technology, Information and Internet |
| `companyType`, `foundedYear`, `specialties` | Privately Held, 2010, `["artificial intelligence", "autonomous driving"]` |
| `headquarters`, `hqStreet`, `hqCity`, `hqRegion`, `hqPostalCode`, `hqCountry` | 354 Oyster Point Blvd, South San Francisco, California, 94080, US |
| `locations`, `locationsCount` | `[{address, primary}]`, 14 |
| `similarCompanies`, `affiliatedPages`, `products` | `[{name, linkedinUrl, industry, location}]` |
| `similarTo`, `similarToUrl` | Stripe (rows added by *Also scrape similar companies*) |
| `lastPostAt`, `recentPosts` | 2026-10-06T18:09:36Z, `[{postedAt, likes, text, url}]` |
| `logoUrl`, `jobsUrl` | company logo, the company's LinkedIn jobs search |
| `input`, `matchedBy`, `checkedAt` | Notion, name (`link`, `name`, `website link`, `website domain`, `id`) |

An input that LinkedIn does not know returns a free row with `input` and `error`.

#### Pricing

Pay per event: **$0.001** per run and **$0.00399** per company (**$3.99 per 1 000 companies**). Apify Scale plan: $3.49 per 1 000, Business plan and above: $2.99 per 1 000. Inputs not found and unchanged companies in *Only report headcount changes* mode are free.

| Example | Cost |
| --- | --- |
| 100 companies | ~$0.40 |
| 1 000 companies | ~$4.00 |
| 5 seed companies + similar companies (~55 rows) | ~$0.22 |
| Weekly headcount check of 200 accounts, 30 changed | ~$0.12 per run |

#### FAQ

**How do I find the LinkedIn page of a company from its website?** Put the domain (`stripe.com`) or the website URL into **Companies**. The Actor opens the website, takes its LinkedIn company link, or else matches the domain with the website on LinkedIn pages; `matchedBy` says which.

**What is the employee count?** `employeeCount` is the number of LinkedIn members who list the company as their current employer: the number in "See all 16,609 employees" on the page. `companySize` is the range the company chose itself. For headcount trends the member count is the better signal: it moves when people join or leave.

**How do I track LinkedIn headcount growth?** Run the same list on a schedule (weekly or monthly). Every run saves the employee count; from the second run on each row has the change since the previous check, and `headcountHistory` keeps up to 60 checks. Turn on **Only report headcount changes** to get only the companies that grew or shrank.

**Can I search companies by name?** Yes. A name uses LinkedIn's own company suggestions and takes the company with the same name (or LinkedIn's first suggestion). For an exact result, use the LinkedIn URL.

**Can it get the list of employees or their emails?** No. Employee lists need a LinkedIn login, so this Actor does not offer them. For emails of local businesses see [Google Maps Email Extractor](https://apify.com/s_actors/google-maps-email-extractor).

**Do I need a LinkedIn account or cookies?** No. Only public company pages are read, without login.

#### Tips

- LinkedIn URLs are the fastest and most exact input; names and websites take 1-3 extra requests to find the page.
- For a lookalike list, put 3-10 of your best customers as seeds and turn on *Also scrape similar companies*.
- The headcount history is kept for your account: any run with the same company, scheduled or manual, adds a point (one per day).

#### Limits

- Funding rounds and investor data are not on LinkedIn's public company page, so they are not included.
- A company found only by its numeric LinkedIn ID needs open jobs on LinkedIn (LinkedIn opens ID links only after login); use the URL or the name otherwise.
- School pages (linkedin.com/school/...) are not supported.
- `employeeCount` is missing on showcase pages; LinkedIn does not show it there.
- LinkedIn's member count moves by a few people from day to day even without hiring; look at the trend over weeks.

#### Ready-made tasks

| Task | What it does |
| --- | --- |
| [LinkedIn Headcount Tracker: Employee Count Growth by Company](https://apify.com/s_actors/linkedin-company-scraper/examples/linkedin-headcount-growth-tracker) | Employee count of a company list now and at the previous check, for scheduled growth tracking |

#### Related

- [LinkedIn Jobs Scraper](https://apify.com/s_actors/linkedin-jobs-scraper)
- [Google Maps Email Extractor](https://apify.com/s_actors/google-maps-email-extractor)
- [Google Sheets Import & Export](https://apify.com/s_actors/google-sheets-import-export)

#### For AI agents and API

```json
{
    "companies": ["https://www.linkedin.com/company/stripe/", "Notion", "openai.com", "1053"],
    "scrapeSimilarCompanies": false,
    "maxCompanies": 100,
    "includePosts": false,
    "onlyChanges": false
}
```

Each row is one company with `employeeCount`, `employeeCountChange` (from the second check on), `companySize`, `industry`, `website`, `headquarters` and `linkedinUrl`; inputs not found have `error`.

# Actor input Schema

## `companies` (type: `array`):

One per line, any mix: a LinkedIn company link (linkedin.com/company/<name>, also showcase pages), a company name ("Notion"), the company website ("openai.com": the Actor finds its LinkedIn page) or a LinkedIn company id ("1053").

## `scrapeSimilarCompanies` (type: `boolean`):

Adds the companies LinkedIn shows as "Similar pages" for each of your companies (about 10 each), with full data and a "similarTo" column. Turns a few seed companies into a lookalike prospect list. Limited by "Max companies".

## `maxCompanies` (type: `integer`):

Stop after this many companies (your list plus similar companies). Controls the cost.

## `includePosts` (type: `boolean`):

Adds the company's latest public posts (about 7-10: date, likes, text, link). The date of the last post is always included.

## `onlyChanges` (type: `boolean`):

For scheduled runs: return only companies whose employee count changed since the last check (and companies checked for the first time). Unchanged companies are free.

## `maxConcurrency` (type: `integer`):

How many companies are loaded at the same time.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/stripe/",
    "Notion",
    "openai.com"
  ],
  "scrapeSimilarCompanies": false,
  "maxCompanies": 100,
  "includePosts": true,
  "onlyChanges": false,
  "maxConcurrency": 8
}
```

# Actor output Schema

## `overview` (type: `string`):

One row per company: employees, size, industry, website, HQ, followers.

## `growth` (type: `string`):

Employee count and followers now and at the previous check.

## `details` (type: `string`):

Every field: description, specialties, offices, IDs, last post, lookalikes.

## `all` (type: `string`):

Every field of every row.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companies": [
        "https://www.linkedin.com/company/stripe/",
        "Notion",
        "openai.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/linkedin-company-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "companies": [
        "https://www.linkedin.com/company/stripe/",
        "Notion",
        "openai.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("s_actors/linkedin-company-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companies": [
    "https://www.linkedin.com/company/stripe/",
    "Notion",
    "openai.com"
  ]
}' |
apify call s_actors/linkedin-company-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,s_actors/linkedin-company-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oPLXaX5ebdx3g7T4C/builds/64VTFWyukARfpTIMB/openapi.json
