# LinkedIn Headcount - Who Is Growing, Who Is Shrinking (`reapx/linkedin-company-headcount-monitor`) Actor

Track how fast a company is really growing on LinkedIn - headcount, open roles and follower count over time, so you see the direction before the press release does.

- **URL**: https://apify.com/reapx/linkedin-company-headcount-monitor.md
- **Developed by:** [Tarek Etman](https://apify.com/reapx) (community)
- **Categories:** Business, Jobs, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.16 / 1,000 company headcount checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

![reapX - the record of what changed](https://reapx.dev/reapx.gif)

## LinkedIn Headcount Monitor - Growth & Hiring Signals

> *"They claim they are scaling. Are they hiring, or just posting jobs?"*

An open job posting costs nothing to advertise. Headcount is the number that cannot be faked. B2B sales teams, recruiters, and equity analysts need to track headcount changes and hiring speed across companies over time to spot true expansion signals.

Track headcount trends and open role ratios over time to separate real expansion from a busy careers page.

### ⬇️ Input

Input takes a list of LinkedIn company slugs (for example `google` or `microsoft`). All input parameters carry working prefilled defaults so runs execute immediately without required inputs.

```json
{
  "companies": [
    "google",
    "microsoft"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxItems": 100
}
```

#### Input Field Specification

| Field | Type | Description | Default |
|---|---|---|---|
| `companies` | Array | List of LinkedIn company URL slugs to monitor. | `["google"]` |
| `proxyConfiguration` | Object | Proxy settings to rotate IPs per request and prevent rate limits. | `{ "useApifyProxy": true }` |
| `maxItems` | Integer | Maximum number of company profiles to fetch in a single run. | `100` |

### ⬆️ Output

Outputs structured records directly to the default dataset. Each row describes a single company indexed by its stable per-row identifier (`companySlug`).

#### Output Field Schema

| Field Name | Type | Description |
|---|---|---|
| `companySlug` | String | LinkedIn company URL slug. Stable per-row identifier. |
| `companyName` | String | Official company name as displayed on LinkedIn. |
| `companyUrl` | String | Canonical LinkedIn company page URL. |
| `employeeCount` | Integer | Total employee headcount parsed from profile. |
| `employeeCountText` | String | Human-readable employee count text (e.g. "317,984 employees"). |
| `openJobsCount` | Integer | Null | Active job openings count when available. |
| `headcountTrend` | Number | Null | Short-term headcount growth trend percentage. |
| `headcountGrowth12m` | Number | Null | Trailing 12-month headcount growth rate. |
| `hiringRate` | Number | Null | Monthly hiring rate metric. |
| `netHeadcountChange` | Integer | Null | Net employee count change between observations. |
| `changedFields` | Array | Null | Attributes modified since previous observation. |
| `reason` | String | Null | Explanation note when computed historical metrics return null on first observation. |
| `scrapedAt` | String | ISO 8601 timestamp of data collection. |

#### Sample Output Record

```json
{
  "companySlug": "google",
  "companyName": "Google",
  "companyUrl": "https://www.linkedin.com/company/google/",
  "employeeCount": 317984,
  "employeeCountText": "317,984 employees",
  "openJobsCount": null,
  "headcountTrend": null,
  "headcountGrowth12m": null,
  "hiringRate": null,
  "netHeadcountChange": null,
  "changedFields": null,
  "reason": "First observation; headcount trends and net changes require multi-run history accrued over time.",
  "scrapedAt": "2026-08-05T16:36:34.000Z"
}
```

### How it works

1. **Company Extraction**: Fetches public LinkedIn company pages using HTTP requests.
2. **Headcount Parsing**: Extracts employee count numbers, official company titles, and canonical URL handles.
3. **Time-Series Tracking**: Accrues records over time to compute headcount growth rates, hiring rate, and net employee changes across consecutive runs.
4. **Resilient Rate Budgeting**: Works with proxy rotation to bypass rate limits and return unblocked data.

### ❓ FAQ

##### How is company headcount measured?

Employee count is extracted directly from verified LinkedIn company profile headers.

##### Why do headcountGrowth12m and netHeadcountChange return null on first run?

Trend and growth calculations require comparing observations across multiple runs over time. On the first run, the actor returns `null` with a clear `reason` field rather than fabricating unobserved past figures.

##### Does this actor require a LinkedIn login or session cookie?

No. The actor operates without login credentials or cookies.

### 💬 Your feedback

Need custom headcount reporting, specific sector filters, or dataset integrations? Contact us at reapxdev@proton.me or visit reapx.dev.

***

Unofficial - not affiliated with LinkedIn. Collects only data visible without logging in. reapx · reapx.dev · reapxdev@proton.me

# Actor input Schema

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

LinkedIn company slugs, one per line - the part of the company URL after <code>/company/</code>. Every run adds another reading to the trend.

## `maxItems` (type: `integer`):

How many of the companies on your list we work through in one run. Raise it when you are tracking a full portfolio.

## `proxyConfiguration` (type: `object`):

How the run reaches the platform. The default is already the route that works for this source, so leave it alone unless you have a reason to change it.

## Actor input object example

```json
{
  "companies": [
    "google"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `items` (type: `string`):

No description

# 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": [
        "google"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("reapx/linkedin-company-headcount-monitor").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": ["google"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "google"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call reapx/linkedin-company-headcount-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=reapx/linkedin-company-headcount-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/f9AVg4gdNWIuj67DB/builds/47O5DOOhEe7ie7WuI/openapi.json
