# Company Headcount Estimator (`mambalabs/company-headcount-estimator`) Actor

Get an employee count band for any company domain, with the source and a confidence score. Reads the LinkedIn company size that Google shows in its results, plus Wikidata and the company site. Never opens linkedin.com. One flat row per domain, batch up to 500, Clay ready.

- **URL**: https://apify.com/mambalabs/company-headcount-estimator.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** Lead generation, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.60 / 1,000 company estimateds

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

## Company Headcount Estimator

Get an employee count band for any company domain, with the source it came from and a confidence score. Enter one domain or a list of up to 500. Each domain returns one flat row: the band (1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, or 10001+), an exact count when a source gives one, where the number came from, and how sure the row is. Rows export to CSV or drop into a Clay table as columns.

### Features

- **LinkedIn company size without opening LinkedIn.** Google prints the company size from a LinkedIn company page in its search result. The actor reads that result on Google and never sends a request to linkedin.com. A result counts only when it prints your domain as the company website, so a company with a similar name is not taken for yours.
- **A waterfall of sources.** LinkedIn company size from Google results first, then the employee count on Wikidata (only on the Wikidata item whose official website is your domain), then the `numberOfEmployees` the homepage declares in its structured data.
- **Confidence you can filter on.** 0.85 for a LinkedIn size matched by website, 0.6 when matched by exact name, 0.8 for a recent Wikidata count, 0.5 for homepage structured data. Two sources that agree lift it; two that disagree lower it and set `sources_agree` false.
- **Context columns.** GitHub public members of the org the homepage links to, and open jobs on the Greenhouse, Lever, or Ashby board it links to. They never set the band.
- **Free repeats.** A domain estimated in the last 7 days comes back from cache at no charge.
- **No key needed.** Add your own free GitHub token only if you want GitHub member counts on large batches.

### Measured accuracy

On 2026-10-21 the actor ran on 33 company domains with a known headcount, from 1 to 70,000 employees. 25 of 33 got a band. 19 of those 25 were in the right band and all 25 were within one band of it. Of the 9 companies with fewer than 50 staff, 6 got a band. The known headcounts are public figures for each company and are approximate, and LinkedIn's company size is what the company itself selects on its page, so it can lag a fast hiring company by a band.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `domain` | string | | One company domain, for example `linear.app`. A URL or an email address also works |
| `company_name` | string | | The name for that one domain. Empty: read from the homepage |
| `domains` | array | | Up to 500 domains, one per line. `Name \| domain.com` gives the name too |
| `sources` | array | all | Any of `linkedin`, `wikidata`, `homepage`, `github`, `jobs` |
| `github_token` | string | | Your own GitHub token (free). Optional |
| `skip_cache` | string | `false` | Read every source again instead of using a row from the last 7 days |
| `max_charge_usd` | string | | Stop before a row would pass this amount |

`skip_cache` is text, as Clay sends it (`"true"` or `"false"`). `domains` and `sources` are JSON arrays; from a Clay table, send one `domain` per row.

### Output

One row per domain, the same columns on every row.

| Field | Example | What it is |
|---|---|---|
| `domain` | `linear.app` | The domain checked |
| `company_name` | `Linear` | Your name, or the homepage name |
| `employee_band` | `51-200` | The band, empty when no source returned a size |
| `employee_band_min`, `employee_band_max` | `51`, `200` | The band edges, for numeric filters |
| `employee_count` | `120` | An exact count, only when Wikidata or the homepage set the band |
| `estimate_source` | `linkedin_search_snippet` | `linkedin_search_snippet`, `wikidata`, or `homepage_structured_data` |
| `confidence` | `0.85` | 0 to 1 |
| `sources_agree` | `true` | Two or more sources within one band of each other |
| `linkedin_band`, `linkedin_match`, `linkedin_followers` | `51-200`, `website`, `90800` | What the Google result shows for the LinkedIn page |
| `wikidata_id`, `wikidata_count`, `wikidata_as_of` | `Q136776342`, `120`, `2026-09-25` | The Wikidata item and its latest count |
| `structured_data_count` | | `numberOfEmployees` on the homepage |
| `github_org`, `github_public_members` | `linear`, `13` | Context only |
| `open_jobs_board`, `open_jobs_count` | `ashby:linear`, `21` | Context only |
| `row_status` | `ok` | `ok`, `no_data`, `invalid_input`, or `error` |
| `billable_events_json` | `{"company-estimated":1}` | What the row was billed as |

