ATS Jobs Scraper - Workday, Greenhouse, Lever & Ashby API
Pricing
$4.00 / 1,000 job scrapeds
ATS Jobs Scraper - Workday, Greenhouse, Lever & Ashby API
Get every open job from any company careers page running on Workday, Greenhouse, Lever or Ashby. Pass a company name or domain and the Actor works out which applicant tracking system they use, then returns all four vendors in one identical schema with remote, department and date filters.
Pricing
$4.00 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Kobkoon Janngam
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
6 hours ago
Last modified
Categories
Share
ATS Jobs Scraper — Greenhouse, Lever & Ashby from a domain alone
Give it stripe.com and get every open job. This Actor works out which applicant tracking system a company runs — Greenhouse, Lever or Ashby — and returns their whole careers page in one schema, whichever vendor it came from.
Quick start: press Start with no configuration at all. It ships with three companies, one on each provider, and returns their open roles immediately. Then paste in the companies you care about.
Sample output
| company | title | location | department | employmentType | isRemote | publishedAt | provider |
|---|---|---|---|---|---|---|---|
| Stripe | Account Executive, AI Sales | San Francisco, CA | Enterprise Sales | 2026-02-03 | greenhouse | ||
| Spotify | Android Engineer – Experience | London | Engineering | Permanent | false | 2026-06-23 | lever |
| Ramp | Security Engineer, Cloud | New York, NY | Engineering | FullTime | true | 2026-04-07 | ashby |
Every row also carries jobId, url, applyUrl, boardSlug, team, workplaceType, additionalLocations, compensation, updatedAt, descriptionPreview, descriptionTruncated and descriptionChars.
Why this one
You do not need the board slug. Every other ATS scraper wants boards-api.greenhouse.io/v1/boards/**stripe** — a token you have to go and find. Buyers do not have that. They have a company domain or a careers link. This Actor takes either, derives the slug, and asks each provider in turn until one recognises the company. Three cheap JSON requests, and an answer rather than a guess.
One schema across three vendors. The providers disagree about almost everything: a job's title is title on two and text on the third; a posting date is an ISO string here and epoch milliseconds there; a location is a nested object, a category, or a bare string. Remote is a boolean on Ashby, a workplace type on Lever, and nothing at all on Greenhouse. All of it is normalised, every field is always present, and jobId is a string everywhere so joins do not break.
Descriptions you can actually read. Greenhouse returns HTML wrapped in escaped entities. It arrives here as plain text, cut to an 800-character preview with the true length reported in descriptionChars, so a row stays small enough for an AI agent to reason over. Set includeFullDescription when you want the whole posting.
What you can do with it
- Track a competitor's hiring. Schedule it with
postedAfterset to yesterday and you get only the new openings — the cleanest public signal of where a company is investing. - Build a job board. Point it at a list of portfolio or partner companies and you have a live, structured feed with direct apply links.
- Source candidates by market.
remoteOnlypluslocationContainsnarrows hundreds of roles to the ones in your patch. - Feed an AI agent. Rows are under 2 KB, identically shaped across providers, and every one carries a direct apply URL.
Input
| Field | Default | Notes |
|---|---|---|
companies | 3 sample companies | A domain (stripe.com), a bare slug (stripe), or a board URL for any supported provider. Mix freely. |
providers | all three | The order to try when an entry does not name a provider. Narrow it when you already know the ATS — it removes the failed lookups. |
titleContains | empty | Case-insensitive partial match on the job title. |
locationContains | empty | Matches secondary locations too. |
department | empty | Matches department or team. |
remoteOnly | false | Checks all three providers' different remote signals. |
postedAfter | empty | YYYY-MM-DD. The most useful filter for a scheduled run. |
includeFullDescription | false | Full posting text instead of a preview. Rows get much larger. |
maxJobsPerCompany | 100 | Applied after filtering. Boards can be large — Stripe had 592 open roles. |
How it works, and why it keeps working
This Actor reads the official, public, keyless job-board APIs that these companies' own careers pages are built on. No HTML parsing, no login, no proxy. A company can redesign its careers page and this Actor keeps returning the same fields.
Limits worth knowing before you buy
It covers Greenhouse, Lever and Ashby. A company on Workday, SuccessFactors, Taleo or its own bespoke system cannot be read here, and the run tells you plainly which entries did not resolve rather than returning a quiet empty result.
The slug is derived from the domain, which is right far more often than not but not always — a company whose board is named differently from its domain needs its board URL or exact slug. SUMMARY records what each entry resolved to, so the first run tells you the right identifier for every later one.
Pricing
Pay per job delivered, after filtering. A company with no matching openings charges you nothing.
Disclaimer
This is an unofficial tool. It is not affiliated with, authorised by, endorsed by, or in any way officially connected to Greenhouse Software, Lever, Ashby, or any company whose job board it reads. "Greenhouse", "Lever" and "Ashby" are trademarks of their respective owners.
It reads only public, unauthenticated job-board API endpoints — the same ones these companies' own careers pages call to render publicly advertised vacancies. It signs into nothing, stores no credentials, and returns nothing behind a login or a paywall. No candidate or applicant data is accessed; job postings are, by definition, published to be read.
Providers can change or withdraw these endpoints at any time. When a board cannot be read, this Actor says which company and why rather than handing you an empty result that looks like an answer.