ATS Job Board Scraper: Greenhouse, Lever, Ashby & Workable avatar

ATS Job Board Scraper: Greenhouse, Lever, Ashby & Workable

Pricing

$1.00 / 1,000 job scrapeds

Go to Apify Store
ATS Job Board Scraper: Greenhouse, Lever, Ashby & Workable

ATS Job Board Scraper: Greenhouse, Lever, Ashby & Workable

Scrape open jobs from Greenhouse, Lever, Ashby, Workable, and SmartRecruiters in one normalized JSON/CSV schema. Filter by role, location, or only-new.

Pricing

$1.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Almandine Data

Almandine Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Unified ATS Job Scraper: Greenhouse, Lever, Ashby, Workable & SmartRecruiters

Scrape open job postings from 5 major Applicant Tracking Systems (Greenhouse, Lever, Ashby, Workable, and SmartRecruiters) into one normalized JSON/CSV schema in a single run. Built for recruiting agencies, job boards, B2B sales signals, and AI agents — with no login, cookies, or browser overhead.

What it does

Pass company board URLs, ats:slug pairs (e.g. greenhouse:airbnb, lever:spotify, ashby:ramp), or bare company slugs (auto-detected across all 5 ATS platforms). Filter by title/department/location regex and enable onlyNew: true on a schedule so you only receive and pay for newly posted jobs.

Use cases

  • Niche Job Boards & Aggregators: Ingest jobs from hundreds of companies across Greenhouse, Lever, Ashby, Workable, and SmartRecruiters without maintaining 5 separate scrapers or schemas.
  • B2B Buying-Intent & Hiring Signals: Detect when target accounts open key roles (e.g. Security Engineer, RevOps, Data Platform, VP Sales) to trigger timely outbound sequences.
  • Recruiting & Headhunting Automation: Run hourly or daily with onlyNew: true to spot newly opened requisitions before competing agencies.
  • Compensation & Remote Work Analytics: Analyze structured compensation ranges (Ashby/Lever) and workplaceType (remote, hybrid, onsite) across tech companies.

Why use this scraper?

FeatureThis ActorSingle-ATS / HTML Job Scrapers
ATS coverage5 ATS platforms in 1 Actor (Greenhouse, Lever, Ashby, Workable, SmartRecruiters)Requires 5 separate actors with incompatible schemas
ArchitectureOfficial public JSON board APIs (curl_cffi, 200 jobs in ~3 seconds)Fragile browser scraping that breaks on career page redesigns
Incremental stateBuilt-in onlyNew state store skips previously seen jobs at $0.00Re-bills the entire job board on every run
Pricing modelPay-per-result ($1.50 / 1,000 jobs, $0.00 start fee)$20–$49/month per ATS

Input parameters

  • Companies (companies, array): Board URLs (https://boards.greenhouse.io/stripe), ats:slug (ashby:linear), or bare slugs (figma).
  • Title filter (regex) (titleFilter, string): Case-insensitive regex matched against job title (e.g. (senior|staff).*engineer).
  • Location filter (regex) (locationFilter, string): Case-insensitive regex matched against location or workplace type (e.g. remote|new york).
  • Department filter (regex) (departmentFilter, string): Case-insensitive regex matched against department/team.
  • Posted within (days) (postedWithinDays, integer): Keep only jobs published/updated within the last N days.
  • Include full job description (includeDescription, boolean): Attach descriptionHtml and descriptionText (default true).
  • Only new jobs (onlyNew, boolean): Skip jobs already returned in earlier runs.
  • Max jobs (maxItems, integer): Cap total emitted jobs across all companies (default 5000).

Example input

{
"companies": ["greenhouse:airbnb", "lever:spotify", "ashby:ramp"],
"includeDescription": false,
"onlyNew": false,
"maxItems": 200
}

Output & example output

One dataset row per job posting. Default table view columns: company, ats, title, department, location, workplaceType, employmentType, compensation, publishedAt, applyUrl.

Example output item

{
"id": "78d8b7f3e688e1bd",
"ats": "greenhouse",
"company": "airbnb",
"jobId": "7789554",
"title": "Associate Legal Counsel, Japan",
"url": "https://careers.airbnb.com/positions/7789554?gh_jid=7789554",
"location": "Tokyo, Japan",
"department": null,
"team": null,
"employmentType": null,
"isRemote": false,
"postedAt": "2026-04-13T04:49:05-04:00",
"updatedAt": "2026-09-29T20:00:54-04:00",
"descriptionText": null
}

Pricing (Pay-Per-Result)

This Actor uses transparent Pay-Per-Event pricing with a $0.00 actor-start fee:

EventWhat is chargedPrice
job-resultOne normalized job posting emitted$0.0015 / job ($1.50 / 1,000 results)
apify-actor-startActor start fee$0.00

Concrete pricing math

  • job-result: 1,000 results = $1.50 (50 results = $0.075, 200 results = $0.30, 10,000 results = $15.00). Apify's $5.00/month Free Tier covers up to 3,333 jobs/month at $0.00.
  • Empty runs (0 results), filtered-out jobs, & already-seen jobs (onlyNew: true): $0.00.

Data and compliance

Queries only official public job-board JSON endpoints exposed by Greenhouse, Lever, Ashby, Workable, and SmartRecruiters for candidate applications. No candidate PII or private recruiter data is accessed. Per-company errors are recorded in the run's ERRORS key-value record and are never charged.

FAQ

What if I don't know which ATS a company uses?
Pass the bare company slug (e.g. "airbnb" or "ramp"), and the Actor automatically probes Greenhouse, Ashby, Lever, Workable, and SmartRecruiters in parallel.

What happens if I run the Actor with empty {} input via API or CLI?
Default companies (["greenhouse:airbnb", "lever:spotify", "ashby:ramp"]) are built into .actor/input_schema.json and the runner, so an empty {} run immediately returns 200+ live jobs.