The run summary (key-value store record `RUN_SUMMARY`) counts rows by source, rows from cache, and Google pages read.

### Pricing

Pay per event. You pay only these events; the Apify platform and proxy costs of your run, Google result pages included, are paid by Mamba Labs.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Company estimated (`company-estimated`): a row with an employee band | $0.036 | $0.0342 | $0.0324 | $0.0306 |
| Actor start (`apify-actor-start`), one per GB of run memory, so once per run at the default 256 MB | $0.0015 | $0.0015 | $0.0015 | $0.0015 |

Free rows: no data, invalid input, error, and rows from cache. On the Apify free plan the actor stops at 1.50 USD of evaluation a month (about 42 estimated companies); any paid Apify plan removes that cap.

Example: 100 domains with about 75 estimated cost about $2.70.

### Usage examples

#### Apify Console or API

```json
{ "domain": "linear.app" }
```

```json
{ "domains": ["Linear | linear.app", "posthog.com", "https://www.clay.com/"], "sources": ["linkedin", "wikidata", "homepage"] }
```

#### Clay

Add an Apify or HTTP API column, send the company domain from your table as `domain`, and map `employee_band`, `employee_band_min`, `confidence`, and `estimate_source` into columns. Filter on `employee_band_min` for a size cut, and on `confidence` of 0.6 or more for a clean list.

#### MCP

The MCP server `@mambalabsdev/mcp-company-headcount-estimator` exposes this actor as a tool for Claude and other MCP clients.

### Error handling

| Situation | What you get |
|---|---|
| No source returns a size | One free row with `row_status` `no_data` and the sources checked |
| Not a domain | One free row with `row_status` `invalid_input` |
| Google does not answer for a domain | The other sources still run; the row says which were checked |
| Homepage blocks the direct request | It is read again through the Apify proxy |
| Max charge reached | The run stops before the next billable row and says why in the status message |

### Limitations

- The LinkedIn company size is the band the company picked on its LinkedIn page, as Google last indexed it. A company that does not show its LinkedIn page in Google results, or whose page prints no website, gets a name match (0.6) or no LinkedIn size.
- Bands, not exact counts, for most companies. Wikidata and homepage structured data give exact counts for a few, mostly large or public companies, and a Wikidata count can be years old (`wikidata_as_of` says when).
- Small and new companies return `no_data` more often: in the measurement, 6 of 9 companies with fewer than 50 staff got a band, against 19 of 24 larger ones.
- GitHub member counts and open jobs are context. Most staff keep GitHub membership private.
- No request goes to linkedin.com. Google's terms govern automated access to its results; you are responsible for how you use the rows.

### More from Mamba Labs

