Greenhouse, Lever & Ashby Job Board Scraper
Pricing
$1.00 / 1,000 job postings
Greenhouse, Lever & Ashby Job Board Scraper
Read public job postings from Greenhouse, Lever and Ashby company boards and get them in one schema: titles, locations, posting dates, apply links and plain-text descriptions. Public endpoints only, no login.
Pricing
$1.00 / 1,000 job postings
Rating
0.0
(0)
Developer
James Power
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Read public job postings from Greenhouse, Lever and Ashby company boards and get them in one schema. Give it a list of board names (for example greenhouse:airbnb) and it returns one row per posting: title, location, department, posting date, apply link and plain-text description. Use it for job-market monitoring, tracking hiring at a shortlist of employers, or feeding a job alert.
It uses only the public, unauthenticated endpoints those ATS platforms document for reading published postings. No login, no API key, no browser, and no HTML scraping of career pages.
Use case
- Track open roles at a company that hosts its jobs on Greenhouse, Lever or Ashby.
- Compare hiring across a shortlist of employers in one table.
- Monitor one board for new postings, with or without descriptions.
Sample output
One dataset item per posting (abridged; real rows carry every field below):
{"source": "ashby","board": "notion","jobId": "1fc309c8-da20-4ff2-84c7-8b863ece2b0a","title": "Software Engineer, Developer Platform","location": "San Francisco, California","department": "Engineering","team": "Engineering","employmentType": "FullTime","workplaceType": "Hybrid","postedAt": "2026-08-24T14:44:49Z","updatedAt": null,"jobUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a","applyUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a/application","descriptionText": "WHO WE ARE Notion is the collaborative AI workspace where teams and agents think together ... (abridged; email addresses in the text would read [email removed])","salarySummary": null,"scrapedAt": "2026-10-12T19:00:00Z"}
Input
| Field | Type | Default | Meaning |
|---|---|---|---|
boards | list of strings | required | One entry per company board, written ats:token. ats is greenhouse, lever or ashby. The token is the public board name in the ATS URL: greenhouse:airbnb is boards.greenhouse.io/airbnb. 1 to 50 entries. Duplicates are removed. |
maxJobs | integer | 200 | Stop after this many postings across all boards (1 to 5000). |
includeDescription | boolean | true | Include plain-text job description. Off gives titles, places, dates and links only. |
Any other field is rejected with unknown field, so a misspelt option never runs silently with the default.
Output
One dataset item per posting, with exactly these fields (no others):
source, board, jobId, title, location, department, team, employmentType, workplaceType,
postedAt, updatedAt, jobUrl, applyUrl, descriptionText, salarySummary, scrapedAt.
Dates are UTC ISO 8601 with a Z. updatedAt is filled for Greenhouse only. salarySummary is filled only
when the ATS publishes a salary. Fields the ATS does not provide are null, never guessed.
Greenhouse compliance, metadata and office objects are dropped. No contact field is read or returned. Email addresses that appear inside a description (for example an accommodation or recruiting inbox, or a bare company email domain such as @company.com) are replaced with [email removed].
Examples
Three boards, 100 postings at most:
{"boards": ["greenhouse:airbnb", "lever:outreach", "ashby:notion"],"maxJobs": 100,"includeDescription": true}
Titles, places and links only, for a quick monitor of one board:
{"boards": ["ashby:notion"],"maxJobs": 500,"includeDescription": false}
Errors
Errors are reported in the run status message and cost nothing:
boards must be a non-empty list/accepts at most 50 entries: fix the list.unsupported ATS 'x': usegreenhouse,leverorashby. Workday, SmartRecruiters and others are not read here.invalid board token: letters, digits, dot, dash and underscore only.maxJobs must be a whole number from 1 to 5000,includeDescription must be true or false,unknown field 'x'.no board found for ...; check each token on its ATS page: every board returned not found. Check the token.no board could be read: ...: the ATS returned errors after retries (rate limit or outage). Try again later.
A board that is not found, while others work, is listed as not_found in the run output and the run continues.
Pricing
Pay per event: job-found, $0.001 per stored posting (about $1 per 1,000). Nothing is charged for an
input error, a missing board, an empty board or a run that stores no postings. Each posting is pushed to the
dataset first and then charged once. If a spend limit stops the run, the one posting that hit the limit is
stored without a charge and nothing after it is stored.
Limits (honest)
- Reads only what each ATS publishes publicly. Postings that are unpublished, internal or behind a login are
not returned. Ashby postings marked
isListed: falseare skipped. - Each ATS returns a board in one response, so there is no paging to follow.
maxJobscaps the total and is shared fairly: each board gives up to an equal share first, then any unused room is filled from the boards in order. A board with fewer postings than its share leaves the room to the others. - Requests to the same host are at least 0.5 seconds apart.
- Greenhouse, Lever and Ashby only. For Workday, SmartRecruiters, Recruitee or Personio, use a different Actor.
- No enrichment: no company data, no LinkedIn data, no AI summaries, no salary estimates.
- Descriptions are the ATS's own text converted to plain text; formatting and images are removed.
- Freshness is the ATS's publish state at run time. A posting removed after the run stays in your dataset.
- A slow or rate-limited ATS shows as an error for that board; the run keeps the boards that worked.
Sources and terms
Greenhouse Job Board API (boards-api.greenhouse.io/v1/boards/{token}/jobs, no authentication for the job list),
Lever Postings API (api.lever.co/v0/postings/{token}?mode=json; Lever's own documentation says published
postings are public), and the Ashby public job posting API (api.ashbyhq.com/posting-api/job-board/{name}).
Each posting remains the property of the hiring company. Use the data within the rights you hold, and check each
company's terms before redistributing postings. This Actor does not submit applications and does not use any
ATS write endpoint.
Support
Issues and failed runs are reviewed on the Actor's Issues tab.