Greenhouse Jobs Scraper avatar

Greenhouse Jobs Scraper

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
Greenhouse Jobs Scraper

Greenhouse Jobs Scraper

Scrape every active job from any Greenhouse careers board — titles, locations, departments, offices, full descriptions, custom fields, and application form questions. Live from the official API, no cache or AI guesswork. Filter by title, location, department, date, or remote-only at the source.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Nate Schnell

Nate Schnell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

What does Greenhouse Jobs Scraper do?

Greenhouse Jobs Scraper pulls every active job from any company's Greenhouse-hosted careers board, live from the official Greenhouse Job Board API. Paste the board token (e.g. airbnb, stripe) or any Greenhouse URL, get back a clean dataset of every posting — titles, locations, departments, offices, custom hiring metadata, the full HTML description, and optionally the application form's questions. Great for recruiters tracking competitor hiring, lead-gen pipelines targeting hiring companies, job aggregators backfilling postings, and analysts mapping talent demand.

What data can you extract from Greenhouse?

Each emitted record has 20 fields. The most common ones:

  • Identityid, internalJobId, requisitionId, board (token), absoluteUrl
  • Title & companytitle, companyName
  • Locationlocation (string), offices[] (with Greenhouse office IDs and city/region)
  • Departmentdepartments[] (with Greenhouse department IDs)
  • TimingfirstPublished, updatedAt, applicationDeadline
  • Descriptioncontent (HTML, entity-decoded), optional contentText (plain text)
  • Custom hiring fieldsmetadata[] carries everything the company configured on the board (workplace type, salary band, employment type, etc.)
  • Application form — optional questions object with custom questions, demographic questions, location questions, and compliance notices

Every Greenhouse-supported field is preserved with the original Greenhouse IDs, so records can be joined back to internal hiring data.

How to use Greenhouse Jobs Scraper

  1. Create a free Apify account.
  2. Open Greenhouse Jobs Scraper and click Try for free.
  3. Paste one or more board tokens or URLs into Greenhouse boards. The token is the last path segment of a company's careers URL — e.g. boards.greenhouse.io/airbnbairbnb.
  4. (Optional) Add filters: Title includes, Location excludes, Department includes, Remote only, Only jobs updated after, etc. Filtering runs at the source, before billing.
  5. Click Save & Start. Each board returns in 1–10 seconds depending on size.
  6. Download results from the Storage tab in JSON, CSV, Excel, XML, or HTML.

How much does it cost?

Greenhouse Jobs Scraper is pay-per-result: you're billed one event per emitted job, regardless of how many boards you query.

  • $0.0015 per job (Free + Bronze plans)
  • $0.001 per job (Silver, Gold, Platinum, Diamond)
  • The Apify Free plan includes $5/month of credit, enough for ~3,300 free jobs.
  • No minimum — pull 1 job or 50,000.
  • Filters (title, location, department, date, remote) are applied at the source, so filtered-out jobs aren't billed.

Cost tip: setting includeContent: false doesn't change the per-job price, but it does cut the dataset size by ~95% if you only need titles and links.

Input

Required: boards (array of tokens or URLs). Every other field is optional.

{
"boards": ["airbnb", "stripe", "https://boards.greenhouse.io/figma"],
"includeContent": true,
"parseContent": true,
"titleFilter": ["engineer", "designer"],
"locationExcludeFilter": ["india"],
"departmentFilter": ["engineering"],
"remoteOnly": false,
"updatedAfter": "2026-04-01",
"maxItems": 200
}

See the Input tab for every field with help text. Common patterns:

  • Pull everything from one company: { "boards": ["airbnb"] }
  • Just titles and links (cheap fast pull): { "boards": ["stripe"], "includeContent": false }
  • Remote engineering jobs across several companies: { "boards": ["airbnb","stripe","figma"], "remoteOnly": true, "departmentFilter": ["engineering"] }
  • Build an LLM-friendly dataset: { "boards": ["airbnb"], "parseContent": true, "includeQuestions": true }

Output

One record per active job. Sample:

