MindCase
Kritish Puri

How to Track Hiring Signals Across a List of Target Companies

A company hiring fast is a company re-evaluating what it already uses. Here's how to pull job postings for a target list and read them as a signal.

linkedinjobs
How to track hiring signals across a list of target companies

A company that's hiring fast is a company re-evaluating what it already uses. That's the headcount-trend signal from how to use LinkedIn for lead generation — a new role opening up is one of the more honest tells that a team's tooling, headcount, or budget is about to change. The gap in that post is the mechanics: how do you actually watch this across a target list, not just one company you already suspect is hiring.

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.

What counts as a hiring signal?

Not every open role is worth acting on. A single junior posting is background noise; a cluster of postings for a specific function, or a role tagged as urgent or high-volume, is closer to a real budget decision. The fields worth watching for are posted date (how recent), applicants (how much competition, on LinkedIn), and on Indeed specifically urgentHire and highVolumeHiring — both are real flags the source platform sets, not something you have to infer.

How do you pull job postings for a list of target companies?

LinkedIn Jobs takes a company filter as an array, so you can search up to 10 named companies in a single call instead of looping one request per company:

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",
    "company": ["Stripe", "Figma", "Notion", "Linear", "Vercel", "Ramp", "Deel", "Rippling", "Brex", "Airtable"],
    "postedLimit": "week"
  }
}'

# $0.001 per job returned

A target list past 10 companies means a second call for the next batch — the array caps at 10 per run. Each row returns 33 fields: title, employmentType, experienceLevel, applicants, posted, expires, and the company's own companyEmployees and companyFollowers alongside it, so you get a headcount reference point in the same row as the posting.

How do you check the same companies on Indeed too?

Indeed Jobs doesn't have a company-array filter — its real inputs are keyword, location, country, and a few others, with no dedicated company field. The practical workaround is passing the company name as the keyword, which means a result can include a posting that just mentions the company in its text rather than one actually listed by it — worth a quick company-name check on the results, not a guaranteed filter the way LinkedIn's company array is:

curl -X POST "https://api.mindcase.co/v1/data/indeed/jobs/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "keyword": "Stripe engineer",
    "location": "United States",
    "fromDays": 7
  }
}'

# $0.00005 per job returned

Indeed's 48 returned fields include numberOfHires, employerResponsive, employerResponseRate, urgentHire, and highVolumeHiring — a richer hiring-signal set than LinkedIn's, at a fraction of the per-row price, which makes the keyword-search imprecision a reasonable trade for a first pass across a large list.

What does a hiring signal actually look like in the data?

Run both calls on a schedule (weekly is a sane starting cadence for a target list you're not watching daily) and look at the rows, not just the count. A postedLimit: "week" filter on LinkedIn means every row that comes back is new since your last run — no manual date math. On Indeed, urgentHire or highVolumeHiring set to true on a row is the platform itself telling you this one's worth a second look, not something you have to infer from posting volume. A company with several rows tagged either way, or a jump in applicants on LinkedIn week over week, is a stronger signal than one open role sitting quietly for a month.

What can't you get this way?

Two cases.

A running headcount-change number. Neither endpoint returns "this company grew by X employees this quarter" — you get individual job rows and a same-row companyEmployees snapshot, not a trend line. Building that trend is on you: store each run's companyEmployees value and diff it against the last one.

Certainty that an Indeed keyword match is really that company's own posting. As noted above, Indeed has no company field — a keyword search can surface a recruiter or a third-party listing that mentions the name without being from the company itself.

Which endpoint should you use for which job?

EndpointInputPriceBest for
LinkedIn JobsJob title + up to 10 named companies per call$0.001 / jobWatching a defined target list precisely
Indeed JobsKeyword + location$0.00005 / jobWide first-pass sweeps, richer hiring-signal fields

Job postings are public by design — a company publishes them to attract applicants, not to keep them private. The one line worth keeping in mind: applicants and other competition-adjacent fields are useful for reading demand, not for targeting individual candidates who applied.

FAQ

Not in a single call — the company array caps at 10. A larger target list needs a second run for the next batch.

No. Indeed Jobs has no company field — search by keyword and location instead, and expect the company name in the keyword to occasionally surface a posting that only mentions the company rather than one from it.

One posting isn't a signal. Several postings for the same function, or fields like Indeed's urgentHire and highVolumeHiring set to true, are stronger indicators than raw count alone.

No — both endpoints return what's live right now. A trend requires running the same query on a schedule and storing each result yourself.