How it works

A domain goes in. A board comes out — or an honest shrug.

There is no scraper and no headless browser in this product. All three supported platforms publish a documented public JSON job-board API and we read those, keylessly, with an identifying user agent. The hard part is not the reading — it is working out which board belongs to which company, and being straight with you when we cannot.

  1. 01

    Find the board

    We fetch the company's own careers pages and look for a board link in the markup. About half of companies resolve here — they linked it themselves, so it is the highest-confidence signal we can get.

    /careers  ·  /jobs  ·  /company/careers  ·  /about/careers  ·  /careers/open-roles
  2. 02

    Guess, then verify

    When there is no link, we guess the board name from the domain label — airtable.com is airtable on Greenhouse, plaid.com is plaid on Ashby. A guess is only ever a candidate: it is not believed until a platform answers 200 with real roles.

    airtable.com  →  airtable · Airtable · airtable (three platforms, all probed)
  3. 03

    Probe all three at once, keep the fullest

    Never the first one that answers. Airtable and Mercury both return 200 on Greenhouse and Ashby; their Ashby boards are empty shells. The board with the most open roles wins, and every candidate we ruled out comes back with the result.

    greenhouse 200 · 55   ashby 200 · 0   lever 404
  4. 04

    Normalize into one shape

    Three applicant-tracking systems that agree on almost nothing become one role object. Function is classified from the title so it means the same thing across companies; the platform's own team label is kept verbatim beside it.

    title · team · function · seniority · location · remote · postedAt · url
  5. 05

    Diff against last time

    Every scan stores a reading of that board keyed by the platform's own job ids. The next scan of the same company returns what opened, what closed, the net change, and any function that appeared for the first time.

    opened[] · closed[] · netChange · newFunctions[]

Discovery, measured

Four companies in five. We publish the fifth.

Some companies run their hiring somewhere we cannot reach without a key or a per-tenant integration. For those the answer is board_not_found, you are not charged, and it is never dressed up as a zero.

mercury.comgreenhouse···lever···ashby···GREENHOUSE55 open roles

One domain, three probes, fired at the same time.

The second reading

The first scan is data. The second is a signal.

The diff key is the platform’s own job id, so a retitled req is not mistaken for a new one and two roles with the same title do not collapse into one.

LAST SCANTHIS SCANBackend engineerAccount executiveSupport leadDesignerBackend engineerAccount executiveDesignerData engineerSolutions engineer+2−1

The same board, read twice.

The three we read

Chosen for one property: a clean 404.

A board that does not exist has to say so unambiguously. That is the entire selection criterion, because without it every empty result is a coin flip between “not on this platform” and “not hiring”.

Greenhouse
boards-api.greenhouse.io/v1/boards/<token>/departments

Miss: 404 with {"status":404,"error":"Job not found"}

  • remote flag · not published
  • compensation · not published
  • team label · published
Lever
api.lever.co/v0/postings/<token>?mode=json

Miss: 404 with {"ok":false,"error":"Document not found"}

  • remote flag · published
  • compensation · not published
  • team label · published
Ashby
api.ashbyhq.com/posting-api/job-board/<token>

Miss: 404 with the bare body `Not Found`

  • remote flag · published
  • compensation · on request
  • team label · published

And the ones we refuse

SmartRecruiters
A nonsense company id returns HTTP 200 with {"totalFound":0,"content":[]} — byte-identical to a real company with no openings. There is no way to tell 'not on this platform' from 'not hiring', so shipping it would mean guessing.
Workable
The widget endpoint discriminates 200/404, but its field shape was never verified against enough real boards to normalize honestly. Absent rather than half-mapped.
Recruitee
No keyless endpoint that answers reliably for an arbitrary company.
Workday
Each tenant runs its own host and its own path; there is no keyless, guessable endpoint. A per-tenant integration is not the same product.

Try it on a company you already know.

6 credits a scan, 1 credit per role description, and nothing at all when we come up empty.