Greenhouse, Lever, Ashby & Workday Jobs Scraper – 10 ATS avatar

Greenhouse, Lever, Ashby & Workday Jobs Scraper – 10 ATS

Pricing

$1.00 / 1,000 job postings

Go to Apify Store
Greenhouse, Lever, Ashby & Workday Jobs Scraper – 10 ATS

Greenhouse, Lever, Ashby & Workday Jobs Scraper – 10 ATS

Scrape open jobs from Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor and BambooHR in one format. Paste any careers page and the ATS is detected automatically. Filter by keyword, location, remote, department and date.

Pricing

$1.00 / 1,000 job postings

Rating

0.0

(0)

Developer

Enes Bulanık

Enes Bulanık

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Scrape open jobs from Greenhouse, Lever, Ashby, Workday, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor and BambooHR in one format. Paste any careers page and the ATS is detected automatically. Filter by keyword, location, remote, department and date.

Price: $1 per 1,000 jobs. No login, no API keys, no browser. Companies that can't be detected are reported in a free status row.

What does ATS Job Scraper do?

Most companies publish their jobs through an ATS. Each ATS has its own public job-board feed with its own format. This Actor:

  • Detects the ATS from any URL you paste. It recognizes job-board URLs (jobs.lever.co/spotify), finds the ATS link, embed script or iframe on a careers page (linear.app/careers → Ashby), follows one "Careers / Jobs" link, recognizes Teamtailor and Recruitee career sites on custom domains (jobs.storytel.com), and as a last resort tries the company name on every ATS API (stripe.com/jobs → Greenhouse stripe).
  • Downloads all open jobs with pagination (Workday, SmartRecruiters, Lever and Workable boards with thousands of jobs work).
  • Normalizes everything into one flat schema: title, department, team, location(s), country, remote / hybrid / on-site, employment type, posted & updated date, job URL, apply URL, salary range (when the ATS publishes it), requisition ID and an optional plain-text description.
  • Filters by title keywords, excluded words, location, remote-only, department and "posted since" date.
  • Reports every company in a free company row: which ATS was detected and how, board URL, total / matched / saved jobs or a clear error.

Supported ATSs and data sources

ATSPublic endpoint usedSalaryRemote flagNotes
Greenhouseboards-api.greenhouse.io/v1/boards/{token}/jobs?content=true–from location textdepartments, offices, requisition ID
Leverapi.lever.co/v0/postings/{company}?mode=jsonyesyes (remote / hybrid / on-site)EU boards (jobs.eu.lever.co) supported
Ashbyapi.ashbyhq.com/posting-api/job-board/{org}?includeCompensation=trueyesyessecondary locations, team
Workableapply.workable.com/api/v3/accounts/{sub}/jobs (+ widget API)–yes
SmartRecruitersapi.smartrecruiters.com/v1/companies/{id}/postings–yesdescription via posting detail
Recruitee{sub}.recruitee.com/api/offers/ (or custom domain)yesyesrecruiter e-mails are never exported
Personio{sub}.jobs.personio.de/xml (and .com)–from office nameEnglish feed, falls back to the original language
Teamtailor{sub}.teamtailor.com/jobs.rss (or custom domain)–yes
BambooHR{sub}.bamboohr.com/careers/list + /careers/{id}/detail–yes
WorkdayPOST {tenant}.wdN.myworkdayjobs.com/wday/cxs/{tenant}/{site}/jobs + job detail–from location textexact posting date & time type from detail

Use cases

  • Job boards & aggregators – fill a niche job board (remote, AI, climate, Europe…) from hundreds of company career pages with one Actor.
  • Recruiting & sales intelligence – see who is hiring, for which teams and where; trigger outreach when a target account opens roles.
  • Market & competitor research – track hiring velocity, departments and locations of competitors over time.
  • Salary research – collect published salary ranges (Lever, Ashby, Recruitee).
  • Job seekers & alerts – run on a schedule with postedSince: "1 day" and keywords to get only new matching roles.
  • AI / LLM pipelines – clean plain-text descriptions for RAG, classification or skill extraction.

How to use

  1. Click Try for free / Start.
  2. Paste companies into Companies – careers pages, job-board URLs, ats:slug pairs or plain company names.
  3. Optionally add Job title keywords, Location contains, Remote jobs only, Department contains and Posted since.
  4. Turn on Include job description if you need the full text.
  5. Click Start and export as JSON, CSV, Excel, XML or HTML – or connect to Make, Zapier, n8n, Google Sheets, webhooks or the Apify API.

