ATS Job Boards Scraper — Greenhouse, Lever, Ashby, Workable +4
Pricing
$1.00 / 1,000 job postings
ATS Job Boards Scraper — Greenhouse, Lever, Ashby, Workable +4
Pricing
$1.00 / 1,000 job postings
Rating
0.0
(0)
Developer
Arthur
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
ATS Job Boards Scraper — Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor
Pull every open job of any company that runs its careers page on one of eight applicant-tracking systems (ATS), straight from the ATS's official public job-board API — the same JSON/XML feed the company's own careers page uses. No login, no API key, no browser, no proxies, no HTML guessing. One run, many companies, one clean dataset.
Supported ATS and the endpoint used:
| ATS | example input | what we read |
|---|---|---|
| Greenhouse | greenhouse:discord, https://boards.greenhouse.io/gitlab, https://job-boards.greenhouse.io/discord | boards-api.greenhouse.io/v1/boards/{slug}/jobs?content=true |
| Lever | lever:palantir, https://jobs.lever.co/spotify (EU boards too) | api.lever.co/v0/postings/{slug}?mode=json |
| Ashby | ashby:openai, https://jobs.ashbyhq.com/ramp | api.ashbyhq.com/posting-api/job-board/{slug} (with compensation) |
| Workable | workable:blueground, https://apply.workable.com/nuvei | widget list + job detail endpoints |
| SmartRecruiters | smartrecruiters:Ubisoft2, https://jobs.smartrecruiters.com/BoschGroup | api.smartrecruiters.com/v1/companies/{id}/postings (+ detail) |
| Recruitee | recruitee:deephealth, https://deephealth.recruitee.com | {slug}.recruitee.com/api/offers/ |
| Personio | personio:demo, https://demo.jobs.personio.de | {slug}.jobs.personio.de/xml (also .com) |
| Teamtailor | teamtailor:career, https://career.teamtailor.com, any Teamtailor careers domain | {host}/jobs.rss |
You can also pass a plain company careers URL: the actor looks for an embedded ATS on that page and, failing that, probes the eight ATSs with the company's domain name (e.g. https://discord.com/careers → Greenhouse discord). This is best effort — when the careers page is a JavaScript app that hides its ATS, pass ats:slug explicitly (the slug is visible in the URL of any job on the careers site).
Typical uses: job-board aggregation, recruiting and sales lead lists (who is hiring for what), competitor hiring intelligence, salary research, alerting on new roles at target companies, feeding LLM pipelines. Schedule the actor and deduplicate on url to get only new postings.
What you get
One row per job posting (type: "job"), same fields for every ATS:
| field | description |
|---|---|
source, board, company | ATS name, board slug, company name (Lever, Ashby and Recruitee APIs do not expose a display name → the slug is used) |
id, title, url, apply_url | ATS job id, title, public job page, direct apply link |
location, locations, country | Primary location string, all listed offices/locations, country when the ATS provides it |
remote, workplace_type | remote is the ATS flag when it exists, otherwise inferred from location/title; workplace_type = remote / hybrid / onsite when known |
department, team, employment_type, seniority | As provided by the ATS (e.g. Full-Time, Mid-Senior Level) |
posted_at, updated_at | ISO 8601 timestamps |
salary_min, salary_max, salary_currency, salary_interval, salary_text | Structured pay data when the ATS exposes it (Lever, Ashby, Recruitee, Personio); otherwise salary_text is a best-effort extraction of a pay range found in the description (e.g. $180,000 to $202,000) |
language, tags | Posting language; ATS metadata such as function, industry, education, custom fields |
description | Full job description as clean plain text (headings and - bullets kept) — optional description_html |
Boards that cannot be read (unknown slug, private board, unsupported ATS) produce a type: "error" row with the reason — free — and the run continues.
Export as JSON, CSV or Excel, or push rows to Google Sheets, Make, Zapier, webhooks or your code via the Apify API.
Input
| field | default | meaning |
|---|---|---|
boards | — | ats:slug entries and/or URLs (see table above) |
keywords | — | keep jobs whose title/description/department/team contains one of these |
excludeKeywords | — | drop jobs whose title/description contains one of these |
locations | — | keep jobs whose location/offices/country contains one of these strings |
departments | — | keep jobs whose department/team contains one of these strings |
remoteOnly | false | keep only remote jobs |
postedSince | — | keep jobs published on/after YYYY-MM-DD |
includeDescription | true | store the plain-text description |
includeHtml | false | also store description_html |
maxItemsPerBoard | 500 | cap per board (after filters) |
maxItems | 5000 | cap for the whole run |
Example — remote engineering roles at four companies, posted this month:
{"boards": ["greenhouse:discord", "lever:palantir", "ashby:openai", "https://jobs.smartrecruiters.com/Ubisoft2"],"keywords": ["engineer", "developer"],"remoteOnly": true,"postedSince": "2026-08-01","maxItemsPerBoard": 200}
Pricing
Pay per event: $0.001 per stored job ($1 per 1,000 jobs). Only rows actually written to the dataset are charged; error rows and filtered-out jobs are free. Apify platform usage (a few seconds of compute per board) is billed separately by Apify.
Limitations — please read
- Only companies on the eight ATSs above; Workday, SuccessFactors, iCIMS, Taleo, BambooHR and custom career sites are not supported (they have no comparable public feed).
- The ATS APIs return currently open postings only — no history, no closed jobs, no applicant data.
companyis the slug for Lever, Ashby and Recruitee (their public APIs carry no company display name).- For Workable and SmartRecruiters descriptions require one extra request per job (≈2 requests/second, polite rate). Keyword filters for these two match title/department/location before descriptions are fetched.
- Salary: structured only where the ATS provides it;
salary_textextraction from free text is heuristic and may miss or mis-read ranges. - Careers-URL auto-detection cannot see inside JavaScript-only careers pages; use
ats:slugthere. - Greenhouse boards on the EU data centre and Lever EU boards are supported via their
.euURLs; SmartRecruiters returns "no public postings" for unknown identifiers (the API does not distinguish).
Not affiliated with any of the ATS vendors. Uses only their public, unauthenticated job-board endpoints intended for careers-page integrations.