Company hiring signals - who opened or closed the most jobs
Pricing
from $5.00 / 1,000 records
Company hiring signals - who opened or closed the most jobs
Which companies opened and which closed the most job postings since your last run, across 2,099 verified Greenhouse, Lever, Ashby and Workable boards. One row per company: open now, added, closed, net change, and the titles that moved. The first run records a baseline; schedule it weekly.
Pricing
from $5.00 / 1,000 records
Rating
0.0
(0)
Developer
RetrainMap Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Company hiring signals — who opened or closed the most jobs
Which companies are opening postings and which are closing them, read from 2,099 verified company career sites on Greenhouse, Lever, Ashby and Workable. One row per company — not per posting:
company · ats · board · open_now · baseline_open · added · closed · net_change · added_titles[] · closed_titles[] · baseline_at · is_first_run · error · fetched_atRows come back biggest-mover first. Run it empty and it walks the bundled board index; no board tokens to look up.
How the comparison works, and why the first run is different
Every ATS API publishes only what is open right now. None of them publish "closed last week." So a change signal has to come from a snapshot you took earlier — there is no other honest source for it.
Each run records, per board, the set of open posting IDs into a named key-value store in
your account (baseline_store, default company-hiring-signals-baseline). That store
survives between runs. The next run diffs against it.
Therefore the first run cannot report a delta, and this Actor will not invent one. It
returns open_now with added, closed and net_change set to null, is_first_run: true,
and says so in the run status. Schedule it — weekly is the natural cadence — and every run
from the second onwards carries the signal.
If you are feeding a pipeline that must never read a null as a 0, set require_baseline
and a baseline-less run fails loudly instead.
What a signal does and does not mean
added— posting IDs on the board now that were not there at the baseline. A company opened those roles in the window.closed— posting IDs that were there and are gone. The role was filled, cancelled, or expired. The ATS does not say which, so neither does this Actor.net_change— added minus closed. Sustained negatives across a sector are the interesting shape; a single company's swing is usually one team's hiring round.
An unreadable board is not a hiring freeze. If a board 404s or times out, the row carries
error, its deltas are null, and its baseline is left untouched — so the next successful
run still compares against real data, and an outage is never published as a collapse.
Input
| Field | Meaning |
|---|---|
boards | Optional explicit watchlist: greenhouse/stripe, lever/spotify, ashby/ramp, workable/netguru |
max_boards | How many boards to read (default 100). Keep it stable once scheduled — the comparison is only meaningful over the same set |
ats | Limit to some of the four platforms |
company_contains | Restrict the index walk to matching companies |
changed_only | Drop companies that did not move |
min_change | Report a company only if it moved by at least N postings |
baseline_store | Name the store — one per watchlist, so two schedules do not overwrite each other |
require_baseline | Fail rather than return null deltas |
update_baseline | Off = an ad-hoc query that does not reset your comparison window |
Who uses this
Recruiting and staffing teams looking for accounts that just opened headcount; sales teams timing outreach to a hiring ramp; analysts tracking sector-level hiring; anyone who wants "who started hiring this week" from employers' own boards rather than a listings aggregator.
The board index
data/boards.csv, shipped inside the image: company, ATS, board slug, job count at
verification, verification timestamp. Every board in it answered with at least one live
posting when checked — the RetrainMap ATS index behind
retrainmap.com/data, not a guessed list of slugs.
When a run fails
If an ATS answers in a shape it does not document, the run stops with a SourceError naming
the endpoint rather than emitting guessed rows. One unreadable board is recorded and the run
continues; only every-board-failed is fatal.
Politeness and identification
One request per board, at most one per request_interval_ms (250 ms floor), two retries with
back-off on 429/5xx. Every request identifies the operator by product-token User-Agent and
carries a contact address in the standard From: header (RFC 9110 §10.1.2).
Pricing
Pay per event: $0.10 per run start + $0.005 per company row.
Related: Remote jobs feed (remote postings across the same index) and ATS jobs (full postings from boards you name). The full 109,000-posting weekly dataset is at retrainmap.com/data.
By Steelyard Ventures LLC (brand: RetrainMap) · info@steelyardclinical.com