ATS Job Board Scraper - Greenhouse, Lever, Ashby, Workable
Pricing
$2.00 / 1,000 job listing returneds
ATS Job Board Scraper - Greenhouse, Lever, Ashby, Workable
Pull every open job from a company's official ATS job board (Greenhouse, Lever, Ashby, Workable) and get one normalised, deduplicated schema across all of them.
Pricing
$2.00 / 1,000 job listing returneds
Rating
0.0
(0)
Developer
Pablo D
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
ATS Job Board Scraper — Greenhouse, Lever, Ashby & Workable in one schema
Point this Actor at a list of company career pages and get back every open role, from four different applicant tracking systems, in one normalised schema. No API keys, no proxies, no login.
Most job scrapers on the Store cover a single ATS, so tracking 200 companies means running four different Actors and reconciling four different field names. This one takes a mixed list and does the reconciling for you.
What it does
| Input | A list of company job boards — a careers URL, or provider:token |
| Output | One dataset row per open job, identical fields for every ATS |
| Sources | Greenhouse, Lever, Ashby, Workable — official public job-board APIs |
| Speed | ~1 request per company; a 50-company list finishes in about a minute |
Use cases
- Recruiting / talent intelligence — track hiring at a portfolio of companies and see which teams are growing.
- Job boards and newsletters — build a niche board (e.g. climate tech, Berlin, remote design) from the source of truth rather than a re-scraped aggregator.
- Sales & market research — job postings are a leading indicator: a company hiring five Salesforce admins is buying Salesforce.
- Competitive monitoring — schedule a daily run and diff the dataset to get new-role alerts.
Input
Pass the boards in whatever form you have them. All of these work:
{"companies": ["https://job-boards.greenhouse.io/stripe","https://jobs.lever.co/palantir","https://jobs.ashbyhq.com/ramp","https://apply.workable.com/blueground/","greenhouse:figma","lever:leverdemo","ashby:ramp"],"includeDescription": true,"remoteOnly": false,"titleKeywords": ["engineer", "data"],"postedWithinDays": 30,"maxJobsTotal": 1000,"requestDelaySeconds": 1}
A bare token (stripe) also works — it uses the Default ATS provider setting.
Where do I find a company's board token?
It is the path segment in the careers URL:
| ATS | Careers URL | Token |
|---|---|---|
| Greenhouse | https://job-boards.greenhouse.io/**stripe** | stripe |
| Lever | https://jobs.lever.co/**palantir** | palantir |
| Ashby | https://jobs.ashbyhq.com/**ramp** | ramp |
| Workable | https://apply.workable.com/**blueground**/ | blueground |
If a company's careers page is on their own domain, the ATS is usually still visible in the "Apply" link.
Boards that were live when this Actor was last verified, if you want something to try it on:
greenhouse:monzo, lever:leverdemo, ashby:ramp, workable:blueground, workable:skroutz, workable:orfium, workable:epignosis.
Output
One row per job. Every field is present for every ATS (null where that ATS does not publish it):
{"source": "ashby","companySlug": "ramp","companyName": null,"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","title": "Security Engineer, Cloud","url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-.../application","location": "New York, NY (HQ)","locations": ["New York, NY (HQ)", "Remote (Canada)"],"country": "USA","department": "Engineering","team": "Backend","employmentType": "FullTime","isRemote": true,"workplaceType": "Hybrid","postedAt": "2026-04-07T17:12:35.753000+00:00","updatedAt": null,"salaryText": "$211.4K - $290.6K","descriptionText": "About Ramp ...","descriptionHtml": "<p>About Ramp ...</p>","boardUrl": "https://jobs.ashbyhq.com/ramp","scrapedAt": "2026-09-10T10:22:41.010000+00:00"}
The run also writes a RUN_SUMMARY record to the key-value store with the number of boards processed, jobs pushed, and any boards that failed — handy when you are validating a long list of tokens.
Filters
titleKeywords, excludeTitleKeywords, locationKeywords, remoteOnly, postedWithinDays, maxJobsPerCompany, maxJobsTotal. All filtering happens after the fetch, so filtering does not reduce the number of requests — but maxJobsTotal does cap your dataset size and therefore your cost.
Honest limitations
- Four ATS platforms, not all of them. SmartRecruiters and Recruitee are deliberately not supported: their
robots.txtsaysDisallow: /for generic clients, so this Actor does not touch them. Workday, Taleo, iCIMS and SAP SuccessFactors have no comparable open board API and are out of scope. - Company name. Greenhouse and Workable return the company name; Lever and Ashby do not, so
companyNameisnullfor those (thecompanySlugandboardUrlalways identify the company). updatedAtis only published by Greenhouse.- Salary is only published by Ashby (and occasionally Lever). Most boards do not expose it.
- Only public, listed jobs. Confidential or unlisted postings never appear in these APIs, and this Actor does not try to find them.
- Board tokens must be right. A wrong token returns HTTP 404; turn on Emit an item for failed boards to get those back as rows instead of just log lines.
- Description size.
includeDescriptiontypically multiplies dataset size by 10–30×. Turn it off if you only need titles and links.
How the data is obtained
Every source is the ATS vendor's own public, unauthenticated job-board API, published so that job aggregators can consume it:
boards-api.greenhouse.io/v1/boards/{token}/jobsapi.lever.co/v0/postings/{token}?mode=jsonapi.ashbyhq.com/posting-api/job-board/{token}apply.workable.com/api/v1/widget/accounts/{token}
There is no login, no captcha solving, no proxy rotation and no browser automation. robots.txt was checked for each host; Lever asks for a one-second crawl delay and the Actor enforces it (the delay input cannot go below 1 second for Lever).
Changelog
See CHANGELOG.md.
Support
Found a bug, or need a field this Actor does not return yet? Open an issue on the Actor's Issues tab, or email pablodevigoalertas@gmail.com. Issues are read first.