ATS Job Scraper – Greenhouse, Lever, Workday & More avatar

ATS Job Scraper – Greenhouse, Lever, Workday & More

Pricing

from $1.70 / 1,000 job postings

Go to Apify Store
ATS Job Scraper – Greenhouse, Lever, Workday & More

ATS Job Scraper – Greenhouse, Lever, Workday & More

Multi-ATS job scraper: live job postings from career sites on Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, and BambooHR. Enter company names or career-page URLs, auto-detect the ATS, and get clean structured job data.

Pricing

from $1.70 / 1,000 job postings

Rating

0.0

(0)

Developer

Saulius Saulenas

Saulius Saulenas

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

16 days ago

Last modified

Share

ATS Job Scraper — Greenhouse, Lever, Ashby, Workday, Workable & more

Get live job postings straight from company career sites — not from a stale database, not from LinkedIn. Give this Actor a list of company names (or career-page URLs) and it automatically finds each company's job board across 8 ATS platforms and returns every open position as clean, structured data:

PlatformDetectionDescriptionsTypical users
Greenhouse✅ automatic✅ includedStripe, Duolingo, Figma…
Lever✅ automatic✅ includedSpotify, Palantir…
Ashby✅ automatic✅ included (+ salary ranges)OpenAI, Linear, Ramp…
Workday✅ auto for many tenants (URL always works)✅ includedNVIDIA and much of the Fortune 500
Workable✅ automatic✅ includedThousands of SMBs
SmartRecruiters✅ automatic✅ includedBosch, Visa, IKEA…
Recruitee✅ automatic✅ includedEuropean scale-ups
BambooHR✅ automatic✅ includedUS SMBs

Workday and Workable coverage is what sets this Actor apart — most cheap ATS scrapers skip the platform where most enterprise jobs actually live.

Why teams use it

  • Recruiting & talent intelligence — monitor competitors' hiring by team, seniority, location.
  • Job boards & aggregators — fill your board with fresh, deduplicated postings straight from the source.
  • Sales & lead generation — a company hiring "Head of RevOps" or "Kubernetes Engineer" is a buying signal. Track your target-account list daily and route new postings to your CRM.
  • Market research — salary transparency (Ashby publishes ranges), remote-work trends, hiring velocity.

What makes it different

  1. Company names in, jobs out. No slugs, no URLs, no homework. "Stripe" is enough — the Actor probes all 8 platforms and finds the board. (URLs work too, in any format, including plain careers pages which get sniffed for embedded boards.)
  2. Monitoring mode (onlyNewJobs): schedule the Actor daily and receive each job exactly once, ever — only postings it hasn't returned before. You pay per new job, so a daily run over a 500-company watchlist costs cents on a quiet day.
  3. Honest data. Fields the source platform doesn't expose (e.g. true posting dates on SmartRecruiters) come back as null with the raw value preserved — never guessed.
  4. No proxies, no per-seat SaaS fee, no rate-limit drama. These are the same public APIs that power the companies' own career pages.

Input

{
"companies": ["Stripe", "Duolingo", "OpenAI", "Bosch Group"],
"careerPageUrls": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],
"titleKeywords": ["engineer", "developer"],
"locationKeywords": ["Remote", "London"],
"postedAfter": "7d",
"onlyNewJobs": false,
"includeDescriptions": true,
"maxJobsPerCompany": 500,
"maxTotalJobs": 5000
}

Everything except companies/careerPageUrls is optional. Filters: titleKeywords, titleExcludeKeywords, locationKeywords, remoteOnly, postedAfter (YYYY-MM-DD or 7d/24h/2w).

Output

One record per job posting:

{
"id": "ashby:openai:8f2a…",
"platform": "ashby",
"companyName": "OpenAI",
"title": "Software Engineer, Applied AI",
"url": "https://jobs.ashbyhq.com/openai/8f2a…",
"applyUrl": "https://jobs.ashbyhq.com/openai/8f2a…/application",
"location": "San Francisco",
"locations": ["San Francisco", "Remote"],
"remote": true,
"workplaceType": "remote",
"department": "Engineering",
"team": "Applied AI",
"employmentType": "FullTime",
"salaryMin": 257000,
"salaryMax": 335000,
"salaryCurrency": "USD",
"salaryInterval": "year",
"salaryRaw": "$257K – $335K",
"postedAt": "2026-07-30T18:04:11.000Z",
"descriptionHtml": "<p>…full posting…</p>",
"descriptionText": "…plain-text version…",
"matchConfidence": "verified",
"scrapedAt": "2026-08-11T09:12:44.000Z"
}

