Run it on Apify
$1.00 per 1,000 jobs, no subscription. You run it with your own Apify account, and Apify handles billing.
Who it’s for
- Recruiters and staffing agencies tracking which companies are hiring
- Sales teams using new openings as a buying signal
- Developers of job boards, job alerts and salary tools
- Analysts building hiring and compensation datasets
What you can do with it
- Export every open role from companies that hire with Greenhouse, with salary ranges and full descriptions
- Track new and closed roles at target companies every day
- Build a job or salary dataset from thousands of Greenhouse boards
How it works
Greenhouse publishes every open job of a company through a public job-board API (documentation), the feed companies use to show openings on their own sites. The Actor reads that API for each board you give it (a board URL such ashttps://job-boards.greenhouse.io/discord or just the board name discord), without a browser, and applies your keyword, location, department and remote filters before anything is billed. Reading the API instead of scraping HTML means complete records, including pay ranges when the company publishes them, and nothing breaks when a company redesigns its careers page.
Example output
A real record from a test run on job-boards.greenhouse.io on 2026-11-05. Fields the page didn’t publish are left out here; the Actor returns them asnull.
Fields
A field is filled when the source publishes it. The Actor never guesses a value: a missing field comes back as
null. “Filled in latest test” is the share of records from the latest test run (discord on Greenhouse) that had the field; other sources publish more or less.
Pricing
You pay $1.00 per 1,000 jobs, plus a start fee of $0.00005 per run. Jobs removed by your keyword, location, department or remote filters are not charged.
Set
maxItems or the run’s Maximum cost per run in Apify to cap spending.
API
Every Apify Actor is also a REST endpoint, so Greenhouse Jobs API & Scraper works as a Greenhouse jobs API, a Greenhouse job board API or an ATS jobs API. Call it from any language with the Apify REST API, or with Apify’s JavaScript and Python clients. You need an Apify API token.Greenhouse jobs API request
MCP
Apify’s MCP server exposes this Actor as a tool to Claude, Cursor and other MCP clients. Open this Actor’s MCP setup page for setup steps per client, or connect it with this URL:.cursor/mcp.json) and other clients that read an mcpServers config:
Automation
n8n, Make and Zapier all connect to Apify. Each example below uses Actorrocketyard/greenhouse-jobs-scraper with this input:
n8n
Copy this workflow and paste it onto an n8n canvas. It runs the Actor every morning through an HTTP Request node and returns the records as n8n items.Apify API token, with your token from Apify Console as the bearer token. The token stays in n8n’s credential store; the workflow only names the credential. Change the input in the node’s JSON body to your own.
The node waits up to 300 seconds, which is also the limit of Apify’s synchronous endpoint. An input that yields nothing comes back as an item with an error field, which you can drop with a Filter node. Apify also publishes a community node, @apify/n8n-nodes-apify, with a Run an Actor and get dataset operation.
Make
- Add Apify’s Run an Actor module and connect your Apify account.
- Choose
rocketyard/greenhouse-jobs-scraper, paste the input above and set Run synchronously to Yes. Make limits how long a synchronous run can take, depending on your plan. For longer runs, start the scenario from Watch Actor Runs instead. - Add Get Dataset Items with the run’s default dataset ID.
- Send the items wherever you need them, for example with Google Sheets Add a Row, mapping
title,company,locationandworkplaceType.
Zapier
- Add Apify’s Run Actor action, connect your Apify account, choose
rocketyard/greenhouse-jobs-scraperand paste the input above. - Zapier stops synchronous runs after 30 seconds. For anything larger than a small run, let the run continue in the background and start a second Zap from the Finished Actor run trigger.
- Add Fetch dataset items with the run’s dataset ID, then map
title,company,locationandworkplaceTypeinto your app. - Test with a small input and check that the Zap handles every record before you turn it on.
Limits
- Only companies whose careers pages are hosted on Greenhouse, with a public job board.
- Pay ranges appear only when the company publishes one on the posting.
- Jobs that a company has closed are no longer on its board, so each run returns the roles open right now.
FAQ
How much does it cost?
$1.00 per 1,000 jobs plus $0.00005 per run, billed by Apify. 10,000 jobs cost $10.00. There is no subscription, and you can cap any run with Maximum cost per run. Your Apify plan sets your discount tier (Platinum and Diamond are enterprise tiers):How do I call it from the API?
One request starts a run and returns its results, using your Apify API token:What happens when a URL fails?
The dataset gets one free error item for it, with a code and the reason, and the other inputs in the run carry on. Error codes explains each code, whether a retry helps and what to do.Which companies does it work on?
Any company whose careers page is hosted on Greenhouse, with URLs likehttps://job-boards.greenhouse.io/discord. The board name is the part after the domain (discord).
What happens when a field is missing?
The field comes back asnull. The Actor reports what the source publishes and never fills in guesses.
