Job Scraper — Greenhouse, Lever, Ashby, Workday +5 ATS
Pricing
from $2.00 / 1,000 results
Job Scraper — Greenhouse, Lever, Ashby, Workday +5 ATS
Scrape open jobs straight from a company's own ATS — Greenhouse, Lever, Ashby, SmartRecruiters, Workday, BambooHR, Personio, Recruitee, Breezy HR — via public APIs. No LinkedIn/Indeed, no anti-bot, no login. Auto-detect + monitor mode for new postings.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Ponderable Hydrometer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 days ago
Last modified
Categories
Share
Multi-ATS Job Scraper — Greenhouse, Lever, Ashby, Workday & more
Jobs straight from the company's own ATS — no LinkedIn or Indeed middleman, no anti-bot walls, no "under maintenance" breakage. Give it a company name or a careers-board URL and it auto-detects the applicant tracking system (ATS) and returns clean, structured, real-time jobs from the source of truth:
- Greenhouse (
boards.greenhouse.io/...) - Lever (
jobs.lever.co/...) - Ashby (
jobs.ashbyhq.com/...) - SmartRecruiters (
jobs.smartrecruiters.com/...) - Workday (
...myworkdayjobs.com/...— pass the full board URL) - BambooHR (
...bamboohr.com/careers) - Personio (
...jobs.personio.com) - Recruitee (
...recruitee.com) - Breezy HR (
...breezy.hr— job listings only, no descriptions)
Why this vs LinkedIn / Indeed scrapers
LinkedIn and Indeed scrapers fight aggressive anti-bot systems — they break, get rate-limited, and go "under maintenance" exactly when you need them. This actor reads each ATS's public JSON API — the same endpoint the company's own careers page uses — so it is structurally reliable: no proxies, no login, no headless browser, no CAPTCHAs to break. You get the company's live openings direct from the source, usually fresher than they appear on aggregators.
- Direct from the ATS — the source of truth, not a re-scraped aggregator copy.
- No anti-bot fragility — public APIs, so runs are fast, cheap, and don't silently break.
- One actor, nine ATS platforms — stop juggling a different scraper per board.
- Auto-detection — pass a bare company slug (
stripe,notion) or a full board URL. - Real-time hiring-intent signal — a company opening roles is a company buying; catch it first.
What you get
- Job identity:
title,department,location,remoteflag,employmentType,postedDate. - Apply data: canonical
applyUrlandjobId. - Full description in both HTML and plain text — ready for search, RAG, or LLM pipelines.
- Source
companyand detectedatson every row. - Monitor mode: run on a schedule and get only newly-posted jobs — a clean hiring signal.
Who it's for
Recruiters and sourcers, sales / lead-gen teams (a company hiring is a company buying), job-board aggregators, HR-tech and ATS-migration tools, VC and market-intelligence researchers, and anyone building a jobs dataset.
Input
| Field | Type | Default | Description |
|---|---|---|---|
companies | array | — (required) | Company slugs or job-board URLs, e.g. ["stripe", "https://jobs.lever.co/palantir"] |
atsHint | string | auto | Force an ATS: greenhouse, lever, ashby, smartrecruiters, workday, bamboohr, personio, or auto |
includeDescription | boolean | true | Include full HTML + plain-text job description |
monitorMode | boolean | false | Only output jobs not seen in previous runs |
maxJobsPerCompany | integer | 2000 | Safety cap per company |
{"companies": ["stripe", "gopuff", "https://jobs.ashbyhq.com/openai"],"atsHint": "auto","includeDescription": true,"monitorMode": false,"maxJobsPerCompany": 2000}
Output
One dataset item per open job:
{"company": "stripe","ats": "greenhouse","title": "Account Executive, AI Sales","department": "AI GTM Strategy & Solutions","location": "San Francisco, CA","remote": false,"employmentType": "Full-time","postedDate": "2026-06-26T17:05:44-04:00","applyUrl": "https://stripe.com/jobs/search?gh_jid=7954688","jobId": "7954688","descriptionHtml": "<p>...</p>","descriptionText": "Who we are ...","status": "ok"}
Companies that can't be resolved are not written to the dataset (so you never pay for an empty
result) — they are reported in the run log and in the run's SUMMARY record, with a status of
ats_not_found, error, or invalid_input. Nothing fails silently.
How to find a company's board
- Greenhouse: the token in
boards.greenhouse.io/<token>(orjob-boards.greenhouse.io/<token>). - Lever: the slug in
jobs.lever.co/<slug>. - Ashby: the name in
jobs.ashbyhq.com/<name>. - SmartRecruiters: the company id in
jobs.smartrecruiters.com/<companyId>(case-sensitive, e.g.BoschGroup). - Workday: pass the full board URL, e.g.
https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite(a bare name isn't enough — Workday needs the datacenter and site). - BambooHR: the subdomain in
<company>.bamboohr.com. - Personio: the subdomain in
<company>.jobs.personio.com.
Or just pass the plain company name and let auto-detection try each platform.
Use from an AI agent (MCP)
This actor works as a tool for AI agents through the Model Context Protocol. Because it takes a plain company name or URL and returns structured jobs, it's a natural fit for assistants doing recruiting, lead research, or jobs-data collection.
- Hosted: point your MCP client at Apify's MCP server (
https://mcp.apify.com) and enable the actorponderable_hydrometer/multi-ats-jobs. - Local:
$APIFY_TOKEN=<your-token> npx -y @apify/actors-mcp-server --actors ponderable_hydrometer/multi-ats-jobs
Related actors
Doing sales / recruiting intelligence? Pair this with our Company Hiring Signals actor (turns raw openings into hiring-intent signals) and the Website Tech Stack Detector for technographic lead enrichment.
Notes & limits
- Seven ATS platforms are supported today: Greenhouse, Lever, Ashby, SmartRecruiters, Workday, BambooHR and Personio (Workable, Recruitee and others are on the roadmap).
- Workday is detected only from a full board URL — its API needs the datacenter and site, which can't be guessed from a company name. Fetching descriptions does one extra request per job, so large Workday tenants are slower; lower
maxJobsPerCompanyor setincludeDescription: falsefor speed. - Personio descriptions come from its public XML feed, which many companies leave empty; the core fields (title, location, department, type, date) are always returned.
- Auto-detection accepts a match only when a platform returns at least one job, which avoids false positives — if a company has zero open roles, pass the explicit board URL to confirm it.
- Data comes from public job-board APIs; you are responsible for using the output in line with your own legal and compliance requirements.