Greenhouse Jobs Scraper: Any Greenhouse Job Board
Pricing
from $0.80 / 1,000 jobs
Greenhouse Jobs Scraper: Any Greenhouse Job Board
Get every open job from any Greenhouse job board (boards.greenhouse.io, job-boards.greenhouse.io): title, department, locations, remote flag, salary when published, posted date, apply link and full description. Paste the board URL, its name or the company website. Pay per job plus a small start fee.
Pricing
from $0.80 / 1,000 jobs
Rating
0.0
(0)
Developer
PlainRows
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Get every open job from any Greenhouse job board (boards.greenhouse.io, job-boards.greenhouse.io, embedded boards) as clean rows: title, department, locations, remote flag, salary range when the company publishes it, posting and update dates, job and apply link, and the full description as plain text. Paste the job board URL, just the board name (airbnb) or the company website, one company per line, up to 1,000 companies per run.
It reads the public Greenhouse job board API that careers pages use: no browser, no proxies, no login. One request brings all the jobs of a board, so a board of several hundred jobs takes about a second. You pay per job returned, plus $0.002 per run start. Companies not found, boards without open jobs and jobs removed by your filters are free.
Lever, Ashby, Recruitee, Workable, SmartRecruiters and Workday boards work in the same run, with the same output (see ATS Jobs Scraper for those, and Workday Jobs Scraper for Workday careers sites).
Typical uses
- Job boards and aggregators: fill a niche board with fresh jobs straight from the thousands of startups and tech companies that hire through Greenhouse.
- Sales and recruiting intelligence: which target accounts are hiring, for which teams, in which cities.
- Market and talent research: count openings per department, follow hiring trends, compare published salary ranges across companies.
- Job seekers and career tools: watch a list of companies for new roles matching your keywords or locations. With Only new jobs on, a scheduled run returns (and bills) only jobs it has never delivered.
- Automations and AI agents: feed n8n, Make, Zapier, Google Sheets, Airtable or an MCP client with structured JSON.
What you get for each job
| Field | Description |
|---|---|
company, ats, boardToken, boardUrl | Company name as shown on the board (e.g. Airbnb), greenhouse, the board name and its URL |
jobId, title | Greenhouse job ID (e.g. 8274802) and job title |
department | Department(s) as set by the company (e.g. Software Engineering) |
location, locations | Location as published and all listed places (offices included) |
workplaceType, isRemote | remote, hybrid or onsite when the company sets it; isRemote is true for remote jobs or jobs listing a remote location |
employmentType | FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN when the company publishes it |
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText | Pay range when the company publishes it (Greenhouse pay transparency); several ranges (e.g. per US zone) are all listed in salaryText |
postedAt, updatedAt | First published and last updated, UTC ISO 8601 |
jobUrl, applyUrl | Job page, which carries the Apply button (often the company's own careers site) |
descriptionText | Full description as readable plain text (descriptionHtml too with includeHtml) |
companyInput, observedAt | Your input line and when the data was fetched |
team and countryCode are always null on Greenhouse: its public job data has no such fields. Missing values are always null, never guessed. Jobs are sorted newest first within each company.
Input
{"companies": ["https://job-boards.greenhouse.io/airbnb","https://boards.greenhouse.io/figma","stripe"],"maxJobsPerCompany": 500,"titleKeywords": ["engineer"],"locations": ["London", "Remote"],"departments": ["Engineering"],"remoteOnly": false,"postedWithinDays": 7}
- companies: up to 1,000 per run. Greenhouse boards as
boards.greenhouse.io/<name>,job-boards.greenhouse.io/<name>, embedded boards (boards.greenhouse.io/embed/job_board?for=<name>), the API URLboards-api.greenhouse.io/v1/boards/<name>/jobs, or just the board name (stripe): names are looked up on Greenhouse first, then on Lever, Ashby, Recruitee and SmartRecruiters (the first board with open jobs wins; setatstogreenhouseto look only there). A company website is also accepted (see below), and so are Lever, Ashby, Recruitee, Workable, SmartRecruiters and Workday URLs. - maxJobsPerCompany: 1 to 10,000 (default 500), most recent first.
- Free filters:
titleKeywords,excludeTitleKeywords,locations(case and accent insensitive),departments,remoteOnly,postedWithinDays. Jobs removed by a filter are never billed. - includeDescription (default true) and includeHtml (default false) control description fields.
- onlyNewJobs and monitorName (optional, monitoring): see below.
Companies without a result get one free row with found: false and a reason: COMPANY_NOT_FOUND, NO_OPEN_JOBS, NO_JOB_MATCHED_FILTERS, NO_NEW_JOBS, DUPLICATE_BOARD or SOURCE_UNAVAILABLE (the job board did not answer; retry later).
Where to find the board name
Open the company's job list. If its address is job-boards.greenhouse.io/airbnb or boards.greenhouse.io/airbnb, the board name is airbnb. Many companies show Greenhouse jobs on their own careers site: a job link that contains gh_jid= means Greenhouse, and the board name is usually the company name (try it). If the careers page embeds the board (boards.greenhouse.io/embed/job_board?for=<name>), paste the company website and the Actor finds that link itself.
Monitor companies: get only new jobs
Turn on Only new jobs ("onlyNewJobs": true) and add an Apify schedule (daily, for example). The first run returns every matching job and remembers their IDs in a key-value store of your own Apify account; each later run returns and bills only jobs it has never delivered. A company with nothing new gets a free row with reason NO_NEW_JOBS.
- History is kept per job board, whatever the filters: a job is delivered once. Jobs left out by
maxJobsPerCompanyor your run budget stay new for the next run. - Use a different monitorName per monitoring task to keep separate histories, or a new name to start over. The default history (
plainrows-jobs-monitor) is shared with ATS Jobs Scraper and Workday Jobs Scraper: a job delivered by one is not delivered again by the others.
Output example
Real row from a run on 2026-10-13 (input https://job-boards.greenhouse.io/airbnb; description shortened here):
{"companyInput": "https://job-boards.greenhouse.io/airbnb","found": true,"company": "Airbnb","ats": "greenhouse","boardToken": "airbnb","jobId": "8274802","title": "Senior Software Engineer, Payments Platform","department": "Software Engineering","team": null,"location": "United States","locations": ["United States"],"countryCode": null,"workplaceType": "remote","isRemote": true,"employmentType": null,"salaryMin": 196000,"salaryMax": 227000,"salaryCurrency": "USD","salaryPeriod": null,"salaryText": "Pay Range: USD 196,000-227,000","postedAt": "2026-10-12T20:32:34.000Z","updatedAt": "2026-10-12T20:32:34.000Z","jobUrl": "https://careers.airbnb.com/positions/8274802?gh_jid=8274802","applyUrl": "https://careers.airbnb.com/positions/8274802?gh_jid=8274802","boardUrl": "https://job-boards.greenhouse.io/airbnb","boardDiscoveredFrom": null,"descriptionText": "Airbnb was born in 2007 when two hosts welcomed three guests to their San Francisco home, and has since grown to over 5 million hosts...","observedAt": "2026-10-13T19:42:28.988Z","schemaVersion": "1.0"}
Company websites
You can also paste a company website (https://www.example.com). The Actor first looks for a job board named after the domain; if none has open jobs, it reads the homepage and, if needed, one careers page linked from it, and looks for a link to a Greenhouse board (or another known job board), including embedded boards; boardDiscoveredFrom tells you on which page it was found. At most 2 pages per website, without JavaScript, within 20 seconds, respecting robots.txt.
When the careers site is built with JavaScript or links to Greenhouse only from each job page, nothing is found: the company comes back free as COMPANY_NOT_FOUND, with a note saying the website was read. Paste the board URL or name instead.
Pricing
Pay per job returned plus $0.002 per run start, no subscription, no proxy costs. See the Pricing tab for current prices: one event per job found, cheaper on higher Apify plans. Salary, locations, dates and the full description are included in that price (no "details" add-on).
Companies not found, boards without open jobs, duplicate boards, jobs removed by your filters and input mistakes cost nothing beyond the start fee. The run never spends more than the maximum cost you set; when the budget runs out, the most recent jobs are delivered first.
Free Apify plan: each run returns up to 20 jobs for up to 3 companies, so you can check the output. A paid Apify plan removes these limits.
Use it from code, automations or AI agents
API (one call, results returned directly):
curl -X POST "https://api.apify.com/v2/acts/plainrows~greenhouse-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companies": ["airbnb", "figma"], "titleKeywords": ["engineer"], "maxJobsPerCompany": 100}'
n8n, Make, Zapier: use the Apify integration, pick plainrows/greenhouse-jobs-scraper, schedule it daily and push new jobs to Google Sheets, Airtable, Slack or your job board's database (jobId + boardToken is a stable key for de-duplication).
AI agents (MCP): add https://mcp.apify.com?tools=plainrows/greenhouse-jobs-scraper to Claude, Cursor or any MCP client. The agent gets a typed tool and pays per result.
What this is not
- Not a search across all companies: you choose the companies. It does not crawl LinkedIn, Indeed or Google Jobs.
- EU-hosted boards (
job-boards.eu.greenhouse.io) are looked up on the public Greenhouse API and may not be found. - No recruiter or hiring manager data. Custom Greenhouse fields are not exported (only workplace and employment type are read from them), e-mail addresses are removed from descriptions. Descriptions are otherwise the company's own text.
- Not affiliated with Greenhouse.
Run summary
Each run stores a summary in the key-value store (OUTPUT): companies with results, without new jobs (companiesWithoutNewJobs, jobsAlreadySeen, monitoring only), not found, without open jobs or unavailable, boards per ATS, open jobs seen, jobs removed by filters, jobs over your per-company limit or cut by the budget, duplicates and invalid inputs, and anything skipped because of the free-plan or budget limit.
FAQ
How do I scrape Greenhouse jobs?
Paste the job board URL (https://job-boards.greenhouse.io/airbnb) or just the board name (airbnb) in companies and run. One row per job with department, locations, remote flag, salary range when published, posting date, apply link and full description, newest first.
Does it return salaries?
Yes, when the company publishes a pay range on Greenhouse (pay transparency, common for US jobs): salaryMin, salaryMax, salaryCurrency and every range in salaryText. Otherwise these fields are null; a range written only in the text stays in descriptionText.
How many jobs per board?
All open jobs of the board, from one request: boards of nearly 900 jobs were read in a few seconds in our tests. maxJobsPerCompany (default 500) caps what you get and pay for.
Can I keep only remote, recent or engineering jobs?
Yes: remoteOnly, postedWithinDays, titleKeywords, locations and departments filter for free; removed jobs are not billed.
Can I search jobs across all companies? No: you choose the companies. To search jobs by title and city across job boards, use Google Jobs Scraper.
More PlainRows tools
Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.
- SEO and keywords: Keyword Search Volume, CPC & Difficulty · Keyword Ideas Generator · Google Autocomplete & People Also Ask · Google Trends Explorer · Website Organic Traffic & Top Keywords · Bulk Domain Authority Checker · Backlink Checker · Broken Link Checker · AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode) · Google Maps Rank Tracker (Geo-Grid Local SEO)
- Leads and companies: Google Maps Scraper · Google Maps Email Extractor · Website Technology Checker · Website Email Extractor · ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby) · Workday Jobs Scraper · Google Jobs Scraper · Google Ads Scraper (Transparency Center) · Company Registry Lookup (SIRENE, LEI, Brreg) · Public Tenders Search (EU TED & UK)
- E-commerce and travel: Amazon Product Search Scraper · Google Shopping Prices Scraper · Google Hotels Prices Scraper · Tripadvisor Reviews Scraper · Trustpilot Reviews Scraper
- Content and media: Google News Scraper · YouTube Search Scraper · YouTube Comments Scraper · Google Images Scraper · Website Screenshot API · Google Maps Reviews Scraper · App Store & Google Play Reviews Scraper
Support
Missing a field, an ATS or found a bug? Open an issue on this page. Issues are read and answered.