Greenhouse Jobs Scraper — All Jobs, Salaries & New Roles
Pricing
from $0.01 / job scraped
Greenhouse Jobs Scraper — All Jobs, Salaries & New Roles
Scrape every open job from any company's Greenhouse board: full descriptions, departments, locations, salary when disclosed. Tracks which roles appeared and closed since your last run. No API key.
Pricing
from $0.01 / job scraped
Rating
0.0
(0)
Developer
Yuliia Kulakova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share

Every open job at any company that hires through Greenhouse — full descriptions, departments, locations, disclosed salaries — and, on repeat runs, exactly which roles appeared and which closed.
No login, no API key. One request per company covers the whole board.
What you get
Point it at company slugs (the last part of a boards.greenhouse.io address):
{"companies": ["stripe", "airbnb", "gitlab"]}
An unedited record from testing:
{"companySlug": "gitlab","title": "Commercial Legal Counsel, Public Sector","location": "Remote, US","isRemote": true,"departments": ["Legal and Corporate Affairs"],"salaryMin": 115000,"salaryMax": 162000,"salaryCurrency": "USD","salaryRaw": "$115,000—$162,000","description": "GitLab is an open core software company…","daysOpen": 12,"postingAge": "RECENT","isNewSinceLastRun": true,"firstPublished": "2026-08-05","applyUrl": "https://about.gitlab.com/jobs/apply/…","scrapedAt": "2026-08-17T07:20:00.000Z"}
Measured on live boards: Stripe returns 578 open roles, Cloudflare 304, GitLab 197, Airbnb 185 — each in a single request, a few seconds per company.
Track hiring, not just jobs
With trackChanges: true (default), every run remembers the board and the next run tells you what moved:
gitlab: 197 open jobs, 60 match filters | 4 new, 2 closed since 2026-08-10
- Every job carries
isNewSinceLastRun. - Set
newJobsOnly: trueand scheduled runs deliver just the fresh roles — a hiring feed for the companies you care about. - "New" always means new on the company's board. Changing your filters between runs never relabels old jobs as new — the snapshot tracks the board, not your query.
Why that matters: a new posting is a signal. Sales teams read "3 new DevOps roles at X" as a buying signal, recruiters get first-mover advantage on fresh openings, analysts read hiring velocity as company health.
Salary data — the honest version
Greenhouse has no structured salary field. Salaries appear in the description text when pay-transparency laws or company policy require them, and this scraper extracts the range into salaryMin / salaryMax / salaryCurrency.
Coverage measured on live boards: Airbnb 73%, GitLab 36%, Stripe 2% of postings disclose a range. It varies exactly this much between companies — any tool promising salaries for every job is making them up. Use minSalary knowing it also drops every posting that discloses nothing.
Filters
| Input | What it does |
|---|---|
keywords / excludeKeywords | Match against title, department and full description |
locations | e.g. ["remote", "london", "new york"] |
departments | e.g. ["engineering", "sales"] |
remoteOnly | Title or location marked remote |
postedAfter | Only roles first published since a date |
minSalary | Only roles whose disclosed range reaches the number |
newJobsOnly | Only roles that appeared since the previous run |
A typical monitoring setup:
{"companies": ["stripe", "gitlab", "figma", "cloudflare"],"keywords": ["engineer", "developer"],"remoteOnly": true,"trackChanges": true,"newJobsOnly": true}
Schedule it daily and the dataset is your feed of new remote engineering roles at those companies.
Use cases
- Recruiting — monitor competitors' boards; fresh postings mean active budgets and fair game for sourcing.
- Sales intelligence — new roles reveal initiatives: a company posting three data-platform jobs is about to buy data tooling.
- Job search — watch your target companies and apply on day one, not week three.
- Market research — hiring velocity and department mix across a portfolio of companies.
- HR analytics — how long roles stay open (
daysOpen,postingAge) and where teams are growing.
Limitations, honestly
You supply the company list. Greenhouse has no public directory of all boards; the actor scrapes the companies you name. A wrong slug is reported clearly ("xyz" is not a Greenhouse board) and does not break the run.
Salary coverage varies by company — see above. The field is extracted, never estimated.
Greenhouse boards only. Companies hiring through Lever, Ashby or Workday are different systems — this actor does one system well.
Remote detection is heuristic. A role is flagged remote when its title or location says so. Companies with unusual conventions may need the locations filter instead.
FAQ
Do I need an API key or Greenhouse account? No. The board API is public.
How fast is it? One request per company. Two large boards (763 jobs combined) returned in 5 seconds in testing.
How do I find a company's slug?
Open their careers page and look for boards.greenhouse.io/<slug> or job-boards.greenhouse.io/<slug> — pass the slug or the whole URL.
Can it discover which companies use Greenhouse? No — no such public index exists. Curate your list once; the actor handles the rest on schedule.
What happens on the very first run?
All jobs return with isNewSinceLastRun: null and the baseline is saved; deltas start from the second run.
Maintained by brilliant_gum. Issues and feature requests welcome on the Issues tab.