Greenhouse Jobs Scraper & API: Salary, Remote avatar

Greenhouse Jobs Scraper & API: Salary, Remote

Pricing

from $1.35 / 1,000 results

Go to Apify Store
Greenhouse Jobs Scraper & API: Salary, Remote

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

Joe Pena

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 hours ago

Last modified

Features

Limited permissions

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?

FieldExample
titleSenior Machine Learning Engineer, Relevance
companyAirbnb
locationUnited States
isRemotefalse
salaryMin / salaryMax / salaryCurrency / salaryInterval200000 / 235000 / USD / year
departments / offices["Engineering"] / ["United States"]
postedAt / updatedAt2026-11-04T17:21:08+00:00
urlDirect link to the job posting
descriptionFull 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.io URLs, job-boards.greenhouse.io URLs 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 SUMMARY record 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

  1. 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.
  2. Optionally add title keywords (engineer, data), locations (New York, Remote) or Posted within last N days.
  3. Click Start.
  4. 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

  1. Configure your search, turn on Only new jobs since last run, and save it as a task.
  2. Create an Apify Schedule for that task (daily or hourly).
  3. 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 ApifyClient
client = 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

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.

ActorWhat it does
Multi-ATS Jobs ScraperGreenhouse, Lever, Ashby, Workable, Recruitee and SmartRecruiters jobs in one unified dataset
SAM.gov Contract Opportunities ScraperUS federal contract opportunities with NAICS, set-aside, deadlines and contacts