MindCase
Kritish Puri

LinkedIn Job Postings as a Company Growth Signal

Job postings carry two company-size fields most people never look at twice. Snapshot them on a schedule and headcount growth becomes a trend line.

linkedinjobs
LinkedIn job postings as a company growth signal

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 returned

maxResults: 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?

EndpointInputPriceBest for
LinkedIn JobsJob title(s) + up to 10 named companies per call$0.001 / jobReading 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.