Hiring Change Feed - Greenhouse, Lever, Workday, Ashby
Pricing
$1.50 / 1,000 hiring change events
Hiring Change Feed - Greenhouse, Lever, Workday, Ashby
Scrapes Greenhouse, Lever, Workday, Ashby, SmartRecruiters, Recruitee, Personio, JazzHR and Rippling and returns only what CHANGED - the roles a company opened and closed since your last run. A retitled posting is never sold as a closure. Ships with 8,220 measured events so run one returns data.
Pricing
$1.50 / 1,000 hiring change events
Rating
0.0
(0)
Developer
Kaleb Confer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Hiring Change Feed - Jobs Opened and Closed
Not a list of job postings. A list of what changed: which requisitions a company opened since your last run, which it closed, and which moved.
There are nine good ways to buy job postings and the price only goes down. A posting that is true today was true last month. The change is true once, and the closing half of it is the half nobody publishes: an opening is announced by the employer and a closure is silent, so it has to be inferred from an absence. Inferring it correctly is the whole product.
What you get
| Field | Meaning |
|---|---|
event | opened, closed or moved |
title | Role title |
location | Location as the employer wrote it |
department | Team, where the board exposes one |
url | The employer's own apply URL |
requisition | The vendor's own posting id - stable across edits |
ats / board_token | Which board it came from |
since | Start of the window this row covers |
observed_at | The day the change was seen |
source | your run for a comparison this account made, reference index for one already recorded |
grade | high for a comparison between two of your own runs, recorded for a measured event that shipped with the image. Both are billed; coverage and baselines are not. |
The three ways a change feed lies, and what this does instead
A retitle is not a closure. Identity here is the vendor's own posting id, never a hash of the title. A recruiter changing "Engineer II" to "Engineer, Platform" changes nothing about the requisition. Measured against a live re-fetch of 25 Greenhouse boards on 2026-09-03: keying on the title made 17.3% of high-confidence closures false. Keying on the vendor's id made it 0.0% - 131 of 131 confirmed gone.
A move is not a closure, and not twenty openings. One requisition can be
advertised in twenty states and the vendor expands it into twenty rows under
one id: Rippling's own board carries 694 postings under 354 ids. Keying on the
id alone would collapse 49% of that board, so the key is the id plus the
location, and a genuine relocation is reported once, as moved.
A failed fetch is not a layoff. The expensive bug here is a board that
rate-limits or comes back empty being sold as every role at that company
closing at once. A board that errors emits no closures. A board that answers
with zero postings where it held roles is graded coverage, reported in the
provenance record, and emits no closures either - an empty board and an
unreachable one look identical from outside and only one of them is news.
How it works
- Give it company names, or boards as
ats/token(for examplegreenhouse/stripe,ashby/openai,workday/wd5/target/targetcareers). - The first run on a board returns the changes already measured for it -
8,220 high-confidence events across 646 boards, recorded
2026-08-30 to 2026-09-04 - and takes that board's baseline snapshot in the same run.
Every row says
source: reference indexso you always know which observations are ours and which are yours. - Every run after that reports what changed since your previous run, marked
source: your run. Schedule it daily and the feed is daily; run it weekly and each row says the window it covers, insince.
maxResults defaults to 500, so a first run is a small known cost rather
than a surprise. Capping loses nothing: every board's snapshot is written before
the cap is applied, so the next run continues from the right place.
Set includeRecordedHistory to false if you want only what your own runs see.
Then a first run delivers nothing and charges nothing, which is the honest floor
for a change feed with no history behind it.
The recorded window is fixed when the image is built and ages until it is
rebuilt - recorded_to in the provenance record is the last day it covers.
Only high-confidence events ship: a board's first day in the index reads exactly
like opening every role at once, and that has never been counted as hiring.
State lives in a named key-value store called hiring-change-feed-state on
your own account, so the history is yours, not rented back to you. Delete a
record there and that board starts over from a fresh baseline.
Coverage
A verified directory of 12,784 live boards across nine ATS platforms is baked in, so a company name resolves without guessing a slug. Guessing has a measured 0.77% hit rate; the directory does not guess.
Greenhouse, Ashby, Lever, Workable, Workday, SmartRecruiters, Recruitee,
Rippling and Personio. Both of Lever's API hosts are checked - Lever runs a
separate EU data-residency deployment at api.eu.lever.co, and a single-host
adapter reads every European board as though it closed.
The free address directory is public and needs no account: https://kalebconfer-sys.github.io/job-board-directory/
Pricing
Per change event delivered. Baselines and boards graded coverage are not
events and are not charged.
Limits, stated rather than discovered
- A posting served from an employer's own white-label domain with no vendor id in the URL is left out of the diff rather than matched on its title. That is 484 of 347,934 observed rows in the reference index.
- Recruitee's identity is its URL slug, because that is what its board exposes; a Recruitee retitle that also changes the slug reads as a close and an open.
- The window is however long it has been since your last run on that board, not
a fixed day.
sinceon every row says exactly what it is. - Nothing here is behind a login and no access control is circumvented. These are the vendors' own public board APIs, and the crawl delays they declare are honored.
Need a slice this Actor does not cut, a scheduled delivery into your own warehouse, or a coverage comparison against the source you use now? kaleb@revivacatch.com