Career Site Jobs Scraper - Greenhouse, Lever, Ashby, Workday
Pricing
from $0.90 / 1,000 job postings
Career Site Jobs Scraper - Greenhouse, Lever, Ashby, Workday
Career site jobs scraper and ATS jobs API alternative: extract job postings from Greenhouse, Lever, Ashby and Workday boards with title, department, locations, remote flag, employment type, salary range, posting date, apply URL and description. Company URLs or names, no login or API key.
Pricing
from $0.90 / 1,000 job postings
Rating
0.0
(0)
Developer
CrawlKit
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 minutes ago
Last modified
Categories
Share
Scrape job postings from company career sites hosted on Greenhouse, Lever, Ashby and Workday. Give the Actor a list of career page URLs or company names; it returns one flat JSON record per open job, with title, department, locations, remote flag, employment type, salary range (when the employer publishes one), posting date, apply URL and the full description as text and HTML.
The data comes from the public JSON endpoints these applicant tracking systems (ATS) serve to their own job boards. No login, no API key, no browser.
What it does
- Detects the ATS from each URL:
boards.greenhouse.io,job-boards.greenhouse.io,jobs.lever.co,jobs.ashbyhq.com,<tenant>.wdN.myworkdayjobs.com/<site>. - Also accepts
greenhouse:airbnb/lever:spotify/ashby:ramp, a bare board name (stripe, looked up on Greenhouse, then Lever, then Ashby), or a company's own careers page URL, which is read once (if its robots.txt allows it) to find a link to one of these job boards. - Reads every open job of each board, newest first on Greenhouse, Lever and Ashby, and fetches the job detail where the list does not carry it (Greenhouse: offices, departments, pay ranges, description; Workday: description, locations, date).
- Optional filters: words in the job title, location text, remote only, posted within N days.
- Normalizes everything to one schema: ISO 8601 UTC dates,
remoteboolean,workplaceType(remote / hybrid / onsite), numeric salary with separate currency and period. - Deduplicates on (
platform,jobId). - A company that cannot be read (unknown board, refused request) is reported in the log and the run continues with the others. The run fails with an explicit reason only when no job at all is returned (board not found, blocked, no job matching the filters).
Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
companies | array of strings | Yes | - | Career site URLs (Greenhouse, Lever, Ashby, Workday), platform:slug values, bare board names, or company careers page URLs. Workday URLs must include the site name, e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite. |
keyword | string | No | - | Only jobs whose title contains every word (case-insensitive). |
location | string | No | - | Only jobs with a location containing this text, e.g. London, Germany. remote also matches jobs flagged remote. |
remoteOnly | boolean | No | false | Only remote jobs. |
postedWithinDays | integer | No | - | Only jobs first published in the last N days. Jobs without a date are excluded when set. |
includeDescription | boolean | No | true | Include descriptionText and descriptionHtml. |
maxItems | integer | No | 20 | Maximum jobs in total, shared across companies: each company gets an equal share, and the share a company does not use passes to the next ones. |
Example:
{"companies": ["https://boards.greenhouse.io/airbnb","https://jobs.lever.co/spotify","ramp","https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"],"keyword": "engineer","postedWithinDays": 14,"maxItems": 100}
Output
One dataset item per job (description shortened here):
{"jobId": "6232541004","requisitionId": "2676","title": "Customer Enablement Manager - Figma Weave (New York, United States)","company": "Figma","companyId": "figma","platform": "greenhouse","department": "Figma Weave","team": null,"location": "New York, NY • United States","locations": ["New York, NY • United States", "Canada", "US"],"remote": false,"workplaceType": null,"employmentType": null,"salaryMin": 127000,"salaryMax": 269000,"salaryCurrency": "USD","salaryPeriod": "YEAR","postedAt": "2026-10-27T20:24:36Z","updatedAt": "2026-10-27T20:24:36Z","applyUrl": "https://boards.greenhouse.io/figma/jobs/6232541004?gh_jid=6232541004","jobUrl": "https://boards.greenhouse.io/figma/jobs/6232541004?gh_jid=6232541004","descriptionText": "Figma is growing our team of passionate creatives and builders on a mission to make design accessible to all. ...","descriptionHtml": "<div class=\"content-intro\"><p>Figma is growing our team of passionate creatives ...","source": "figma","scrapedAt": "2026-10-28T06:45:37Z"}
Field availability by ATS:
| Field | Greenhouse | Lever | Ashby | Workday |
|---|---|---|---|---|
department / team | department | both | both | - |
workplaceType | when the employer sets it | yes | yes | when the site publishes it |
employmentType | when the employer sets it | yes | yes | yes |
| salary | when the employer publishes a pay range | when the employer publishes a pay range | when the employer publishes compensation | - |
postedAt | date and time | date and time | date and time | date only |
updatedAt | yes | - | - | - |
requisitionId | yes | - | - | yes |
company is the company name on Greenhouse and the board name (slug or Workday tenant) on the other platforms.
Pricing
Pay-per-event, no start fee: $1.50 per 1,000 jobs on the Apify Free plan, lower on paid plans.
| Event | Free | Starter | Scale | Business | Enterprise |
|---|---|---|---|---|---|
JOB (one job pushed to the dataset) | $1.50 | $1.30 | $1.10 | $0.90 | $0.90 |
Prices in USD per 1,000 events. Only jobs returned are charged; a company that cannot be read costs nothing. When the maximum cost per run you set is reached, the run stops cleanly with the jobs already collected.
Limitations
- Only career sites hosted on Greenhouse, Lever, Ashby and Workday. Other systems (SmartRecruiters, iCIMS, Taleo, SuccessFactors...) are not supported. A careers page on the company's own domain works only if it links to one of the four job boards in its HTML (pages built entirely in JavaScript may not).
- A bare company name is matched against the board name, which is not always the company name (Greenhouse uses
airbnb, but some companies use another slug). When a name finds nothing, use the job board URL. - Workday sites cannot be found from a name: give the full URL with the site name. Workday returns the posting date without a time and has no department or salary fields (some employers write the pay range in the description).
- Salary fields are filled only when the ATS publishes a structured pay range (Greenhouse pay transparency, Lever salary range, Ashby compensation). Ranges written only in the description text are not parsed. For Greenhouse ranges with several zones, the widest range in the first listed currency is returned, and the period is read from the range title or, failing that, inferred from the amount.
keywordmatches the job title only, not the description. On Workday it is also sent to the site's own search, so results follow Workday's relevance order.- Greenhouse, Lever and Ashby list all open jobs of a board; very large Workday sites are read 20 jobs per page, up to 2,000 jobs per site.
- Jobs reflect what the board publishes at run time; closed jobs disappear from the boards and are not returned.
Related Actors
- Indeed Jobs Scraper API - Listings & Salaries, $0.50/1K — Scrape Indeed job listings: title, company, location, salary and job type in 6 countries (US, UK, FR, DE, CA, AU). Jobs data API, no login needed.
- Google Jobs Scraper API - Listings, Salaries & Apply Links — Scrape Google for Jobs listings: title, company, location, salary, apply links and posting date. Job postings data API for recruiters, no login needed.
- Glassdoor Scraper - Company Reviews & Salaries — Scrape Glassdoor company reviews and salary ranges by company name or URL: rating, sub-ratings, title, pros, cons, advice, job title, date, plus typical pay per job title.