Greenhouse, Lever & Ashby Job Board Scraper avatar

Greenhouse, Lever & Ashby Job Board Scraper

Pricing

$1.00 / 1,000 job postings

Go to Apify Store
Greenhouse, Lever & Ashby Job Board Scraper

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

James Power

Maintained by Community

Actor 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

FieldTypeDefaultMeaning
boardslist of stringsrequiredOne 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.
maxJobsinteger200Stop after this many postings across all boards (1 to 5000).
includeDescriptionbooleantrueInclude 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': use greenhouse, lever or ashby. 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: false are skipped.
  • Each ATS returns a board in one response, so there is no paging to follow. maxJobs caps 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.