Every row LinkedIn Jobs returns carries two fields
that have nothing to do with the job itself: companyEmployees and
companyFollowers, a snapshot of the posting company's size at the moment
the job went up. An earlier post
on this same endpoint treats postings as a one-off signal — is this
company hiring right now. This post is about the field it flags as out of
reach: a headcount trend, useful for a different reader entirely — someone
sizing a company's growth stage, not qualifying a sales lead.
If you're an agent (or building one) reading this rather than a human, the full machine-readable schema for every endpoint below lives at mindcase.co/skills.md.
Why would a job posting tell you anything about company size?
companyEmployees and companyFollowers aren't computed by whatever
you're building — LinkedIn attaches them to every job posting as
context on the company that posted it. Neither number is scoped to the
job; it's the same company-wide figure repeated on every row for that
employer, refreshed each time LinkedIn re-crawls the company page. That
makes a job posting call — a query you're likely already running for
other reasons — a free source of a number that's otherwise nowhere in the
job data itself.
How do you pull a company snapshot without any job-title filtering?
LinkedIn Jobs requires jobTitles, but you can
widen it to a single broad term and pass the company array to scope
everything to the accounts you're tracking:
curl -X POST "https://api.mindcase.co/v1/data/linkedin/jobs/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"jobTitles": "engineer OR manager OR analyst",
"company": ["Stripe", "Figma", "Notion", "Linear", "Vercel", "Ramp", "Deel", "Rippling", "Brex", "Airtable"],
"maxResults": 10
}
}'
# $0.001 per job returnedmaxResults: 10 keeps this cheap — you don't need every open role, just
one row per company to read its companyEmployees and
companyFollowers off. A broad jobTitles string maximizes the odds
each of the 10 companies has at least one matching posting live; a
company with zero open roles matching the filter returns no row for that
run, which is itself informative (see below).
How do you turn one snapshot into a trend?
One call gives you a point-in-time number, not a trend — the same
limitation the hiring-signals post
flags for headcount change. The fix is the same shape either way: run the
call on a schedule (monthly is reasonable for headcount, which moves
slower than job postings do) and store companyEmployees and
companyFollowers alongside the date of that run, keyed by
companyId rather than companyName — names can have punctuation or
casing drift between runs, companyId doesn't.
Three months of snapshots turns into a trend line without any extra
API calls: plot companyEmployees by run date per companyId, and a
company that grew from 340 to 410 employees over a quarter reads
differently than one that sat flat. companyFollowers moves for
different reasons — marketing activity, product launches — so it's worth
tracking as a second, separate line rather than folding it into the same
number as headcount.
What does a real growth signal look like versus noise?
A single month's jump in companyEmployees can be a data correction on
LinkedIn's side, not a real hiring wave — the field reflects self-reported
LinkedIn profile counts, not a payroll system. What's harder to fake is a
sustained direction across three or more consecutive snapshots: steady
quarter-over-quarter growth in both companyEmployees and
companyFollowers together is a stronger signal than either one moving
alone. A company with rising followers but flat headcount is probably
running a marketing push, not a hiring one — worth separating the two
rather than treating "growth" as one blended score.
What can't you get from Mindcase?
Two cases.
A company with zero open roles in a given run. If none of a
company's postings match your jobTitles filter that month, the call
returns no row for it — no snapshot, no data point. A gap in your trend
line isn't necessarily shrinking headcount; it can just mean nothing
matched the search that run. Widening jobTitles reduces this risk but
doesn't eliminate it for companies posting very few roles.
Confirmation that companyEmployees is current to the day you called
it. LinkedIn doesn't timestamp when that field was last refreshed —
it's whatever LinkedIn's own systems had cached when the job posting was
indexed. Treat each snapshot as approximately current, not exact to the
day.
Which endpoint should you use for which job?
| Endpoint | Input | Price | Best for |
|---|---|---|---|
| LinkedIn Jobs | Job title(s) + up to 10 named companies per call | $0.001 / job | Reading companyEmployees/companyFollowers as a growth trend, one snapshot per scheduled run |
FAQ
Same endpoint, different fields and a different question. That post reads individual job postings as a right-now hiring signal. This one reads the company-level companyEmployees and companyFollowers fields attached to those postings as a growth trend over time.
Monthly is a reasonable default. Headcount changes slower than job postings do, so a weekly cadence mostly re-fetches the same number.
You get no row and no snapshot for that company that period. A gap in the trend isn't proof of shrinking headcount — it can just mean nothing matched your jobTitles filter that run.
No. LinkedIn Jobs returns the current companyEmployees value at call time, not a history. A trend only exists from the point you start storing snapshots yourself.
