Greenhouse, Lever & Ashby Job Scraper: 8 ATS in One Feed
Pricing
Pay per event
Greenhouse, Lever & Ashby Job Scraper: 8 ATS in One Feed
Scrape jobs from Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio and Workday in one normalized feed. Search 181 well-known companies by keyword with presets, or paste your own. Salary, remote, only-new alerts. $1.20 per 1,000 jobs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Rod Services
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 days ago
Last modified
Categories
Share
Greenhouse, Lever and Ashby job scraper with Workable, SmartRecruiters, Recruitee, Personio and Workday in the same normalized feed. Search jobs by keyword across 181 well-known companies with one preset, or paste your own company list. Salary, remote flag and only-new monitoring. $1.20 per 1,000 jobs, no API key.
What you get
- One feed from 8 ATS platforms: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio and Workday. Every job has the same fields.
- Company presets. Pick AI, developer tools, fintech, European startups or Nordic tech, add a keyword such as
engineer, and get matching jobs without building a company list. - Your own companies too. Paste board URLs,
ats:slugshorthands, careers pages or plain domains. The ATS is detected automatically. - Salary ranges when the employer publishes them, remote and hybrid flags, departments, teams, locations and posting dates.
- Full job descriptions as clean text, optionally as HTML.
- Only-new mode for daily or hourly alerts: you get and pay for new jobs only.
- Polite and key-free. It reads the public job board APIs the employers publish. No login, no proxy.
Company presets
| Preset | Companies | Examples |
|---|---|---|
ai | 42 | Anthropic, OpenAI, Scale AI, Databricks, Hugging Face, Cohere, Perplexity, ElevenLabs |
devtools | 53 | GitLab, Vercel, Datadog, Cloudflare, MongoDB, Elastic, Supabase, Figma, Notion |
fintech | 43 | Stripe, Plaid, Brex, Ramp, Mercury, Monzo, N26, Robinhood, Coinbase, Adyen |
eu-startups | 34 | Celonis, GetYourGuide, Delivery Hero, HelloFresh, Doctolib, Alan, Back Market |
nordics | 17 | Spotify, Wolt, Supercell, Mentimeter, Truecaller, Smartly.io, Oura, Pleo |
all | 181 | Every company above, without duplicates |
Every preset board was checked against its ATS API on 2026-10-05. Boards can disappear when a company changes ATS. Such boards show up as not-found in SUMMARY and are free.
Quick start
- Open the Input tab. The prefill searches the
aipreset forengineerand stops at 50 jobs. - Change the preset or the keywords, or paste your own companies into Companies.
- Click Start. A preset search usually finishes in under a minute.
- Open the Output tab and export to CSV, Excel or JSON, or read the dataset through the API.
For alerts, turn on Only new jobs since last run and add a daily schedule. Each run returns only jobs that were not delivered before.
Input example
{"presets": ["fintech", "eu-startups"],"companies": ["https://boards.greenhouse.io/gitlab", "lever:spotify", "notion.so", "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],"keywords": ["engineer", "data"],"locations": ["remote", "Germany"],"postedWithinDays": 14,"maxJobs": 500,"onlyNew": true}
| Field | What it does |
|---|---|
presets | Curated company lists: ai, devtools, fintech, eu-startups, nordics or all. |
companies | Your own board URLs, ats:slug, careers page URLs or domains. Combined with presets. |
keywords | Keep jobs whose title, department or team contains any word. Short words like AI or QA match whole words only. |
excludeKeywords | Drop jobs whose title contains any word, for example intern or director. |
locations | Keep jobs whose location contains any text. Add remote to include remote jobs. |
departments | Keep jobs in matching departments or teams. |
remoteOnly | Only remote jobs. |
postedWithinDays | Only jobs first published in the last N days. |
maxJobs | Stop after this many jobs in total. 0 = no limit. |
maxJobsPerCompany | Cap per company after filters, newest first. 0 = all. |
onlyNew | Return only jobs not returned in earlier runs. Seen IDs are kept per company in a named key-value store. |
stateStoreName | Name of that store. Use one per schedule. |
includeDescription | Plain text description, on by default. |
includeDescriptionHtml | Original HTML description, off by default. |
probeSlugs | If a careers page shows no ATS link, try the domain name on each ATS (stripe.com to stripe). |
maxConcurrency | Companies processed in parallel, 5 by default. |
Output sample
One dataset item per job.
{"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","ats": "ashby","company": "Ramp","companySlug": "ramp","title": "Security Engineer, Cloud","department": "Engineering","team": "Backend","locations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],"isRemote": true,"workplaceType": "hybrid","employmentType": "full-time","salaryMin": 211400,"salaryMax": 290600,"salaryCurrency": "USD","salaryPeriod": "year","postedAt": "2026-04-07T17:12:35.753Z","updatedAt": null,"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application","jobUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","descriptionText": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams...","fetchedAt": "2026-09-27T12:11:30.391Z"}
A SUMMARY record in the key-value store lists every company with the detected ATS, board slug, detection method, job counts and errors. Two inputs that point to the same board are fetched and charged once.
Data fields
| Field | Description |
|---|---|
jobId, ats, companySlug | Stable ID per ATS board. ats + companySlug + jobId is unique. |
company | Company name from the ATS. |
title, department, team | Job title and org unit. |
locations[] | All locations. |
isRemote, workplaceType | Remote flag and remote / hybrid / onsite. |
employmentType | full-time, part-time, contract, internship, or the ATS label. |
salaryMin, salaryMax, salaryCurrency, salaryPeriod | Pay range when the employer publishes it (Greenhouse, Ashby, Lever, Recruitee). |
postedAt, updatedAt | ISO 8601 dates. updatedAt only where the ATS provides it (Greenhouse, Recruitee). |
applyUrl, jobUrl | Apply form and public job page. |
descriptionText, descriptionHtml | Full description as text and optional HTML. |
fetchedAt | Time of the fetch. |
Supported ATS
| ATS | Board URL example | Salary | Remote flag | Notes |
|---|---|---|---|---|
| Greenhouse | boards.greenhouse.io/gitlab | yes, when published | from location | EU boards supported |
| Lever | jobs.lever.co/spotify | yes, when published | yes | EU boards supported |
| Ashby | jobs.ashbyhq.com/linear | yes, when published | yes | compensation tiers mapped |
| Workable | apply.workable.com/huggingface | no | yes | one request per board |
| SmartRecruiters | careers.smartrecruiters.com/BoschGroup | no | yes | description needs one request per job |
| Recruitee | bunq.recruitee.com | yes, when published | yes | |
| Personio | holidu.jobs.personio.de | no | from office name | XML feed must be enabled by the employer |
| Workday | nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | no | from location | paste the board URL; keywords are searched on Workday first |
Workday lists only relative dates such as "Posted 3 Days Ago". Every returned Workday job gets its exact date, all locations and the description from its job page. The postedWithinDays filter runs on the list date, so it drops jobs listed as "30+ days ago". Large Workday boards list up to 2,000 jobs and take a minute or two without keywords. Teamtailor and iCIMS are not supported.
Pricing
Pay per event. Discounts apply automatically on paid Apify plans.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Job, per 1,000 | $1.20 | $1.08 | $0.96 | $0.84 |
| Company detected from a careers page or domain, each | $0.002 | $0.0018 | $0.0016 | $0.0014 |
| Run start, per run | $0.001 | $0.001 | $0.001 | $0.001 |
- Presets, board URLs and
ats:sluginputs are never charged a detection fee. - Filtered-out jobs, duplicates and companies that are not found are free.
- Comparable job APIs in the Apify Store charge about $1.50 to $12 per 1,000 jobs on the Free plan, checked on 2026-10-05.
- Set Maximum cost per run or Max jobs in total to cap spend.
Use cases
- Job boards and aggregators. Fill a niche board, for example AI jobs or remote fintech jobs, from presets and keywords.
- Hiring signals for sales. Track which companies open sales, data or security roles, and reach out while budgets are fresh.
- Recruiting and talent intelligence. Watch competitors' openings, salary ranges and locations.
- AI agents and automations. Call it through the Apify API, Make, Zapier, n8n or the Apify MCP server at
mcp.apify.com.
curl -X POST "https://api.apify.com/v2/acts/rod_analytics~multi-ats-jobs-api/run-sync-get-dataset-items" \-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" -H "Content-Type: application/json" \-d '{"presets": ["ai"], "keywords": ["engineer"], "remoteOnly": true, "maxJobs": 100}'
FAQ
Is it legal to scrape these job boards? The Actor reads only the public job board APIs that each ATS offers so employers can publish jobs on their own sites. Greenhouse states job board data is publicly available. Lever states published postings "may be scraped by third parties". No login, key or protection is bypassed. You are responsible for how you use the data.
Personal data? Recruiter names and job inbox addresses are dropped. Personal-looking email addresses inside descriptions are replaced with [email removed]. Names that employers write into description text are not removed.
Why was my company not found? The careers page may use an unsupported ATS (Teamtailor, iCIMS, SAP, own system) or load jobs only after login. Check SUMMARY. If you know the board URL, pass it directly.
Can slug guessing pick the wrong company? Rarely, two companies can share a slug. Boards whose company name clearly differs from the domain are skipped. Boards that publish no company name (some Personio, Lever and Ashby boards) can still match another company with the same name. Check companySlug and company, or pass the board URL.
What happens if my input is wrong or nothing matches? The run ends SUCCEEDED with one free help row: error, errorCode (INVALID_INPUT or NO_RESULTS), message and howToFix. Only the start fee is charged. In onlyNew mode an empty run is normal and writes no help row.
Feedback or a custom ATS? Open an issue in the Issues tab. Replies usually come within a day.