Skip to main content
Every company on Greenhouse has a public job board, and Greenhouse publishes the same list through a free job board API. Here are three ways to get all open jobs into a file, from the most work to the least. The curl and jq commands were run as written on 2026-11-05 against Discord’s board, which had 27 open jobs that day.

Find the board name

Open the company’s careers page and click a job. If the address starts with job-boards.greenhouse.io/discord or boards.greenhouse.io/discord, then discord is the board name. If the careers page stays on the company’s own domain, look for gh_jid= in the job’s address, or for boards.greenhouse.io/embed/job_board?for=discord in the page source. To test a name, this prints 200 for a real board and 404 otherwise:

Option 1: the free Greenhouse job board API

No key or account is needed. This saves the full response as JSON and prints how many jobs it holds:
This turns it into a CSV with one row per job:
For one board you read once, that may be all you need. The raw response leaves the rest to you:
  • Parameters decide what you get. Without content=true there are no descriptions or departments. Without pay_transparency=true there are no pay ranges.
  • Pay ranges are in cents: min_cents of 20000000 is $200,000, under pay_input_ranges.
  • Descriptions are escaped HTML (<p>), so they need decoding and stripping before they are readable.
  • One board per request, so several companies mean a loop, retries and handling for boards that don’t exist.

Option 2: one REST call, several boards

Greenhouse Jobs API & Scraper works as a Greenhouse jobs API. One request runs it, waits and returns the file:
  • Use format=json or format=xlsx for JSON or Excel.
  • Add &fields=title,company,location,salaryMin,salaryMax,salaryCurrency,url to keep only those columns.
  • Add "keyword":"engineer" or "location":"London" to the input to keep only matching jobs. Jobs you filter out aren’t charged.
  • A name without a public board adds one free error item to the results and the other boards carry on.
  • The request waits up to 300 seconds. For larger runs, start the run with POST /runs and read the dataset when it finishes.
Records carry salary as salaryMin, salaryMax, salaryCurrency and salaryUnit, and the description as plain text. The same fields come back from the Lever and Ashby Actors. Which fields each platform fills.

Option 3: no code

  1. Open Greenhouse Jobs API & Scraper on Apify and click Try for free.
  2. Add discord to Job board names, or paste the board’s address into Job board URLs.
  3. Click Start.
  4. When the run finishes, export the results as CSV, Excel or JSON from the run’s output.

What it costs

The API is free. The Actor charges $1.00 per 1,000 jobs plus a small start fee per run, with no subscription. At that price, exporting Discord's 27 jobs costs $0.03 and Databricks’s 926 jobs cost $0.93. Apify's Free plan includes $5 of usage a month, with no credit card.

Run Greenhouse Jobs API & Scraper on Apify

$1.00 per 1,000 jobs, no subscription. You run it with your own Apify account.