Greenhouse Jobs Scraper: Greenhouse Job Board API
Pricing
$2.00 / 1,000 job scrapeds
Greenhouse Jobs Scraper: Greenhouse Job Board API
Greenhouse jobs scraper for any Greenhouse job board (boards.greenhouse.io, job-boards.greenhouse.io). Exports all open Greenhouse jobs: title, location, remote flag, department, employment type, posting date, salary when published, description, apply URL. No API key. $2.00 per 1,000 jobs.
Pricing
$2.00 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
PulseData
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Features
Share
Greenhouse Jobs Scraper: Export Any Greenhouse Job Board
Greenhouse Jobs Scraper exports every open job from one or more Greenhouse job boards as JSON, CSV or Excel. You give it board URLs or just board tokens such as stripe, and it returns one record per job with title, location, offices, department, posting and update dates, the full description and the job URL. It costs $2.00 per 1,000 jobs, so a 500-job board costs about $1.00.
Features
- Scrape Greenhouse job boards by URL or by board token. A bare token like
airbnbis expanded tohttps://job-boards.greenhouse.io/airbnb. - Export Greenhouse jobs to CSV, JSON or Excel with the full description as HTML and plain text.
- Scrape EU Greenhouse boards on
boards.eu.greenhouse.ioandjob-boards.eu.greenhouse.io(pass the full URL for those). - Find the Greenhouse board behind a company careers page. Paste
https://company.com/careersand the actor looks in the page HTML for a Greenhouse embed or link. - Filter Greenhouse jobs by keyword, office location, remote and posting date before they are saved.
- Monitor new Greenhouse job postings of a company: with
onlyNewJobsa scheduled run returns and charges only jobs it has not delivered before. - No API key, no login and no proxy. Greenhouse publishes every board through its public Job Board API, which is what this actor reads.
Use cases
- Job board aggregation: keep a list of 200 Greenhouse companies in one input and refresh your own board daily.
- Recruiting and sourcing: see which departments a competitor is hiring into and in which offices.
- Market research: count open roles by Greenhouse department over time to track team growth at a set of companies.
- Lead generation: a company opening several "Data Engineer" roles is a likely buyer of data tooling. Put those titles in
keywordsand run weekly.
Input
{"startUrls": ["https://job-boards.greenhouse.io/stripe","airbnb","https://job-boards.eu.greenhouse.io/examplecompany"],"keywords": ["engineer", "analyst"],"locations": ["Dublin", "London", "Remote"],"remoteOnly": false,"postedWithinDays": 14,"includeDescription": true,"maxJobsPerCompany": 0}
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | array of strings | (required) | Greenhouse board URLs or bare board tokens, one per line. |
keywords | array | [] | Keep only jobs whose title contains one of these words (case-insensitive). |
locations | array | [] | Keep only jobs whose location or office names contain one of these strings. |
remoteOnly | boolean | false | Keep only jobs whose location text mentions remote, anywhere or similar. |
postedWithinDays | integer | 0 | Keep only jobs first published in the last N days (the update date is used when there is no publish date). 0 means no limit. |
includeDescription | boolean | true | Include descriptionHtml and descriptionText. Greenhouse returns them in the same request, so this adds no extra requests. |
maxJobsPerCompany | integer | 0 | Cap per board, applied after the filters. 0 means no limit. |
onlyNewJobs | boolean | false | Monitor mode: output and charge only jobs not delivered on an earlier run. |
monitorStoreName | string | empty | Key-value store that remembers delivered jobs. Empty means a name derived from the board URLs and filters. |
proxyConfiguration | object | { "useApifyProxy": false } | Optional Apify Proxy. |
Accepted Greenhouse URL formats:
https://job-boards.greenhouse.io/stripehttps://boards.greenhouse.io/stripehttps://boards.greenhouse.io/embed/job_board?for=stripe(the embed URL)https://job-boards.eu.greenhouse.io/companyandhttps://boards.eu.greenhouse.io/company(EU-hosted boards, read from the EU API)stripe(bare token, always expanded to the US host, so use the full URL for EU boards)https://company.com/careers(a page that embeds or links a Greenhouse board)
The board token is the last part of the board URL: for https://job-boards.greenhouse.io/stripe it is stripe.
Get new jobs from a Greenhouse board every day (monitor mode)
Turn on onlyNewJobs to get only the jobs a company posted since your last run:
{"startUrls": ["https://job-boards.greenhouse.io/stripe"],"maxJobsPerCompany": 0,"onlyNewJobs": true}
The IDs of delivered jobs are kept in a named key-value store in your Apify account, and later runs skip them. For alerts:
- Save the input as an Apify task.
- Add an Apify schedule, daily or weekly.
- Add an integration on the task (email, Slack, Google Sheets, Make, Zapier or a webhook) that fires on a succeeded run. Each run's dataset holds only the new jobs.
Details:
maxJobsPerCompanycounts new jobs only. Leave it at0on the first run so that run remembers every open job.- Jobs seen before are neither output nor charged.
- Without
monitorStoreNamethe store name is derived from the board URLs and filters, so each input keeps its own history. Set a name to share history between inputs, or a new one to start over. - A job cut off by
maxJobsPerCompany, the run timeout or the run's maximum cost is not remembered and comes on the next run. Schedule one run per store, since two parallel runs can deliver the same new job.
Output
One item per job:
{"title": "Abuse Investigator","company": "Stripe","location": "Dublin","locations": ["Dublin", "Dublin, Ireland"],"country": null,"remote": false,"workplaceType": null,"department": "8611 Security Analytics","team": null,"employmentType": null,"seniority": null,"salary": null,"postedAt": "2026-09-03T17:32:53.000Z","updatedAt": "2026-09-18T09:04:11.000Z","url": "https://stripe.com/jobs/search?gh_jid=8172508","applyUrl": "https://stripe.com/jobs/search?gh_jid=8172508","descriptionHtml": "<h2>Who we are</h2><p>…</p>","descriptionText": "Who we are\n\nStripe is a financial infrastructure platform…","ats": "greenhouse","atsJobId": "8172508","sourceUrl": "https://job-boards.greenhouse.io/stripe","scrapedAt": "2026-09-25T08:15:02.000Z"}
What Greenhouse exposes, and how it maps:
companyis the company name Greenhouse returns for the board (falls back to the token).locationis the job's location text;locationsadds the names of every office the job is attached to.departmentjoins all Greenhouse departments of the job with commas.postedAtis Greenhouse's first published date andupdatedAtits last update.urlandapplyUrlare Greenhouse's absolute URL for the job. Many companies point this at their own careers site, as Stripe does above.employmentTypeis filled only if the company has a custom Greenhouse field whose name contains "employment" or "type".- Greenhouse has no salary field in its public API.
salaryis filled only when a pay range appears near the start of the description text. team,country,workplaceTypeandseniorityare not published by Greenhouse and staynull.
If a token does not exist, the dataset gets one row with sourceUrl, ats, slug and an error message such as HTTP 404. Error rows are not charged.
Pricing
Pay per event: $0.002 per job saved to the dataset ($2.00 per 1,000 jobs). There is no start fee.
Worked example: you track 40 Greenhouse boards with about 150 open roles each, so 6,000 jobs per full run cost $12.00. Filter with keywords: ["engineer"] and keep, say, 1,800 of them, and the run costs $3.60, because jobs removed by filters are never charged. A daily run with postedWithinDays: 1 over the same boards typically returns a few dozen jobs and costs cents.
In monitor mode only new jobs are charged: a daily run over the same 40 boards that finds 25 new jobs costs 25 x $0.002 = $0.05, and a run with nothing new costs nothing in result events.
FAQ
How many jobs can it get from one board?
All of them. Greenhouse returns the whole board in one response, so there is no pagination limit. Use maxJobsPerCompany if you want fewer.
What can it not do? It only sees jobs the company publishes on its external board. Internal postings, application questions, hiring managers and candidate data are not available. It does not render JavaScript, so if a careers page loads Greenhouse through a script the actor cannot see, paste the board URL or the token instead.
Do I need proxies?
Normally no. The actor retries rate limits and server errors with backoff. Enable proxyConfiguration only for very large lists that hit HTTP 429.
Can I paste boards from other ATS here? This actor is set up for Greenhouse. For mixed lists (Lever, Ashby, Workday, Workable and others) use the Career Page Jobs Scraper, which auto-detects 12 systems.
Use it from Claude, ChatGPT or Cursor (Apify MCP server)
Add the Apify MCP server to Claude, ChatGPT, Cursor or any other MCP client with this URL, which loads only this actor as a tool:
https://mcp.apify.com?tools=pulsedata/greenhouse-jobs-scraper
Then ask, for example, "list the engineering jobs Stripe posted on Greenhouse in the last 14 days", and the assistant fills the input, runs the actor and reads the jobs back as JSON. Billing is the same as a normal run.
Paying from an AI agent without an Apify account (x402 and Skyfire)
An agent can buy a prepaid, spend-capped Apify token at Apify AGI, paid in USDC through x402 or from a Skyfire wallet, and use it for both the API and the MCP server. This actor runs with limited permissions, so it works with these tokens. The smallest token is $1, tokens expire 14 days after purchase, and Apify marks agentic payments as experimental.
Related actors
- Career Page Jobs Scraper (12 ATS): the multi-ATS version with auto-detection, for lists that mix Greenhouse with other systems.
- Lever Jobs Scraper: the same output for Lever boards, which also publish salary ranges and workplace type.
- Ashby Jobs Scraper: the same output for Ashby boards, common among newer startups.
- Workday Jobs Scraper: for large enterprises that run their careers site on Workday.
- Website Tech Stack Detector: add each hiring company's tech stack to score leads.