matchConfidence tells you how the company was matched: url (you gave the board URL), verified (the board's own API confirmed the company name), exact-slug (you typed the exact board slug), or guessed (slug derived from the company name and the platform doesn't expose a name to verify against — for guessed boards companyName is the board slug, never your input text, so a mismatched board can't masquerade as your target company).

Export as JSON, CSV, Excel or feed it to the Apify API, n8n, Make, Zapier, or your warehouse like any Apify dataset. A per-company breakdown (which platform was detected, jobs found, companies with no board) is saved to the SUMMARY key of the run's key-value store.

Monitoring mode — get each job once, pay for it once

Set onlyNewJobs: true and set a fixed monitorId (e.g. "my-watchlist"). The Actor remembers every job it has already returned for that monitor — durably, updated as the run progresses — and outputs only new postings on subsequent runs. Combine with Apify Schedules for a zero-maintenance "new jobs at my target companies" feed.

Two things worth knowing:

  • If you don't set monitorId, one is derived from your company list — which means editing the list starts a fresh memory and re-delivers currently open jobs. A fixed monitorId keeps the memory when your watchlist evolves (the run log warns about this too).
  • Avoid running two monitors with the same monitorId at the same instant; overlapping runs may deliver the same brand-new job twice.

Pricing

$2.00 per 1,000 job postings returned (from $1.70 per 1,000 with paid-plan Store discounts), plus a symbolic $0.00005 per Actor start. Platform usage (compute, storage) is included — you pay only for the results. Cheaper single-platform scrapers exist, but $2.00 buys all 8 ATS platforms in one schema — including Workday, the one most scrapers can't handle.

  • 5 companies, ~150 jobs → about $0.30
  • Daily monitoring of 50 companies, ~40 new jobs/day → about $0.08/day
  • Full pull of a 5,000-job enterprise watchlist → about $10.00

maxJobsPerCompany (default 500) and maxTotalJobs (default 5,000) cap every run, and Apify's per-run cost limit is always enforced — you can never be surprised by a bill.

Good to know

  • Descriptions on Workday, SmartRecruiters, Workable and BambooHR require one extra request per job (that's how those platforms work). Runs are still fast; set includeDescriptions: false if you only need titles/locations/links and want maximum speed.
  • Workday auto-detection finds most tenants from the company name alone (it discovers the career-site token automatically). For unusual setups, paste the career-site URL — the one containing myworkdayjobs.com — and it always works.
  • posting dates: postedAt is only filled when the platform exposes a real date. SmartRecruiters only publishes a "released" timestamp that refreshes constantly, so SR jobs have postedAt: null and the raw timestamp in postedAtRaw. Workday exposes relative dates ("Posted 5 Days Ago") which are converted to approximate dates and kept raw in postedAtRaw.
  • A company isn't found? The summary lists exactly what was tried. Companies whose careers run on unsupported systems (e.g. iCIMS, Taleo, Phenom) won't be detected — tell us which platform you're missing and it moves up the roadmap.
  • Pasting a single job's URL (e.g. boards.greenhouse.io/acme/jobs/12345) scrapes that company's whole board — board URLs and job URLs share the same slug. Use titleKeywords to narrow the output if you only need certain roles.
  • EU-hosted boards (boards.eu.greenhouse.io, jobs.eu.lever.co) are fully supported.
  • Is this legal? The Actor reads the same public, unauthenticated APIs that render each company's own public careers page — no logins, no personal data, only public job advertisements.

FAQ

Do I need an API key or account on any ATS? No. The Actor reads the same public endpoints that power each company's own careers page.

How do I find a company's board token / slug? You usually don't need to — enter the company name and the ATS is auto-detected. If detection misses, paste the careers-page URL (e.g. boards.greenhouse.io/acme, jobs.lever.co/acme, acme.wd5.myworkdayjobs.com/...).

Which platforms are auto-detected? All eight: Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, and BambooHR.

Can I export to CSV or Excel? Yes — every run's dataset exports to CSV, Excel, JSON, or XML with one click (or via API).

Can I monitor for new jobs only? Yes — see Monitoring mode above; each job is returned and charged only once per monitor.

Works with AI agents & automation tools

This Actor is compatible with the Apify MCP server, so AI agents (Claude, ChatGPT, LangChain, and other MCP clients) can discover and run it autonomously. It also plugs into n8n, Make, and Zapier via the Apify integration — paste the Actor ID sauliusautomatesit/ats-job-scraper into the Apify node to build hiring-monitor workflows.

Roadmap

Personio, Teamtailor, iCIMS, JazzHR adapters · salary extraction from description text · webhook alerts. Missing something? Open an issue on the Actor's page.

Support & feedback

Issues are answered within 24 hours on the Actor's Issues tab. If this Actor saves you time, a short review on the Reviews tab helps other people find it.