Greenhouse.io Jobs Scraper — Search 4,800 Greenhouse Job Boards
Pricing
from $0.40 / 1,000 jobs
Greenhouse.io Jobs Scraper — Search 4,800 Greenhouse Job Boards
Greenhouse jobs scraper: search 4,800 companies by job title — no company names needed — or pull any company's board: title, department, location, posted date, pay range, description — plus a hiring tracker: which roles are new or closed since your last run. No login.
Pricing
from $0.40 / 1,000 jobs
Rating
0.0
(0)
Developer
Northbell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Greenhouse.io Jobs Scraper
Know every week which roles your target companies opened and closed — without checking their careers pages. Put in the companies, schedule it, and get only the new roles (plus closed ones and a per-company count) from any company's public Greenhouse job board. Exact, not sampled: the official public API returns every open role at once. No login, no cookies, no proxies.
Try it now — the input is already filled in. Press Start: the two example boards (Stripe and Airbnb, 100 roles each in the example) return 200 roles in about 8 seconds, for about $0.11.
title | company | location | salaryMin | salaryMax | salaryCurrency |
|---|---|---|---|---|---|
| Account Manager | Airbnb | London, United Kingdom | 46000 | 54000 | GBP |
| Community Crisis Investigator | Airbnb | Canada | 85000 | 100000 | CAD |
| Counsel, Corporate | Airbnb | United States | 196000 | 230000 | USD |
78 of Airbnb's 100 carry the pay range the company publishes on Greenhouse (Stripe's do not). No company list? Leave Companies empty and fill in Title contains to search all 4,800 Greenhouse boards at once. Scheduled, each run says which roles are new and which have closed.
Why the "new / closed" is exact here
Most job scrapers search a job site and get back a sample: run the same search twice and a different slice comes back, so "new since yesterday" is partly noise. A Greenhouse board is different — the company's public API returns every open role at once. So this Actor keeps the list of role IDs from your last run and compares: a role that appears is new, a role that disappears has closed. No estimation.
Stripe (693 roles) and Airbnb (160) together came back in 3 seconds; 134 of Airbnb's 160 roles carried a published pay range.
What you get
| Field | |
|---|---|
title, department, team | as the company wrote them |
location, locations | the main location and every secondary one |
remote, workplaceType, employmentType | when the board provides them — otherwise null, not a guess |
salaryMin, salaryMax, salaryCurrency, salaryInterval | Greenhouse publishes a pay range when the company turns on pay transparency — common for US and UK roles. |
postedAt | the real publish date from the board |
isNewSinceLastRun | true / false, or null on the first run (unknown, not "old") |
description | full text, HTML stripped (turn off with Include the full description) |
jobUrl, applyUrl | links straight to the posting |
Closed roles come back as their own rows (type: "closed") with the title and when they were last seen. Each company also gets one free summary row (type: "company") with openRoles, newRoles, closedRoles and netChange — the hiring signal without counting rows yourself.
Input
Put the company's board name or careers-page URL in Companies — for example stripe or boards.greenhouse.io/stripe or job-boards.greenhouse.io/stripe. Many companies in one run is fine and cheaper than one run each.
Optional filters (title, location, remote only, published salary only) narrow what you get back. They do not change the new/closed comparison, which always uses the full board — so changing a filter never makes roles look "closed".
A company that is not on Greenhouse, or has no public board, comes back as an error row and the run carries on.
Example output
One real row from a test run (long text shortened here with …):
{"type": "job","provider": "greenhouse","board": "airbnb","jobId": "8184174","title": "Account Manager","companyName": "Airbnb","department": "Business Development","team": null,"location": "London, United Kingdom","locations": ["London, United Kingdom"],"workplaceType": null,"remote": null,"employmentType": null,"postedAt": "2026-09-09T08:35:19.000Z","updatedAt": "2026-09-30T00:00:54.000Z","salaryMin": 46000,"salaryMax": 54000,"salaryCurrency": "GBP","salaryInterval": "year","salaryText": "United Kingdom Annual Pay Range","jobUrl": "https://careers.airbnb.com/positions/8184174?gh_jid=8184174","applyUrl": "https://careers.airbnb.com/positions/8184174?gh_jid=8184174","description": "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 who have welcomed over 2 b…","company": "Airbnb","isNewSinceLastRun": false}
Search every company on Greenhouse — no company names needed
Leave Companies empty and fill in Title contains (e.g. data engineer), optionally Location contains (e.g. london, remote). The Actor checks 4,817 public Greenhouse job boards (163,196 open roles when the list was built, 2026-10-02) and returns the matching roles, newest first (about 2 minutes for all of them). Price: $0.02 per all-companies search on top of the usual $0.01 per run and per-role fee (from 17 October 2026; free until then) — a 200-role search costs about $0.13. Runs with your own company list never pay it. Scheduled, it reports exactly which matching roles are new and which closed since the last run — a board that could not be reached is never reported as closed.
{ "titleKeywords": "data engineer", "locationKeywords": "remote", "maxJobs": 200 }
Get only the new roles every morning (3 steps)
- Open this Actor in Apify Console, fill in your input, set What to return to Only … new since the last run, and click Save as a new task.
- On the task, add a Schedule — daily at 07:00, or weekly on Monday.
- Open the task's Integrations tab and connect Slack, email, Google Sheets (or Zapier / Make / a webhook). Each run then delivers only what is new.
You pay only for the new rows plus $0.01 per run, so a quiet day costs about a cent.
Pricing
Pay per role returned — $0.50 per 1,000 roles, plus $0.01 per run. Closed-role rows and errors are free.
**Measured, not estimated:** about **$0.0037 per 1,000 roles** of Apify platform usage at 512 MB, ~13 roles/s (848 roles in 66 s, 2026-10-06). That is our own running cost — already included in the per-role price; nothing is billed on top.For AI agents
Call with {"companies": ["stripe"]}. Each row has type: job, closed or error. isNewSinceLastRun: null means "no previous run to compare with", not "old".
Filters on every run (10/2026): posted within the last N days, experience level (read from the title: intern → executive, also returned as a seniority column) and employment type. They only narrow what is returned — no extra requests, no extra cost.
Same core columns on every northbell job scraper (10 company-career-page scrapers + 15 job sites), so you can stack them into one table: jobId, title, company, location, remote (true / false / null), employmentType, postedAt, jobUrl, salaryMin, salaryMax, salaryCurrency, salaryInterval, isNewSinceLastRun. Unknown is null, never a guess.
Sister Actors
Greenhouse Jobs Scraper · Lever Jobs Scraper · Ashby Jobs Scraper · Workday Jobs Scraper · Workable Jobs Scraper · SmartRecruiters Jobs Scraper · Recruitee Jobs Scraper · Personio Jobs Scraper · Breezy HR Jobs Scraper — same fields, same exact change tracking, one per job-board provider.
For LinkedIn: LinkedIn Company Jobs Scraper · Free LinkedIn Job Details from URL.