Siftsmith Run on Apify
← Company Jobs

Greenhouse, Lever and Ashby jobs API

Greenhouse, Lever and Ashby each publish a company’s open jobs as public JSON, with no API key. This guide gives the endpoint for each, the fields you get, the parameters that add departments, descriptions and pay, and the traps that trip up a first script. At the end: how to do it for a whole company list in one run.

The three endpoints

Each needs the company’s board name (its slug), the part after the host in its job board URL: job-boards.greenhouse.io/stripe, jobs.lever.co/palantir, jobs.ashbyhq.com/ramp. Not sure which system a company uses? See how to find which ATS a company uses.

ATSEndpointOpen jobs, 8 October 2026
Greenhouseboards-api.greenhouse.io/v1/boards/{slug}/jobsStripe: 724
Leverapi.lever.co/v0/postings/{slug}?mode=jsonPalantir: 315
Ashbyapi.ashbyhq.com/posting-api/job-board/{slug}Ramp: 161

All three return every open job in one response, so there’s no paging to get right. A slug that doesn’t exist answers 404 on all three.

Greenhouse

curl -s https://boards-api.greenhouse.io/v1/boards/stripe/jobs | jq '.meta.total'
# 724

Each job has title, location.name, absolute_url, first_published and updated_at. Two things to know:

Lever

curl -s "https://api.lever.co/v0/postings/palantir?mode=json" | jq 'length'
# 315

Each posting has text (the title), categories (team, location, commitment, allLocations), workplaceType, hostedUrl, createdAt and the description as both HTML and plain text. Three traps:

Lever also accepts limit and skip if you want to page (?mode=json&limit=5&skip=5), but without them you get every posting.

Ashby

curl -s "https://api.ashbyhq.com/posting-api/job-board/ramp?includeCompensation=true" | jq '.jobs | length'
# 161

Each job has title, department, team, location, secondaryLocations, isRemote, workplaceType, employmentType, publishedAt, jobUrl and the description as HTML and plain text.

Do it for a whole company list: Company Jobs

The endpoints are easy once you have the slug. The slow part is a list of companies: finding each one’s system and slug, trying the EU host, mapping three different schemas into one, and being sure a board named acme really belongs to the Acme on your list. Company Jobs does that for names, domains or careers URLs, across Greenhouse, Lever, Ashby, Workday and 4 more systems (Ashby by its board URL or ashby:slug).

Example: input {"companies": ["stripe.com", "ashby:ramp", "https://jobs.eu.lever.co/seb"], "maxItems": 3}, run on 14 October 2026, found greenhouse:stripe (high), ashby:ramp (explicit) and lever:seb (explicit), with 725, 162 and 130 open jobs. An Ashby board is read only when you give it, as ashby:ramp or its URL: Ashby’s API gives no company name to confirm a board found from a name. The first job row, trimmed:

{
  "type": "job",
  "title": "Abuse Investigator",
  "ats": "greenhouse",
  "atsSlug": "stripe",
  "matchConfidence": "high",
  "url": "https://stripe.com/jobs/search?gh_jid=8172508",
  "location": "Dublin",
  "remote": false,
  "department": "Security Analytics",
  "postedAt": "2026-09-03T13:32:53-04:00",
  "postedAtPrecision": "exact"
}

$0.001 per job row ($1 per 1,000), no subscription. Companies not found, or not confirmed, are free. maxItems caps job rows, and so spend, for the run.

Run Company Jobs on Apify →

Related