Company hiring signals - who opened or closed the most jobs avatar

Company hiring signals - who opened or closed the most jobs

Pricing

from $5.00 / 1,000 records

Go to Apify Store
Company hiring signals - who opened or closed the most jobs

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

RetrainMap Data

Maintained by Community

Actor 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_at

Rows 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

FieldMeaning
boardsOptional explicit watchlist: greenhouse/stripe, lever/spotify, ashby/ramp, workable/netguru
max_boardsHow many boards to read (default 100). Keep it stable once scheduled — the comparison is only meaningful over the same set
atsLimit to some of the four platforms
company_containsRestrict the index walk to matching companies
changed_onlyDrop companies that did not move
min_changeReport a company only if it moved by at least N postings
baseline_storeName the store — one per watchlist, so two schedules do not overwrite each other
require_baselineFail rather than return null deltas
update_baselineOff = 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