Export all open jobs from a Greenhouse board to CSV or JSON
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.
| Free API with curl and jq | Greenhouse Jobs API & Scraper over REST | Greenhouse Jobs API & Scraper without code | |
|---|---|---|---|
| Cost | Free | $1.00 per 1,000 jobs | $1.00 per 1,000 jobs |
| You need | curl, jq and somewhere to run them | An Apify API token | An Apify account |
| Several boards at once | Write a loop | Built in | Built in |
| Salary columns and plain-text descriptions | Write the mapping | Included | Included |
Find the board name
Section titled “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:
curl -s -o /dev/null -w "%{http_code}\n" "https://boards-api.greenhouse.io/v1/boards/discord/jobs"Option 1: the free Greenhouse job board API
Section titled “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:
curl -s "https://boards-api.greenhouse.io/v1/boards/discord/jobs?content=true&pay_transparency=true" -o discord.jsonjq '.meta.total' discord.jsonThis turns it into a CSV with one row per job:
jq -r '["id","title","location","department","updated_at","url"], (.jobs[] | [.id, .title, .location.name, ([.departments[].name] | join("; ")), .updated_at, .absolute_url]) | @csv' discord.json > discord.csvFor 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=truethere are no descriptions or departments. Withoutpay_transparency=truethere are no pay ranges. - Pay ranges are in cents:
min_centsof20000000is $200,000, underpay_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
Section titled “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:
curl -s -X POST "https://api.apify.com/v2/acts/rocketyard~greenhouse-jobs-scraper/run-sync-get-dataset-items?format=csv" \ -H "Authorization: Bearer $APIFY_TOKEN" \ -H 'content-type: application/json' \ -d '{"companies":["discord","figma"]}' \ -o jobs.csv- Use
format=jsonorformat=xlsxfor JSON or Excel. - Add
&fields=title,company,location,salaryMin,salaryMax,salaryCurrency,urlto 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 /runsand 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
Section titled “Option 3: no code”- Open Greenhouse Jobs API & Scraper on Apify and click Try for free.
- Add
discordto Job board names, or paste the board’s address into Job board URLs. - Click Start.
- When the run finishes, export the results as CSV, Excel or JSON from the run’s output.
What it costs
Section titled “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.
