ATS Jobs Scraper — Greenhouse, Lever, Ashby, Workday & More avatar

ATS Jobs Scraper — Greenhouse, Lever, Ashby, Workday & More

Pricing

Pay per event

Go to Apify Store
ATS Jobs Scraper — Greenhouse, Lever, Ashby, Workday & More

ATS Jobs Scraper — Greenhouse, Lever, Ashby, Workday & More

Normalized job listings from official public ATS endpoints — Greenhouse, Lever, Ashby, SmartRecruiters, Workday. One schema, per-company inputs, contact-scrubbed company-level data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Adam C

Adam C

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

ATS Jobs Scraper — Greenhouse, Lever, Ashby, Workday & SmartRecruiters

Scrape job listings from any company's career page — across eight major ATS platforms — into one clean, normalized JSON feed. Give it company names; get back every open role with title, location, department, employment type, posting date, salary where published, and the full description.

Job titleCompanyATSLocationCompensationPosted
Account Executive – ItalygitlabgreenhouseRemote, Italy2026-08-12
Android Engineer – AdvertisingspotifyleverNew York, NY2026-08-20
Senior Fullstack EngineerlinearashbyEurope (Remote)2026-08-25
Software Engineer – HardwarenvidiaworkdayBengaluru, India2026-08-27

Why this scraper

Most job scrapers parse career-page HTML that breaks whenever a site updates. This actor reads each ATS's public JSON endpoints — the same data the career pages themselves load — so results are complete, fast, and stable:

  • Eight ATS platforms, one schema — Greenhouse, Lever, Ashby, SmartRecruiters, Workday, Recruitee, Workable, and Personio, with identical output fields across all of them
  • Official public APIs for Greenhouse, Lever, Ashby, and SmartRecruiters — no brittle HTML parsing
  • Per-vendor isolation — if one ATS changes, every other vendor in your run still delivers
  • Automated health checks — every vendor adapter is exercised against live boards on a continuous schedule
  • Company-level data only — stray recruiter emails and phone numbers are automatically scrubbed from descriptions

What you get

One clean record per job:

{
"id": "greenhouse:gitlab:8503792002",
"vendor": "greenhouse",
"company": "gitlab",
"title": "Account Executive - Italy",
"absoluteUrl": "https://job-boards.greenhouse.io/gitlab/jobs/8503792002",
"location": "Remote, Italy",
"isRemote": true,
"department": "Sales",
"employmentType": "Full-time",
"postedAt": "2026-08-12T09:14:02.000Z",
"updatedAt": "2026-08-27T16:41:18.000Z",
"compensation": "EUR 68000–102000 per year",
"descriptionHtml": "<p>…full formatted description…</p>",
"descriptionText": "…plain-text description…"
}

How to scrape jobs from Greenhouse, Lever, Ashby, SmartRecruiters or Workday

List companies as vendor + identifier pairs, or paste career-page URLs (auto-detected):

{
"sources": [
{ "vendor": "greenhouse", "company": "gitlab" },
{ "vendor": "lever", "company": "spotify" },
{ "vendor": "ashby", "company": "linear" },
{ "vendor": "smartrecruiters", "company": "Devoteam" },
{ "url": "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite" },
{ "url": "https://jobs.lever.co/anthropic" }
],
"maxJobsPerSource": 500,
"includeDescription": true
}

Finding the identifier: it's the slug in the company's career-page URL — boards.greenhouse.io/{company}, jobs.lever.co/{company}, jobs.ashbyhq.com/{company}, careers.smartrecruiters.com/{Company}. For Workday, pass the full careers URL.

ATS coverage

ATSEndpoint typeDescriptionsSalary dataNotes
GreenhouseOfficial public API✅ Full HTML + textWhere publishedSingle-call, all jobs
LeverOfficial public API✅ Full HTML + text✅ Salary ranges where publishedRemote/hybrid/onsite normalized
AshbyOfficial public API✅ Full HTML + text✅ Structured compensation tiersMulti-location support
SmartRecruitersOfficial public API✅ Per-posting job adWhere publishedDepartment + employment type
WorkdayPublic career-site endpoints✅ Per-posting detailWhere publishedUnofficial endpoints — repaired fast when they shift
RecruiteeOfficial public API✅ Full HTML + textWhere publishedDescription + requirements
WorkablePublic widget API✅ Full HTML + textWhere publishedWidget endpoint — repaired fast when it shifts
PersonioOfficial public XML feed✅ Per-position sectionsWhere publishedEU-heavy install base

Next up on the roadmap: Teamtailor, BambooHR, Jobvite. Need one sooner? Open an issue.

Pricing

Pay only for results: about $1.20 per 1,000 jobs ($0.0012 per job + a fractional start fee) — less on paid Apify plans (down to $0.80/1,000 on higher tiers). No subscription, no minimum. Scraping 20 companies with ~2,000 total openings costs roughly $2.50.

This actor vs the alternatives

This actorSingle-ATS scrapersHTML-based job scrapers
ATS platforms in one run81varies
Workday + SmartRecruiters coveragerarelyrarely
Breaks when career-page design changesNo — JSON endpointsNoYes
Identical schema across vendorsn/a
Contact-scrubbed output
Continuous automated health checksvariesvaries

Only need one ATS? We also publish focused single-vendor actors — see the family list below; same schema, same engine.

Use cases

  • Job boards & aggregators — fresh postings straight from the source, no stale intermediary feeds
  • Talent & labor-market intelligence — track hiring by company, function, or location over time
  • Competitor hiring monitoring — see who's scaling which teams, where, this week
  • Recruiting & staffing research — full descriptions with salary data where companies publish it
  • AI agents & RAG pipelines — normalized JSON via API and MCP; this actor supports agentic payments, so AI agents can call and pay for it directly

Integrations

Run on a schedule with Apify Schedules; pipe results anywhere with webhooks or the Apify API — Google Sheets, n8n, Make, Zapier, LangChain, or your own database. AI agents can discover and run this actor through the Apify MCP server.

FAQ

How fresh is the data? Live — every run reads each company's current public listings at that moment.

How many companies can I scrape in one run? Hundreds. Sources run concurrently with per-source isolation, so one failing company never blocks the rest.

Do I get full job descriptions? Yes — formatted HTML and plain text, unless you set includeDescription: false for a faster, lighter run.

Does it include salaries? Wherever the company publishes them: Lever salary ranges, Ashby compensation tiers, and pay data embedded by Greenhouse/SmartRecruiters/Workday employers.

Can it monitor for new jobs? Yes — schedule it hourly or daily and diff against your previous dataset, or trigger webhooks on each run.

Is this legal and ethical? The actor reads public, logged-out job-board data — exactly what each company chooses to publish to attract applicants — via official or public endpoints, with no login, no circumvention. Recruiter contact details embedded in descriptions are automatically removed; output is company-level data only.

Why did a Workday or Workable company return fewer fields? Workday and Workable are the two vendors without officially documented public APIs; we use the same public endpoints their career sites load, and repair fast when they shift. The other six vendors are official public APIs.

A company I need doesn't work? Check the identifier matches the career-page URL slug. Still stuck? Open an issue on this actor — it goes straight to the maintainer.

More data actors from ActorWorks

Jobs & hiring

Web & market intelligence

Greenhouse, Lever, Ashby, SmartRecruiters, Workday and all company names are trademarks of their respective owners. This actor is an independent tool and is not affiliated with or endorsed by any of them.