Company Headcount Estimator
Pricing
from $30.60 / 1,000 company estimateds
Company Headcount Estimator
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.
Pricing
from $30.60 / 1,000 company estimateds
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
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
numberOfEmployeesthe 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_agreefalse. - 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
{ "domain": "linear.app" }
{ "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_ofsays when). - Small and new companies return
no_datamore 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
Built by Mamba Labs.