ATS Jobs Scraper: Greenhouse, Lever, Ashby, Workday & 5 more
Pricing
from $2.00 / 1,000 job results
ATS Jobs Scraper: Greenhouse, Lever, Ashby, Workday & 5 more
Get every open job from career sites on Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio & Teamtailor. Auto-detects the ATS, one clean schema, keyword/location/remote filters, and an only-new-jobs monitoring mode.
Pricing
from $2.00 / 1,000 job results
Rating
0.0
(0)
Developer
Gabor Sziladi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
ATS Jobs Scraper: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio & Teamtailor
Get every open job from company career sites in one clean, normalised dataset. Paste career-page URLs or company names and the Actor detects the applicant tracking system (ATS), calls its official public job-board API or feed, and returns one record per job with title, department, locations, remote flag, employment type, dates, apply link, full description and salary (when the company publishes it).
Turn on Only new jobs and schedule it: every run returns just the jobs posted since the last run, and you pay only for those.
- ✅ 9 ATS platforms, including the EU ones (Personio, Recruitee, Teamtailor) that most job scrapers skip
- ✅ Auto-detection from a board URL, a company's own careers page, or a bare company slug
- ✅ One schema for every ATS, with ISO dates, a
remoteflag andworkplace_type(remote / hybrid / onsite) - ✅ Keyword, location, remote, "posted within N days" and "only with salary" filters
- ✅ Monitoring mode that remembers seen jobs per company
- ✅ Fast and reliable: official JSON/XML endpoints, no browser, no proxies, no logins. Hundreds of jobs in seconds.
- ✅ Fault-tolerant: a broken or unknown company is logged and reported, and the rest of the run continues
- 💰 $2 per 1,000 jobs, plus $0.002 per run
Supported ATS platforms
| ATS | What to paste (examples) | Description | Salary |
|---|---|---|---|
| Greenhouse | https://boards.greenhouse.io/airbnb, https://job-boards.greenhouse.io/stripe, greenhouse:stripe | ✅ | – |
| Lever | https://jobs.lever.co/spotify (EU: jobs.eu.lever.co/...) | ✅ | ✅ when published |
| Ashby | https://jobs.ashbyhq.com/linear | ✅ | ✅ when published |
| SmartRecruiters | https://jobs.smartrecruiters.com/Canva | ✅ (1 extra request per job) | – |
| Workable | https://apply.workable.com/huggingface | ✅ | – |
| Recruitee | https://bunq.recruitee.com | ✅ | ✅ when published |
| Personio | https://1komma5grad.jobs.personio.de | ✅ | – |
| Teamtailor | https://polestar.teamtailor.com or a custom Teamtailor career domain | ✅ | – |
| Workday | https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | ✅ (1 extra request per job) | – |
Also accepted:
- The company's own careers page (e.g.
https://www.figma.com/careers/). The Actor looks for an embedded Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee, Personio, Teamtailor or Workday board and uses it. - A bare slug such as
stripe. The Actor tries Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters, Personio and Teamtailor in turn. Workday always needs the full URL. - An explicit
ats:slug, such aslever:spotifyorpersonio:1komma5grad.
How to use it
- Add one company per line in Companies.
- Optionally set keyword, location, remote or date filters.
- Click Start. Jobs appear in the Dataset tab, and a per-company summary (jobs found, jobs written, errors) is saved to the
OUTPUTrecord of the key-value store. - To monitor companies, enable Only new jobs and add a schedule (e.g. daily). Connect a webhook, Slack, Google Sheets, Zapier or Make integration to get alerts.
Input example
{"companies": ["https://boards.greenhouse.io/airbnb","https://jobs.lever.co/spotify","https://jobs.ashbyhq.com/ramp","https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite","https://1komma5grad.jobs.personio.de","stripe"],"keywords": ["engineer", "data scientist"],"excludeKeywords": ["intern"],"locations": ["Germany", "Poland", "remote"],"postedWithinDays": 30,"onlyWithSalary": false,"maxJobsPerCompany": 100,"includeDescription": true,"onlyNewJobs": true,"stateStoreName": "my-engineering-monitor"}
| Field | Meaning |
|---|---|
companies | Board URLs, careers pages, slugs or ats:slug (required) |
ats | ATS to use for bare slugs (default: auto-detect) |
keywords / excludeKeywords | Whole-word, case-insensitive match on title, department and team (exclude checks the title only) |
locations | Substring match on the location text; include remote to also keep remote jobs |
remoteOnly | Only remote jobs |
onlyWithSalary | Only jobs with a published pay range (Ashby, Lever, Recruitee) |
postedWithinDays | Only jobs published in the last N days |
maxJobsPerCompany | Cap per company (0 = all) |
includeDescription / includeDescriptionHtml | Plain-text description (on by default) and, optionally, the original HTML |
onlyNewJobs / stateStoreName | Monitoring mode and the named key-value store that remembers seen job IDs |
Output example
A real record (Ashby, Ramp), with the description shortened:
{"company": "Ramp","company_slug": "ramp","ats": "ashby","job_id": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","requisition_id": null,"title": "Security Engineer, Cloud","department": "Engineering","team": "Backend","location": "New York, NY (HQ); Remote (Canada); Remote (US); Miami, FL","locations": ["New York, NY (HQ)","Remote (Canada)","Remote (US)","Miami, FL"],"remote": true,"workplace_type": "hybrid","employment_type": "FullTime","posted_at": "2026-04-07T17:12:35Z","updated_at": null,"salary": {"min": 211400,"max": 290600,"currency": "USD","period": "1 YEAR","text": "$211.4K - $290.6K"},"job_url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","apply_url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application","description_text": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams, embedded in the transaction flow of every dollar a business spends. We automate how over $200B in annualized spend flows in and…","description_html": null,"source_input": "https://jobs.ashbyhq.com/ramp","scraped_at": "2026-10-21T14:11:50Z"}
Every record has the same fields: company, company_slug, ats, job_id, requisition_id, title, department, team, location, locations[], remote, workplace_type, employment_type, posted_at, updated_at, salary {min, max, currency, period, text}, job_url, apply_url, description_text, description_html, source_input, scraped_at. Fields the ATS does not publish are null.
You can download the dataset as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.
Run summary (key-value store OUTPUT)
{"companies_total": 3, "companies_succeeded": 2, "companies_failed": 1, "jobs_output": 221,"companies": [{"input": "https://boards.greenhouse.io/airbnb", "ats": "greenhouse", "status": "ok", "jobs_found": 192, "jobs_output": 192},{"input": "https://jobs.lever.co/spotify", "ats": "lever", "status": "ok", "jobs_found": 79, "jobs_output": 29},{"input": "greenhouse:doesnotexist", "ats": "greenhouse", "status": "error", "error": "CompanyNotFound: Greenhouse board 'doesnotexist' not found"}],"errors": [{"input": "greenhouse:doesnotexist", "ats": "greenhouse", "error": "CompanyNotFound: ..."}]}
Pricing
Pay per event, no subscription:
| Event | Price |
|---|---|
| Job result (one job in the dataset) | $0.002 (= $2 per 1,000 jobs) |
| Actor start (per run, up to 1 GB memory) | $0.002 |
Examples: 4 companies with 300 jobs in total cost about $0.60 ($0.602 including the start fee). A daily monitor of 50 companies in Only new jobs mode costs $0.002 per run plus $0.002 per new job; with 20 new jobs a day that is about $0.04 a day. Errors and skipped companies are never charged. You can set a maximum cost per run, and the Actor stops cleanly when that limit is reached.
Use cases
- Job boards and aggregators: build a niche board (remote, climate, AI, EU startups) from a list of employers.
- Recruiting and sales intelligence: see which target accounts are hiring, for which teams and where. Hiring is a strong buying signal.
- Job seekers and career coaches: get alerts when your dream companies post a matching role.
- Market and labour research: track hiring volume, locations, remote share and salary ranges over time.
- AI agents and RAG: clean, structured job data with plain-text descriptions, ready for LLMs.
FAQ
Is this legal? The Actor only reads the public job-board endpoints that ATS vendors provide so that companies' jobs can be shown on career sites and job boards (for example the Greenhouse Job Board API, the Lever Postings API, the Ashby Job Posting API and the Personio XML feed). It needs no login and collects no personal data, apart from what employers put in their public job ads. You are responsible for how you use the data.
How do I find a company's ATS? You don't need to. Paste the careers page URL or the company name, and the Actor detects it. If detection fails, open any job on the company's site and paste the URL of that page (e.g. jobs.lever.co/...).
Why does Workday need a URL? Each Workday customer has its own host and site name ({company}.wd5.myworkdayjobs.com/{Site}), which can't be guessed from the company name.
Workday returns at most about 2,000 jobs. Workday's search caps very large tenants at around 2,000 results. For very large employers, add keywords: for Workday they are also sent as server-side searches, so you get the relevant jobs well beyond the cap.
How does "Only new jobs" work? For each company, the Actor stores the IDs of the jobs it has already delivered in a named key-value store (stateStoreName). Later runs output only jobs whose IDs aren't stored. Closed jobs are removed from the state automatically. The first run outputs everything that matches. Use a different store name for each independent monitor. Jobs not delivered because of maxJobsPerCompany or a cost limit are delivered on the next run.
One company failed. Did the whole run fail? No. Each company is processed independently. Failures are logged and listed in OUTPUT.errors, and the run still succeeds.
How fast is it? Most boards take under a second. Greenhouse, Lever, Ashby, Workable, Recruitee, Personio and Teamtailor need one request per company. SmartRecruiters and Workday need one extra request per job for the description, so a 500-job Workday site takes a minute or two. Requests are rate-limited per host to stay polite.
My ATS isn't supported. Open an issue on the Actor page with an example careers URL. We add new ATS platforms based on demand.