Input

FieldTypeDescription
companiesarray of stringsCareers pages or job-board URLs (https://linear.app/careers, https://jobs.lever.co/spotify, https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite), ats:slug (greenhouse:stripe, workday:nvidia.wd5/NVIDIAExternalCareerSite) or company names (Hugging Face). Empty = demo run.
keywordsarrayKeep jobs whose title contains any of these.
excludeKeywordsarrayDrop jobs whose title contains any of these.
locationsarrayKeep jobs whose location/country contains any of these (remote also matches remote jobs).
remoteOnlybooleanOnly remote jobs. includeHybrid also keeps hybrid jobs.
departmentsarrayKeep jobs whose department or team contains any of these.
postedSincestring2026-01-31 or 7 days, 2 weeks, 1 month.
includeDescriptionbooleanAdd descriptionText (HTML converted to clean text). Default false.
maxJobsPerCompanyintegerMax jobs saved per company after filters. 0 = no limit. Default 100.
companyBoardsarray of objectsFor API users: [{"ats": "lever", "slug": "spotify", "name": "Spotify"}].
guessAtsFromNamebooleanTry the company name on all ATS APIs when detection fails. Default true.
includeCompanySummarybooleanAdd a free status row per company. Default true (error rows are always added).
proxyConfigurationobjectOptional; not needed for these public APIs.

Example input:

{
"companies": [
"https://linear.app/careers",
"https://boards.greenhouse.io/stripe",
"lever:spotify",
"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
"https://jobs.storytel.com/jobs",
"Hugging Face"
],
"keywords": ["engineer"],
"excludeKeywords": ["intern"],
"remoteOnly": true,
"includeHybrid": true,
"postedSince": "30 days",
"maxJobsPerCompany": 50,
"includeDescription": true
}

Output

Every item has a type: job (charged) or company (free status row). Real sample output (description shortened):

Job (Ashby, detected from https://ramp.com/careers)

{
"type": "job",
"ats": "ashby",
"company": "Ramp",
"companySlug": "ramp",
"jobId": "4e64ab86-4e30-403b-b1b9-41dc052570ce",
"title": "Software Engineer, Frontend",
"department": "Engineering",
"team": "Frontend",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)", "Remote (Canada)", "San Francisco, CA", "Remote (US)", "Miami, FL"],
"country": "USA",
"remote": "hybrid",
"workplaceType": "hybrid",
"employmentType": "Full-time",
"postedAt": "2023-03-09T17:44:00.817Z",
"updatedAt": null,
"url": "https://jobs.ashbyhq.com/ramp/4e64ab86-4e30-403b-b1b9-41dc052570ce",
"applyUrl": "https://jobs.ashbyhq.com/ramp/4e64ab86-4e30-403b-b1b9-41dc052570ce/application",
"salaryMin": 143200,
"salaryMax": 284000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"requisitionId": null,
"descriptionText": "About Ramp\n\nRamp is building the smart infrastructure for finance teams... \n\nWhat You’ll Do\n• Build!\n• Design performant, beautiful, and usable interfaces\n...",
"sourceInput": "https://ramp.com/careers",
"scrapedAt": "2026-10-07T19:27:49.448Z"
}

Company row (free)

{
"type": "company",
"input": "https://www.lifeatspotify.com/jobs",
"company": "Spotify",
"ats": "lever",
"slug": "spotify",
"detectedFrom": "slug-guess",
"boardUrl": "https://jobs.lever.co/spotify",
"status": "OK",
"jobsTotal": 76,
"jobsMatched": 2,
"jobsSaved": 1,
"message": "Saved 1 job (limit \"Max jobs per company\" reached; 76 open in total)."
}

remote is true (remote), "hybrid", false (on-site) or null (not stated); workplaceType is the same as text (remote / hybrid / onsite). salaryPeriod is year, month, week, day or hour. Salary fields are filled only when the company publishes a range in the ATS – nothing is estimated.

detectedFrom: input (explicit ats:slug), url (job-board URL), redirect, careers-page (link/script on the page), careers-link (found one click away), custom-domain (Teamtailor/Recruitee site on the company's domain), slug-guess (company name tried on the ATS APIs).

status: OK, NO_JOBS, NO_MATCHING_JOBS, CHARGE_LIMIT, DUPLICATE, NOT_DETECTED, BOARD_NOT_FOUND, INVALID_INPUT, FAILED.

The dataset has ready-made views: Overview, Full job details and Companies & detection. To export only jobs, filter on type = job (or use the Overview view).

Pricing

Pay-per-event – you pay only for jobs saved to the dataset. Platform usage is included.

EventPriceWhen it is charged
job$0.001 per job ($1 / 1,000)Each job saved to the dataset
Company / detection rowsFreeDetection results, empty boards, errors, duplicates
JobCost
All jobs of 10 startups (~300 jobs)$0.30
Remote engineering jobs from 200 companies (~2,000 jobs)$2.00
10,000 jobs$10.00

Filters are applied before charging – jobs that don't match are never billed. Set Max cost per run in the run options and the Actor stops exactly at your budget.

Use with AI agents (MCP)

This Actor works as a tool for AI agents through the Apify MCP server (Claude, ChatGPT, Cursor, n8n…). The input is small and typed and the output is flat JSON, so agents can call it directly. Example tool input an agent can send:

{
"companies": ["https://linear.app/careers", "https://jobs.lever.co/spotify"],
"keywords": ["engineer"],
"remoteOnly": true,
"maxJobsPerCompany": 20
}

Typical prompts: "Which remote engineering roles do Linear and Spotify have open?", "Which ATS does notion.com use and how many jobs are open?", "List data jobs posted at NVIDIA in the last 7 days."

FAQ

Do I need an account or API key for any ATS? No. All 10 sources are the public job-board endpoints that power the companies' own career pages.

What if my careers page isn't detected? Some companies render jobs with JavaScript from a private API or use an ATS outside this list (e.g. iCIMS, Taleo, SuccessFactors, Jobvite). You get a free NOT_DETECTED row. Open the page in a browser, click a job and paste the URL of the job board (e.g. https://jobs.lever.co/acme) – or use ats:slug.

How do I enter a Workday company? Paste the Workday careers URL, e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite (locale parts like /en-US/ are fine), or workday:nvidia.wd5/NVIDIAExternalCareerSite. Workday needs the tenant, the wdN data center and the site name, so plain names can't be guessed – but careers pages that link to Workday (like nvidia.com/careers) are detected.

Can slug guessing pick the wrong company? Guessing only accepts boards that have open jobs and – where the ATS exposes it – a company name matching the slug. Check detectedFrom: "slug-guess" rows if precision matters, or give explicit URLs.

Why is postedAt empty or old for some jobs? It is the date the ATS reports. Greenhouse leaves it empty for some boards; evergreen roles can be years old. Jobs without a date are kept when you use Posted since.

Why are there no departments for Workday jobs? Workday's public job feed doesn't include them. The department filter therefore drops Workday jobs.

How fresh is the data? Every run reads the live job boards. Schedule the Actor (e.g. daily with postedSince: "1 day") to get new jobs only.

Is there a limit? No hard limit; large Workday or SmartRecruiters tenants with thousands of jobs are paginated. Use maxJobsPerCompany and Max cost per run to control size and cost.

This Actor reads only public job postings that companies deliberately publish through their ATS's public job-board APIs – no login, no private data. It does not collect personal data of candidates or recruiters (e.g. recruiter e-mail addresses in Recruitee feeds are dropped). Job descriptions remain the property of the employers: respect each company's terms, attribute and link back to the original posting (url) when you republish, and comply with applicable law (e.g. GDPR, copyright). If unsure, consult a lawyer.

  • Website Tech Stack Detector – Bulk CMS, Analytics & Frameworks: see which tools the hiring companies use
  • Hacker News Scraper – Stories, Comments & Who Is Hiring Jobs: monthly Who Is Hiring posts
  • MyJobMag, Jobberman, BrighterMonday & Careers24 Jobs Scraper: jobs from African job boards
  • Turkey Jobs Aggregator – Kariyer, SecretCV, Isbul, Eleman.net: jobs from Turkish job boards

Support & feedback

Found a company whose ATS isn't detected, or need another ATS? Open an issue in the Issues tab with the careers URL.