ATS Job Boards - live postings from Greenhouse and Lever avatar

ATS Job Boards - live postings from Greenhouse and Lever

Pricing

Pay per event

Go to Apify Store
ATS Job Boards - live postings from Greenhouse and Lever

ATS Job Boards - live postings from Greenhouse and Lever

Every open role on a company's own job board, from the public APIs Greenhouse and Lever publish for employers to embed on their careers page. One row per posting: title, location, department, apply URL, posted date. No login, no API key. Ashby is not read - its robots.txt refuses us.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stephen Psaradellis

Stephen Psaradellis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Categories

Share

ATS Job Boards — live postings from Greenhouse and Lever

Every open role on a company's own job board, read from the public APIs Greenhouse and Lever publish so that employers can embed their postings on their careers page. One dataset row per posting: title, location, department, commitment, apply URL, posted date, and optionally the full description.

No login. No API key. No scraping around a wall — these are the endpoints the company's own careers page calls.

What you give it

A list of boards, one per line:

greenhouse:vercel
greenhouse:figma
lever:leverdemo

The token is the last path segment of the company's public board URL — job-boards.greenhouse.io/vercel or jobs.lever.co/leverdemo. You can paste the whole URL and it will take the token off the end. A bare name with no prefix is tried on Greenhouse.

SettingWhat it does
Job boardsThe boards to read, in order
Include the full descriptionAdds the posting's HTML body. Costs no extra request. On Greenhouse it also fills in department and offices, which the plain jobs endpoint does not return
Max boardsStop after this many boards (0 = unbounded)
Max postingsStop after this many postings (0 = unbounded)
Request timeoutSeconds before a board read is retried, then recorded as an error

What you get

One row per posting:

{
"ats": "greenhouse",
"board": "vercel",
"job_id": "6136160004",
"title": "Account Executive, Commercial",
"location": "Hybrid - London",
"department": "Account Executive",
"commitment": "",
"workplace": "",
"absolute_url": "https://job-boards.greenhouse.io/vercel/jobs/6136160004",
"posted_at": "2026-08-18T22:06:19.000Z",
"read_at": "2026-09-07T02:55:44.979Z"
}

A RUN_SUMMARY record in the key-value store says how many boards were asked, how many answered, how many were empty, how many 404ed, how many postings were pushed, and what stopped the run if a cap did. A board with no open roles is reported as empty, not dropped — "this company is not hiring right now" is an answer, and you paid a request for it either way.

Pricing

Pay per event, and there is no charge for starting the actor:

EventPriceWhen
Job board read$0.01One board fetched, whether or not it has open roles
Job posting row$0.004One posting pushed. A posting seen twice in a run is charged once

Reading 20 boards with 40 roles each costs $0.20 + $3.20 = $3.40.

What it does not do

  • It does not submit applications. Both ATSes have an application endpoint; this actor never calls it.
  • It does not read Ashby, although Ashby boards are in the same family. api.ashbyhq.com answers a robots.txt request with 401, and this project treats a refusal as a refusal.
  • It does not invent fields. Where an ATS returns nothing for department, commitment or workplace, the column is empty rather than guessed.
  • It does not enrich rows from anywhere else. What you get is what the employer published.

Where the data comes from

ATSEndpointrobots.txt
Greenhouseboards-api.greenhouse.io/v1/boards/{token}/jobsDisallow: /embed/ only. Greenhouse's docs: "Job Board data is publicly available, so authentication is not required for any GET endpoints."
Leverapi.lever.co/v0/postings/{company}?mode=jsonAllow: /, Crawl-delay: 1 — honoured as a real one-second gap between Lever reads

Both were fetched and checked under this actor's own user agent before it was built, and the responses are kept with their SHA-256 digests.