ATS Jobs Scraper - Greenhouse, Ashby & Lever
Pricing
from $1.50 / 1,000 results
ATS Jobs Scraper - Greenhouse, Ashby & Lever
Scrape job postings from any company career board on Greenhouse, Ashby or Lever. Paste the careers page URL and get every open role with title, location, department, work mode, employment type and salary — one unified schema across all three ATS. Official public APIs, no blocking.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Juan ignacio Veltri
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
ATS Jobs Scraper — Greenhouse, Ashby, Lever & Workday
Scrape company career boards from four applicant tracking systems with one Actor and one output schema — including Workday, which powers the careers site of most large enterprises.
Paste a careers page URL. The Actor detects which ATS the company uses, pulls the entire board, and returns every job in the same shape — whether it came from Greenhouse, Ashby, Lever or Workday.
Why this one
Most job scrapers cover a single ATS and hand you the provider's raw JSON. Track 40 companies and you end up writing four different normalisers and reconciling four date formats.
- One schema across all four.
title,company,location,workMode,employmentType,salaryMin/Max,salaryPeriod,publishedAt— same fields, same types, same ISO-8601 dates, no matter the source. - Workday included. Its jobs live behind a paginated POST API and each posting needs a second request for the description, date and work mode. The Actor does both, and only fetches the detail for jobs that already passed your title and location filters — so a strict filter costs you fewer requests, not more.
- No ATS guessing. Paste
https://jobs.lever.co/palantirorhttps://job-boards.greenhouse.io/stripe. The Actor works out the rest. - Official public APIs. No captchas, no proxies, no blocked runs. One request returns a company's whole board, which is why this is one of the cheapest job scrapers you can run.
- Filtering that actually saves money. ATS APIs return everything; jobs filtered out here are never saved and never charged.
Example output
{"id": "9f2a1c4e8b7d3a56","url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","source": "ats:ashby","country": "US","scrapedAt": "2026-08-19T14:32:10.512Z","title": "Security Engineer, Cloud","company": "Ramp","description": "Ramp is building the next generation of finance tools...","salaryMin": { "amount": 180000, "currency": "USD", "raw": "$180K – $220K", "onRequest": false },"salaryMax": { "amount": 220000, "currency": "USD", "raw": "$180K – $220K", "onRequest": false },"salaryPeriod": "year","employmentType": "full_time","workMode": "hybrid","area": "Backend","location": { "address": "New York, NY (HQ)", "city": "New York", "country": "US" },"publishedAt": "2026-04-07T17:12:35.753Z","listingId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245"}
How to use it
Track a list of companies
{"boards": ["https://job-boards.greenhouse.io/stripe","https://jobs.ashbyhq.com/ramp","https://jobs.lever.co/palantir"],"maxItems": 1000}
Only remote engineering roles
{"boards": ["https://job-boards.greenhouse.io/stripe"],"titleKeywords": ["engineer", "developer"],"workMode": "remote"}
Daily monitoring of new postings
Schedule it and turn includeSeen off — each run returns only what was posted since the last one.
{"boards": ["https://jobs.ashbyhq.com/ramp", "https://jobs.lever.co/palantir"],"postedWithinDays": 7,"includeSeen": false}
Salary benchmarking
{"boards": ["https://jobs.ashbyhq.com/ramp"],"onlyWithSalary": true}
Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
boards | array | example board | Careers page URLs or provider:token values |
provider | enum | — | Default ATS, only for bare tokens |
titleKeywords | array | [] | Keep jobs whose title matches any word |
locationKeywords | array | [] | Keep jobs whose location matches |
departmentKeywords | array | [] | Keep jobs in matching departments or teams |
workMode | enum | any | remote, hybrid, onsite |
employmentType | enum | any | Full-time, contract, internship… |
postedWithinDays | integer | — | Only jobs posted in the last N days |
onlyWithSalary | boolean | false | Only jobs that publish a salary range |
maxItems | integer | 500 | Hard stop across all boards. Your cost control |
maxItemsPerBoard | integer | 0 | Cap per company. 0 = no cap |
includeSeen | boolean | true | false returns only jobs new since the last run |
What each ATS publishes
Field coverage differs by provider. This is stated up front so nothing surprises you:
| Field | Greenhouse | Ashby | Lever | Workday |
|---|---|---|---|---|
| Title, company, location, URL | ✅ | ✅ | ✅ | ✅ |
| Full description | ✅ | ✅ | ✅ | ✅ (2nd request) |
| Department / team | ✅ | ✅ | ✅ | — |
| Publish date | ✅ | ✅ | ✅ | ✅ (2nd request) |
| Employment type | — | ✅ | ✅ | ✅ (2nd request) |
| Work mode | inferred | ✅ | ✅ | ✅ (2nd request) |
| Salary range | rarely | ✅ | sometimes | — |
| Salary period | — | when stated | ✅ | — |
| Requests per board | 1 | 1 | 1 | 1 per 20 jobs, plus 1 per job kept |
Workday is the only provider that splits a posting in two: the board listing carries the title, location and requisition number, and everything else arrives with the posting's own page. Filters on title and location are applied before that second request, so they save you requests rather than costing them. Filters on department, salary or work mode are applied after, once the data they judge actually exists.
Filters that depend on a field a provider does not publish will exclude that provider's jobs. That is deliberate: silently including them would misreport the filter you asked for.
Cost
Charged per job saved. Jobs removed by your filters or already seen are not charged.
Because these are public JSON APIs, there is no proxy cost and no retry-on-block waste — a company's entire board arrives in a single request.
FAQ
How do I find a company's board URL? Open their careers page. If the URL contains greenhouse.io, ashbyhq.com, lever.co or myworkdayjobs.com, paste it as is. For Workday, paste the full careers URL (for example https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite) — the company host and site name are both part of it, and a bare company token is not enough.
Is this legal? These are public, unauthenticated endpoints the companies publish so their jobs can be indexed and syndicated. No login is bypassed and no personal data is collected.
Why did I get fewer jobs than the company lists? Almost always a filter. Check the run log — it reports exactly how many jobs each filter removed.
Can I get jobs from a company not on these four? Not yet. Open an issue with the careers URL and it may get added.
Support
Found a company whose board does not parse? Open an issue with the careers page URL. Reports with a URL get fixed fastest.