Greenhouse Jobs Scraper & API: Salary, Remote
Pricing
from $1.35 / 1,000 results
Greenhouse Jobs Scraper & API: Salary, Remote
Extract all open jobs from any company's Greenhouse careers page: title, location, salary range, remote flag, department, posted date and full description. Filter by keyword, location, remote and date. Official public board API: no login, no API key. $1.50 per 1,000 jobs.
Pricing
from $1.35 / 1,000 results
Rating
0.0
(0)
Developer
Joe Pena
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 hours ago
Last modified
Categories
Features
Share
What is Greenhouse Jobs Scraper?
Greenhouse Jobs Scraper extracts every open job from any company's Greenhouse careers page (boards.greenhouse.io and job-boards.greenhouse.io) into clean JSON, CSV or Excel. For each job you get the title, location, remote flag, salary range, department, office, posted date, apply URL and the full plain-text job description.
Paste one or more company names (Greenhouse board slugs such as airbnb or stripe) or careers-page URLs, click Start, and download the data a few seconds later. It reads Greenhouse's official public Job Board API, the same feed that powers each company's careers page. So there's no login, no API key, no proxies and no browser, and runs are fast and cheap.
Need Lever, Ashby, Workable, Recruitee or SmartRecruiters too? See the Multi-ATS Jobs Scraper.
What data can you extract from Greenhouse?
| Field | Example |
|---|---|
title | Senior Machine Learning Engineer, Relevance |
company | Airbnb |
location | United States |
isRemote | false |
salaryMin / salaryMax / salaryCurrency / salaryInterval | 200000 / 235000 / USD / year |
departments / offices | ["Engineering"] / ["United States"] |
postedAt / updatedAt | 2026-11-04T17:21:08+00:00 |
url | Direct link to the job posting |
description | Full job description as plain text (HTML removed) |
Also included: jobId, companySlug, ats, workplaceType, employmentType, salarySource, requisitionId, scrapedAt.
Greenhouse Jobs Scraper features
- 🏢 Many companies in one run: slugs,
boards.greenhouse.ioURLs,job-boards.greenhouse.ioURLs or embed URLs with?for=company - 🔎 Filters: title keywords, excluded words, location, remote only, posted within the last N days, max jobs per company
- 💰 Salary data: the pay-transparency range is parsed into min, max, currency and interval
- 🧾 LLM-ready text: clean plain-text descriptions for AI pipelines, search indexes and embeddings
- ⚠️ No silent failures: a
SUMMARYrecord in the key-value store lists every company and whether its board was found - 🔔 Monitor mode: return only jobs that are new since the last run, perfect for scheduled daily alerts
- 🔁 Apify platform built in: scheduling, API access, webhooks, and integrations with Google Sheets, Slack, Make, Zapier and more
How to scrape Greenhouse jobs
- Open the Input tab and add companies. The slug is the last part of the careers URL, e.g.
https://job-boards.greenhouse.io/stripe. - Optionally add title keywords (
engineer,data), locations (New York,Remote) or Posted within last N days. - Click Start.
- Download the results from the Output tab as JSON, CSV, Excel or HTML, or read them through the Apify API.
Input example
{"companies": ["airbnb", "https://job-boards.greenhouse.io/stripe", "discord"],"keywords": ["engineer"],"locations": ["United States", "Remote"],"postedWithinDays": 14,"maxItems": 500}
Output example
{"jobId": "8374537","title": "Senior Security Engineer, Threat Detection & Incident Response","company": "Airbnb","companySlug": "airbnb","ats": "greenhouse","url": "https://careers.airbnb.com/positions/8374537?gh_jid=8374537","location": "London, United Kingdom","isRemote": false,"departments": ["Security"],"postedAt": "2026-11-10T21:34:40+00:00","salaryMin": 96000.0,"salaryMax": 120000.0,"salaryCurrency": "GBP","salaryInterval": "year","salarySource": "parsed_from_description","description": "Airbnb was born in 2007 when two hosts welcomed three guests..."}
Monitor mode: only new jobs since the last run
Turn on Only new jobs since last run (onlyNew: true) and the Actor remembers every job it has returned for that search. The next run returns only jobs it hasn't returned before, so you pay only for new results.
- The first run returns everything that currently matches and saves it as the baseline.
- Seen IDs are stored in a named key-value store in your Apify account (
data-factory-greenhouse-monitor), one record per search. The record name comes from your search filters, so different searches keep separate histories. - Want to keep one history while you adjust filters? Set Monitor name (
monitorKey), e.g."daily-alert". - To start over, delete that record (or the whole store) in Storage → Key-value stores.
Schedule it for daily alerts
- Configure your search, turn on Only new jobs since last run, and save it as a task.
- Create an Apify Schedule for that task (daily or hourly).
- Add an integration (Slack, email, Google Sheets, Zapier, Make or a webhook) to push each run's new jobs where your team works.
{ "companies": ["stripe", "airbnb", "databricks"], "keywords": ["engineer"], "onlyNew": true, "maxItems": 500 }
How much does it cost to scrape Greenhouse jobs?
This Actor uses pay-per-result pricing: $1.50 per 1,000 jobs ($0.0015 per job). You only pay for jobs saved to your dataset. Companies with no matching jobs cost nothing.
- 1,000 Greenhouse jobs = $1.50
- 10,000 Greenhouse jobs = $15
- Apify's free plan includes $5 of monthly usage, which covers roughly 3,000 jobs with this Actor.
Use Max jobs in total to cap the cost of any run.
Use cases for Greenhouse job data
- Job boards and job aggregators: ingest thousands of tech jobs every day
- Sales prospecting: companies hiring for a role are showing a buying signal
- Salary benchmarking from pay-transparency ranges
- Competitive intelligence: track hiring by department and location at competitors
- Job alerts: schedule a daily run with Posted within last N days = 1 and send new jobs to Slack or email
Greenhouse API and integrations
You can run the Greenhouse Jobs Scraper from your own code with the Apify API or the Python and JavaScript clients:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("data_factory_nerd/greenhouse-jobs-scraper").call(run_input={"companies": ["airbnb", "stripe"], "keywords": ["engineer"], "maxItems": 200})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"], job["location"], job["salaryMin"])
FAQ
Is it legal to scrape Greenhouse jobs?
This Actor only reads job postings that companies publish publicly through Greenhouse's public Job Board API. It doesn't log in and doesn't collect personal data about candidates. Always use the data in line with the laws that apply to you.
Why is a company "not found"?
The company may not use Greenhouse, or it uses a different board slug. Open the company's careers page, copy its URL into the input, and check the SUMMARY record after the run.
Can I get only new Greenhouse jobs every day?
Yes. Turn on Only new jobs since last run and schedule the Actor daily (see Monitor mode above). Each run returns only jobs you haven't seen before.
Does it return salaries?
When a company publishes a pay range in the job post (common in US pay-transparency states), it is parsed into salaryMin, salaryMax, salaryCurrency and salaryInterval. Otherwise these fields are empty.
Found a bug or need a field?
Open an issue on the Issues tab. We monitor it and reply quickly.
Related Actors by data_factory_nerd
| Actor | What it does |
|---|---|
| Multi-ATS Jobs Scraper | Greenhouse, Lever, Ashby, Workable, Recruitee and SmartRecruiters jobs in one unified dataset |
| SAM.gov Contract Opportunities Scraper | US federal contract opportunities with NAICS, set-aside, deadlines and contacts |