Guides · Job data
Export job listings from Greenhouse, Lever and Ashby to a spreadsheet
Identify the careers platform, choose between its public feed and a ready-made Actor, then check the export before using it.
You need a list of open roles, not twenty browser tabs. Company career pages often expose structured job data; the useful part is bringing those records into a consistent table while keeping the source and its gaps visible.
This guide covers a small export first. Once the result matches the company’s own page, you can extend the same approach to several employers.
Find the right starting point
Open a job from the company’s careers page and inspect its address or application link. The public board identifier is not necessarily the company’s trading name.
| Address pattern | Platform | Example board |
|---|---|---|
boards.greenhouse.io/stripe or job-boards.greenhouse.io/stripe | Greenhouse | stripe |
jobs.lever.co/palantir | Lever | palantir |
jobs.ashbyhq.com/ramp | Ashby | ramp |
These are address examples, not a promise that a particular employer will keep the same board. For myworkdayjobs.com, use the Workday guide.
For one board: read the public feed
The Greenhouse Job Board API, Lever Postings API and Ashby Job Postings API document these requests. Replace the board name with the one you found.
curl "https://boards-api.greenhouse.io/v1/boards/stripe/jobs?content=true"
curl "https://api.lever.co/v0/postings/palantir?mode=json"
curl "https://api.ashbyhq.com/posting-api/job-board/ramp?includeCompensation=true"
Each response is JSON, with a different shape. To turn it into CSV yourself, select the fields you need, flatten nested locations and departments, strip description markup and handle pagination where required. A reachable feed does not grant unrestricted republication rights: check the source terms for your intended use.
For several boards: use one output format
Career Pages Jobs Scraper has connectors for Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, Breezy HR, Rippling, BambooHR and SAP SuccessFactors.
- Open the Actor in Apify and review its current pricing and run limits.
- Paste one career-page URL into Company career page URLs (
companies). Start withmaxJobsPerCompany: 20. - For the first check, leave date and location filters empty. Add title keywords, exclusions, location or remote filters after checking the unfiltered sample.
- Run it. When it finishes, inspect the output and the run’s
SUMMARYrecord before exporting CSV, Excel or JSON.
The shared fields include source, company, jobId, title, location, postedAt and url. Salary, date and remote status may be missing or derived differently by each source. A common column name does not make all source data equally complete.
Check the result before scaling
- Open two or three exported URLs and compare title, location and description with the live listing.
- Check
SUMMARY.failures. A finished run can contain results from some boards while another board failed. - Compare counts only after accounting for filters and
maxJobsPerCompany. Zero rows can mean no matches, a moved board or a retrieval problem. - Keep
source,jobId,urlandscrapedAtwhen combining exports.
Estimate by output, not company count. At the listed starting rate of $1.50 per 1,000 job results, 200 saved rows represent $0.30 in result charges. Check the Actor’s pricing for any startup charge, plan conditions and other applicable charges. Repeated exports can bill the same job again.
Open Career Pages Jobs ScraperTurn an export into a watchlist
A daily run gives you snapshots. To detect new roles, compare stable identifiers with those already seen. A date filter alone is insufficient: some sources omit dates, and a rolling window overlaps previous runs. The hiring-alert guide explains the distinction and the delivery checks.
← More guides