ATS Hiring Signal Monitor avatar

ATS Hiring Signal Monitor

Pricing

from $10.00 / 1,000 board snapshots

Go to Apify Store
ATS Hiring Signal Monitor

ATS Hiring Signal Monitor

Track hiring changes across Greenhouse, Lever and Ashby. Monitor career boards on a schedule and receive structured events when jobs are added, changed, reopened or closed.

Pricing

from $10.00 / 1,000 board snapshots

Rating

0.0

(0)

Developer

Martin Lain

Martin Lain

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

19 hours ago

Last modified

Categories

Share

Track hiring changes across Greenhouse, Lever and Ashby.
Monitor company career boards on a schedule and receive structured events when jobs are added, changed, reopened, or closed.

Why teams pay for this

  • Sales intelligence — trigger outreach when a target company opens relevant roles
  • Company growth signals — watch headcount and department expansion over time
  • Recruiting intelligence — track competitor or client boards without manual checks
  • Investment / research monitoring — structured hiring deltas for diligence and market maps
  • AI-agent workflows — typed JSON events (job_added, job_changed, …) for webhooks, MCP, and automations

Built as a job change monitor / hiring signals API / career page monitor over official public ATS career-page JSON — not another full board dump scraper.

Supported boards

ATSSource
GreenhousePublic Job Board API
LeverPublic postings JSON
AshbyPublic posting-api job board

No login. No LinkedIn. No residential proxy required for these public boards.

Outputs

recordTypeMeaning
snapshotNormalized open jobs (optional)
change_eventDeltas after the first baseline run
hiring_signalPer-board open-count / department summary (optional)

Change events

eventTypeWhen
job_addedNew job appears after baseline
job_changedMonitored fields / content hash changed
job_reopenedPreviously closed job returns
job_closedMissing for N consecutive successful fetches

Stable id: jobKey = ats:boardToken:externalId
Confirmed-closed: missing once is not enough — uses confirmedClosedAfterRuns (default 2). Failed board fetches do not close jobs.

How to use

  1. Add one or more boards (boardToken and/or careers boardUrl; ats: auto works for common hosts).
  2. Set a durable kvStoreName (same name on every scheduled run).
  3. First successful run = baseline (snapshots / signals only — no change events).
  4. Later runs emit change_event rows when jobs appear, change, reopen, or confirm-close.
  5. Schedule hourly/daily and wire the dataset to webhooks, Make/Zapier, or your agent pipeline.

Example input

{
"boards": [
{ "ats": "greenhouse", "boardToken": "airbnb", "label": "Airbnb" },
{ "ats": "lever", "boardToken": "leverdemo", "label": "Lever Demo" },
{ "ats": "ashby", "boardToken": "ashby", "label": "Ashby" },
{ "ats": "auto", "boardUrl": "https://jobs.lever.co/netflix" }
],
"kvStoreName": "gtm-hiring-signals",
"confirmedClosedAfterRuns": 2,
"keywordFilter": "engineer",
"emitSnapshots": false,
"emitHiringSignal": true
}

Main input fields

FieldDescription
boards[]ats (auto / greenhouse / lever / ashby), boardToken, boardUrl, label
kvStoreNameNamed KV store for fingerprints across runs
confirmedClosedAfterRunsMissing streak before job_closed (default 2)
departmentFilter / locationFilter / keywordFilterOptional contains filters
emitSnapshots / emitHiringSignalToggle snapshot rows and hiring summaries
maxJobsPerBoardSafety cap (default 5000)

Example outputs

change_event

{
"recordType": "change_event",
"eventType": "job_added",
"ats": "greenhouse",
"boardToken": "airbnb",
"jobKey": "greenhouse:airbnb:8184174",
"title": "Account Manager",
"after": {
"title": "Account Manager",
"department": "Sales",
"location": "London, United Kingdom",
"absoluteUrl": "https://careers.airbnb.com/positions/8184174?gh_jid=8184174",
"employmentType": null,
"isRemote": null
}
}

hiring_signal

{
"recordType": "hiring_signal",
"ats": "ashby",
"boardToken": "ashby",
"openJobs": 25,
"openJobsDelta": 0,
"added": 0,
"changed": 0,
"closed": 0,
"reopened": 0,
"departmentsHiring": ["Engineering", "Sales"],
"isBaseline": false
}

Pricing (pay per event)

EventWhen chargedPrice
board_snapshotEach successful board fetch + normalize$0.01
change_eventEach emitted change row$0.02
signal_reportEach hiring_signal summary row$0.01

Example: 10 boards daily with ~5 real changes → about 10×$0.01 + 5×$0.02 + 10×$0.01 ≈ $0.30/day (plus platform start events if applicable).

Limitations

  • Workday and HTML-only career sites are out of scope for this version.
  • Custom career domains need explicit ats + boardToken when auto-detect cannot infer the ATS.
  • If maxJobsPerBoard truncates a large board, close detection can be skewed — prefer filters or a higher cap.
  • Filters define the monitored universe (filtered-out jobs are treated as absent from the board view).