Multi-ATS Jobs Scraper - Greenhouse, Lever & Ashby
Pricing
$3.00 / 1,000 job returneds
Multi-ATS Jobs Scraper - Greenhouse, Lever & Ashby
Greenhouse, Lever and Ashby each publish a company's whole board as open JSON. The only field name all three agree on is id. This reads them into one schema: title, location, department, employment type, posted date, full description text and apply link. $3.00 per 1,000 jobs, no run-start fee.
Pricing
$3.00 / 1,000 job returneds
Rating
5.0
(2)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Multi-ATS Jobs Scraper (Greenhouse, Lever, Ashby)
Greenhouse, Lever and Ashby each publish an open JSON feed for every company board hosted on them, and the three formats have exactly one field name in common: id. This reads a list of those boards and flattens all three into one schema, so a Stripe posting and a Ramp posting land as the same shape of row.
Those feeds are open to anyone, so there's no key to request and no anti-bot in the way. What comes back is exactly what the company's own careers page shows a visitor, read from the source instead of scraped off a rendered page.
Input
{"companies": ["greenhouse:stripe", "lever:spotify", "ashby:ramp"],"maxItems": 0}
Each entry is ats:token. The ATS is greenhouse, lever or ashby; the token is the company's board slug, which you take straight out of their careers URL:
- Greenhouse →
job-boards.greenhouse.io/<token>(the olderboards.greenhouse.io/<token>and<token>.greenhouse.ioforms use the same slug) - Lever →
jobs.lever.co/<company> - Ashby →
jobs.ashbyhq.com/<name>
| Field | Default | Notes |
|---|---|---|
companies | — | The list of boards. |
ats + company | — | A convenience pair for a single board. Ignored when companies is filled. |
maxItems | 0 | Postings per company. 0 means every open one. |
proxyConfiguration | off | Optional. These APIs have no anti-bot, so a proxy only helps if you're sweeping so many boards you hit IP rate limits. |
notionConnector / notionParentId | — | Optional delivery into Notion via an Apify MCP connector. |
What you get per posting
{"ok": true,"ats": "greenhouse","company": "stripe","title": "Account Executive, AI Startups (Hunter)","location": "San Francisco","department": "1653 Startups - Account Executives (NA)","employmentType": null,"url": "https://stripe.com/jobs/search?gh_jid=8130725","postedAt": "2026-08-19T14:02:07-04:00","description": "Who we are\n\nAbout Stripe\n\nStripe is a financial infrastructure platform…","salary": null}
description is the full posting text, HTML stripped to plain text with paragraph breaks kept. Not a snippet.
What each ATS actually publishes
The three feeds don't carry the same fields, so some values are null on a perfectly good row. Here's what each one actually exposes:
| Field | Greenhouse | Lever | Ashby |
|---|---|---|---|
employmentType | not exposed, always null | yes (its "commitment" field) | yes |
salary | not exposed, always null | best effort, often null | yes, structured, still sometimes null |
department | yes | department / team | department / team |
postedAt | yes | yes | yes |
description | yes | yes | yes |
If pay data is what you're after, Ashby boards are the ones that reliably have it.
Other limits worth knowing
- Open postings only. These feeds publish what's live right now. There's no archive of closed roles.
- Rows are deduplicated by
urlacross the whole run, so a company listed twice doesn't bill twice. - A board that doesn't exist, or a slug typed wrong, gets its own diagnostic row and the run carries on with the rest of the list.
departmentis whatever the company typed. Greenhouse boards in particular often carry internal codes like1653 Startups - Account Executives (NA)rather than a tidy department name.
Billing
$3.00 per 1,000 jobs ($0.003 each), with no run-start fee. Flat on every plan.
One charge per posting row with ok: true. Duplicates and diagnostic rows are free, so pointing it at a list of slugs where a few turn out to be wrong only bills you for the boards that answered.