ATS Careers Scraper: Greenhouse, Lever, Ashby
Pricing
from $5.00 / 1,000 results
ATS Careers Scraper: Greenhouse, Lever, Ashby
Pull every open role, with location, department, employment type and description, from any public Greenhouse, Lever, Ashby, Workable or SmartRecruiters careers page. Filter by keyword, location or department. Priced per result.
What does ATS Careers Scraper: Greenhouse, Lever, Ashby, Workable & SmartRecruiters do?
Give it a company's public career page URL and it returns every open role posted there: title, company, location, department, employment type, remote flag, posted date, apply link and a plain text description. It reads the same public JSON APIs that power Greenhouse, Lever, Ashby, Workable and SmartRecruiters career pages, so results are current as of the run. Filters for keyword, location and department keep runs small, and you only pay for the results you keep.
Data source
The Actor calls the public JSON API behind each career page (for example boards-api.greenhouse.io for Greenhouse, api.lever.co for Lever) rather than parsing HTML, so data is live and as current as the company's own careers page.
Why use it?
- Lead generation and recruiting: pull open roles across many companies to spot who is hiring and for what.
- Market and hiring research: track headcount growth, new departments or new office locations by role postings.
- Sales signals: new engineering or GTM roles often precede a buying window.
- Job board or newsletter content: republish current openings without maintaining scrapers for five different ATS platforms yourself.
How to use it
- Open the Actor and paste one or more company career page URLs (Greenhouse, Lever, Ashby, Workable or SmartRecruiters), then set optional filters.
- Click Start. Download results as JSON, CSV or Excel, or read them through the API.
- Add a Schedule and an Integration (Slack, Google Sheets, webhook) to get new postings automatically.
Input
| Field | Description |
|---|---|
startUrls | Public company career page URLs. The ATS is detected automatically from the URL. |
keywords | Comma separated keywords to match in the job title or description. Leave empty to keep every role. |
location | Only keep roles whose location text contains this, for example Remote or New York. |
department | Only keep roles whose department or team contains this, for example Engineering. |
maxResults | Hard stop for the run. You are billed per result, so this caps the cost. |
proxyConfiguration | Apify proxy is recommended for larger runs. |
Example input:
{"startUrls": [{ "url": "https://job-boards.greenhouse.io/gitlab" },{ "url": "https://jobs.lever.co/angellist" },{ "url": "https://jobs.ashbyhq.com/linear" },{ "url": "https://apply.workable.com/zyte" },{ "url": "https://jobs.smartrecruiters.com/Equinox" }],"keywords": "","location": "","department": "","maxResults": 60}
Output
Every record has the same shape regardless of the source ATS:
{"id": "greenhouse:gitlab:8556658002","title": "AI Engineer","company": "GitLab","location": "Remote, Bangalore","department": "Enterprise Applications","employmentType": null,"remote": true,"postedAt": "2026-09-14T20:01:39.000Z","url": "https://job-boards.greenhouse.io/gitlab/jobs/8556658002","description": "GitLab is the intelligent orchestration platform for DevSecOps...","source": "greenhouse","sourceUrl": "https://job-boards.greenhouse.io/gitlab","scrapedAt": "2026-09-29T09:26:09.167Z"}
| Field | Meaning |
|---|---|
id | Stable key (source:company:nativeId), safe for deduplication between runs |
title | Job title |
company | Company name as published by the ATS |
location | Location text as published, or null if not given |
department | Department or team, when the ATS publishes one |
employmentType | Full time, part time, contract, etc, when the ATS publishes one |
remote | true, false or null when the source does not say |
postedAt | ISO date the role was posted, when available |
url | Public apply or posting page |
description | Plain text job description, HTML stripped |
source | Which ATS the role came from: greenhouse, lever, ashby, workable or smartrecruiters |
sourceUrl | The career page URL you supplied that produced this record |
scrapedAt | When this Actor run fetched the record |
Pricing
Pay per event: a small fee when a run starts, then a fixed price per result returned. You only pay for records that pass your filters. Set maxResults to cap any run.
Limitations
- Workday career pages are not supported. Workday's public job API intermittently rejects automated requests with a generic error even without any login wall, so results from it would not be reliable.
- Only fields the source ATS actually publishes are filled in; some boards omit department or employment type.
- SmartRecruiters results are read from the first 100 postings per company page; very large boards beyond that are not paginated further in a single run.
FAQ
Is this legal? The Actor reads listings the company publishes for any visitor without a login and stores only the job posting information published for that purpose. You are responsible for how you use the data.
Something is missing or broken? Open an issue in the Issues tab; response time is usually under a day.