{
"id": 7649441,
"internalJobId": 3369660,
"requisitionId": "ONE",
"board": "airbnb",
"companyName": "Airbnb",
"title": "Account Executive (12 Month FTC)",
"absoluteUrl": "https://careers.airbnb.com/positions/7649441?gh_jid=7649441",
"location": "Paris, France",
"departments": [{ "id": 57796, "name": "Sales" }],
"offices": [{ "id": 178, "name": "Paris, France", "location": "Paris, France" }],
"firstPublished": "2026-02-24T09:04:33-05:00",
"updatedAt": "2026-02-24T09:25:19-05:00",
"language": "en",
"applicationDeadline": null,
"metadata": [
{ "id": 10216612, "name": "Workplace Type", "value": "Hybrid", "valueType": "single_select" }
],
"content": "<p>Airbnb was born in 2007 ...</p>",
"contentText": "Airbnb was born in 2007 ...",
"questions": null,
"scrapedAt": "2026-05-21T19:16:56Z",
"source": "https://boards-api.greenhouse.io/v1/boards/airbnb/jobs?content=true"
}

Empty boards return zero records (Greenhouse responds 200 with {"jobs":[]}). Boards that don't exist or have moved off Greenhouse log a warning and skip — your run isn't billed for them.

Integrations

Greenhouse Jobs Scraper works with the full Apify integration set: Make, Zapier, n8n, Slack, Google Drive, GitHub, Airbyte, scheduled runs, and the Apify API. Trigger runs from your CRM, push fresh jobs into a Sheet or a database, or fan out webhook notifications when new postings appear. See Apify integrations.

  • Indeed Jobs Scraper — for jobs hosted on Indeed (millions of postings across all employers, not just Greenhouse-using companies).
  • For multi-ATS aggregation across Workday + Lever + Ashby + Greenhouse and 50 other systems, the closest fit on the Store is fantastic-jobs/career-site-job-listing-api — it's a DB query against a pre-crawled index, not a live scrape.

FAQ

How does Greenhouse Jobs Scraper work?

It hits https://boards-api.greenhouse.io/v1/boards/{token}/jobs?content=true — Greenhouse's official public Job Board API — and normalizes the response into the dataset schema. Optional features (plain-text body, application questions) fetch one extra endpoint per job. No login, no proxy, no headless browser.

Can I use Greenhouse Jobs Scraper as an API?

Yes. Trigger a run via the Apify REST API:

POST https://api.apify.com/v2/acts/schnellscrapers~greenhouse-jobs-scraper/runs?token=<APIFY_TOKEN>

The Apify console exposes a run-sync-get-dataset-items endpoint that returns the records inline when the run finishes — handy for synchronous integrations.

Can I use it in Python or Node.js?

from apify_client import ApifyClient
client = ApifyClient(token="<APIFY_TOKEN>")
run = client.actor("schnellscrapers/greenhouse-jobs-scraper").call(run_input={
"boards": ["airbnb", "stripe"],
"titleFilter": ["engineer"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["companyName"], item["location"])
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('schnellscrapers/greenhouse-jobs-scraper').call({
boards: ['airbnb', 'stripe'],
titleFilter: ['engineer'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Greenhouse job boards are public-facing and the Job Board API is documented for third-party use at developers.greenhouse.io. Greenhouse Jobs Scraper hits only the official API and respects robots.txt. As with any scraping, the data you collect is what's already publicly available; storing or republishing it must comply with the hiring company's terms and any applicable privacy laws (GDPR, CCPA).

Why is my company's board returning a 404?

The board token is the slug in the company's Greenhouse careers URL — boards.greenhouse.io/<token>. Some companies have moved off Greenhouse (Linear, Retool, HashiCorp, Coinbase, Snowflake all 404 today) or use a custom-domain alias that maps to a different token. Open the company's careers page and check the URL the listings load from.

How fresh is the data?

Live — every run hits Greenhouse's API directly. Compare to DB-aggregator actors (e.g. fantastic-jobs/career-site-job-listing-api), which have an indexing lag of up to 30 minutes per their docs.

Can I get application form questions?

Yes — set includeQuestions: true. This fetches boards-api.greenhouse.io/v1/boards/{token}/jobs/{id}?questions=true per job and merges the result into a questions field. One extra HTTP request per job, so leave off for large pulls unless you need it.

Your feedback

Found a bug, missing a field, or want a new filter? Open an issue on the actor's Issues tab or email me. Every report gets read.