| Actor | Actor ID |
|---|---|
| [Account Hiring Watch](https://apify.com/mambalabs/account-hiring-watch?fpr=mamba) | `gRAZA5WBi1r6L0gy7` |
| [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor?fpr=mamba) | `anxbRv0lKrpQ1pnua` |
| [Agent to Brokerage Resolver](https://apify.com/mambalabs/agent-brokerage-resolver?fpr=mamba) | `ePRRGLxOGyaVHO4dI` |
| [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector?fpr=mamba) | `EwkHhmqiuJgRoVEbE` |
| [B2B Reddit Conversation Monitor](https://apify.com/mambalabs/b2b-reddit-conversation-monitor?fpr=mamba) | `SoDryzzsjmY3SsiyG` |
| [Bluesky Brand Presence Mapper](https://apify.com/mambalabs/bluesky-brand-presence-mapper?fpr=mamba) | `eLpxzP4IuXznlFVND` |
| [Career Change Signal Engine](https://apify.com/mambalabs/career-change-signal-engine?fpr=mamba) | `vX2Yga1a6wGaXaP14` |
| [Company Change Event Feed](https://apify.com/mambalabs/company-change-event-feed?fpr=mamba) | `oX44rS0fkEJ3rXLWe` |
| [Company Contact Details Extractor](https://apify.com/mambalabs/company-contact-details-extractor?fpr=mamba) | `4mMncKaJykiq94grz` |
| [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder?fpr=mamba) | `jch0HdaZnpbMqlcGS` |
| [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher?fpr=mamba) | `YlUtLWjfPpqykmB8g` |
| [Company Funding Record](https://apify.com/mambalabs/funding-investor-record?fpr=mamba) | `OFS4Mt1gyYNtGfUbE` |
| [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver?fpr=mamba) | `lr8fTRAmZCBZmuwwh` |
| [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper?fpr=mamba) | `4k6CCemkgBDz18m2h` |
| [Contact Classifier](https://apify.com/mambalabs/contact-classifier?fpr=mamba) | `0lGSeYJmniXhGANnO` |
| [Cookie Consent Audit](https://apify.com/mambalabs/cookie-consent-audit?fpr=mamba) | `TrKyOS0KBoGC35nbr` |
| [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker?fpr=mamba) | `0tVgxI7A6o9jMlxmc` |
| [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver?fpr=mamba) | `3HtnSaqPHOg1Qg5gx` |
| [Ecommerce Platform Profiler](https://apify.com/mambalabs/ecommerce-platform-profiler?fpr=mamba) | `5G2NeYjBbQTjaTn9L` |
| [Event Presence Index](https://apify.com/mambalabs/event-presence-index?fpr=mamba) | `WLhMy8fMDgsxdYxv5` |
| [Expert Witness Directory](https://apify.com/mambalabs/expert-witness-directory?fpr=mamba) | `LIpwlgfE3LaQBaXd4` |
| [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner?fpr=mamba) | `FS13X6dhQVgX3XOM6` |
| [GitHub Organization Signal Scanner](https://apify.com/mambalabs/github-organization-signal-scanner?fpr=mamba) | `ahF8RRpv5mzPao5CN` |
| [Google Ads Transparency Monitor](https://apify.com/mambalabs/google-ads-transparency-monitor?fpr=mamba) | `1eOwxhBVxzvOXAm4s` |
| [Government Contract Award Monitor](https://apify.com/mambalabs/public-award-monitor?fpr=mamba) | `zhEtllASykOcx9hJ8` |
| [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper?fpr=mamba) | `D7O1SA2EqwHGsGr1P` |
| [GTM Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay?fpr=mamba) | `xKdRfnfFNkdMpFuNs` |
| [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay?fpr=mamba) | `W161DT8W4kW55dMFh` |
| [Influencer Change Monitor](https://apify.com/mambalabs/creator-change-monitor?fpr=mamba) | `d2VVgahNL6UmcLkhg` |
| [Influencer Finder](https://apify.com/mambalabs/creator-finder?fpr=mamba) | `tpkedmloIIWtXx6sg` |
| [Influencer Lead List Builder](https://apify.com/mambalabs/creator-lead-list-all-in-one?fpr=mamba) | `KnmByszcv135yM30G` |
| [Influencer Profile Scraper](https://apify.com/mambalabs/creator-profile-reader?fpr=mamba) | `EqEnklDVMIcB1V499` |
| [Influencer Talent Agency Lookup](https://apify.com/mambalabs/talent-agency-lookup?fpr=mamba) | `zCuX4Mgyg6JvXgGzd` |
| [Instagram Facebook Brand Presence Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper?fpr=mamba) | `HXh65I0JBjPsunbY8` |
| [Integration and Marketplace Presence Mapper](https://apify.com/mambalabs/integration-marketplace-presence-mapper?fpr=mamba) | `V0guNuvM85Q61f2gj` |
| [Job Board Keyword Signal Scanner](https://apify.com/mambalabs/job-board-keyword-signal-scanner?fpr=mamba) | `4DvqpvhMR74NLcDDY` |
| [Job Change Tracker](https://apify.com/mambalabs/job-change-tracker?fpr=mamba) | `L8UbEmMJC1XYPSZOb` |
| [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery?fpr=mamba) | `QCfICD9kOPiOdj5iI` |
| [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver?fpr=mamba) | `KHFyPCDIx7CyqULYm` |
| [Link in Bio Scraper and Newsletter Detector](https://apify.com/mambalabs/link-in-bio-newsletter-checker?fpr=mamba) | `OorucdheTIgu7RFzK` |
| [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper?fpr=mamba) | `zOPm6A9JEhUGcIdFW` |
| [LinkedIn Post Tracker](https://apify.com/mambalabs/linkedin-post-engager-capture?fpr=mamba) | `oiGLNPuaf5BRaz9K5` |
| [Meta Ad Library Monitor](https://apify.com/mambalabs/meta-ad-library-monitor?fpr=mamba) | `J1GWlSXfSGU3u8Wng` |
| [Mobile Phone Waterfall](https://apify.com/mambalabs/mobile-phone-waterfall-orchestrator?fpr=mamba) | `6OOgPktf7RIa5XCOP` |
| [New Hire Finder](https://apify.com/mambalabs/new-hire-finder?fpr=mamba) | `cKuc38p4nYHNF3IW8` |
| [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint?fpr=mamba) | `v43UJC8r7qW7cBSTG` |
| [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor?fpr=mamba) | `TpurgcOZbVnknlaiC` |
| [People Finder & Email Verifier](https://apify.com/mambalabs/people-finder?fpr=mamba) | `LEgloG7tWgQl4o6TD` |
| [Person Social Footprint Mapper](https://apify.com/mambalabs/person-social-footprint-mapper?fpr=mamba) | `jfQXa2zW9FHCJot9K` |
| [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper?fpr=mamba) | `d1HvjZfKhgvWsoEwn` |
| [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine?fpr=mamba) | `q9rT6v64nUJdPexOQ` |
| [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency?fpr=mamba) | `TbLwaUUATdYb6wp4N` |
| [Reddit Brand Presence Mapper](https://apify.com/mambalabs/reddit-brand-presence-mapper?fpr=mamba) | `pKQZmDaT70SEb54bZ` |
| [Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder?fpr=mamba) | `uINxR7a1IW8qUTRUX` |
| [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push?fpr=mamba) | `0Jv27VeWM5tSZQs9x` |
| [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor?fpr=mamba) | `j8a9zX0k4mNbvDbWK` |
| [Tech Stack Signal Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper?fpr=mamba) | `qyd7nNyqFPelQViBx` |
| [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper?fpr=mamba) | `fco8FvoJcSafbeyd1` |
| [Trustpilot Reputation Enricher](https://apify.com/mambalabs/review-platform-reputation-enricher?fpr=mamba) | `3lIqfCt61j4hqE1xz` |
| [WCAG Accessibility Audit](https://apify.com/mambalabs/wcag-accessibility-audit?fpr=mamba) | `P3jBj3FRghKEhX52z` |
| [Website Traffic Rank Estimator](https://apify.com/mambalabs/website-traffic-rank-estimator?fpr=mamba) | `GnOFUzlNVIoXgeJjH` |
| [Work Email Waterfall](https://apify.com/mambalabs/email-waterfall-orchestrator?fpr=mamba) | `OT6xqTFThC0Rjf7Zj` |
| [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector?fpr=mamba) | `Li6pPDhqbdzFz3h7G` |
| [X Brand Presence Mapper](https://apify.com/mambalabs/x-brand-presence-mapper?fpr=mamba) | `oLOgadhHUkNAyDA3w` |
| [YouTube Channel Stats Extractor](https://apify.com/mambalabs/youtube-channel-transcript-extractor?fpr=mamba) | `6hSpD3kd2s2IQ4VSs` |

Built by [Mamba Labs](https://apify.com/mambalabs?fpr=mamba).

# Actor input Schema

## `domain` (type: `string`):

One company website domain, for example linear.app. A full URL or an email address also works; the domain is taken from it.

## `company_name` (type: `string`):

The company name for the single domain above. Empty: read from the company homepage.

## `domains` (type: `array`):

Up to 500 domains, one per line. Write Name | domain.com to give the company name too.

## `sources` (type: `array`):

Which sources to check. Empty: all of them. linkedin reads the LinkedIn company size from Google results (no request to linkedin.com); wikidata reads Wikidata employees; homepage reads the company homepage (name, structured data); github and jobs add GitHub public members and open job counts as context and need homepage.

## `github_token` (type: `string`):

Your own GitHub token, free from GitHub settings. Raises the GitHub limit on large batches. Without it, GitHub member counts may come back empty after about 60 lookups an hour.

## `skip_cache` (type: `string`):

Rows estimated in the last 7 days are returned from cache for free. Yes reads every source again (charged as new estimates). Text values true and false also work, as Clay sends them.

## `max_charge_usd` (type: `string`):

Stop before a row would push this run past this amount. Empty: no limit beyond the one you set in Apify.

## `source_tag` (type: `string`):

Internal attribution tag for published tasks. Leave empty.

## Actor input object example

```json
{
  "domain": "linear.app",
  "skip_cache": "false"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `run_summary` (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 = {
    "domain": "linear.app"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/company-headcount-estimator").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 = { "domain": "linear.app" }

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/company-headcount-estimator").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 '{
  "domain": "linear.app"
}' |
apify call mambalabs/company-headcount-estimator --silent --output-dataset

```

## MCP server setup

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

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/aHC4GROnNt6kfZe5r/builds/D8P39e5wAqZ93AteU/openapi.json
