Jobs
Greenhouse Jobs Scraper — Any Company Board
Scrape every open job posting from any Greenhouse-hosted company career board into one normalized dataset — department/location/remote filters, full HTML+plain-text descriptions, best-effort salary mining.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Greenhouse (boards-api.greenhouse.io) is one of the most widely-adopted ATS platforms among VC-backed tech employers — Stripe, Airbnb, GitLab, Coinbase, Robinhood, Instacart, Pinterest, Lyft, Discord and more all run live Greenhouse boards today. This Actor is the Greenhouse specialist: richer per-job fields, department/location/remote filtering, full HTML+plain-text content extraction, and best-effort salary mining, sold on depth rather than the shallow multi-ATS breadth of multi-ats-jobs-scraper.
What we handle for you
- 🔁 Retries with exponential backoff on
408 / 429 / 5xxand network errors (2s start, doubling, 30s cap, 5 attempts) — one flaky board never stalls the rest of a bulk multi-board run. - 📋 Per-run status you can trust — every run reports exactly how many jobs were scraped, across how many boards, and how many tokens weren't found. No silent empty datasets.
- 🧩 One normalized schema across every company — raw Greenhouse responses vary wildly in which optional fields each employer populates; we flatten that into one consistent, Pydantic-validated row shape whether you're pulling from 1 board or 1,000.
- 🧊 Clean, typed dataset rows — ISO-8601 timestamps, stable job IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for job rows that land in your dataset. No data, no charge.
Use cases
- Recruiter pipelines — track specific employers' Greenhouse boards for new openings by department or location.
- Hiring-intent signal — SDR/BD teams reading open reqs as a growth signal ahead of outbound.
- HR-tech and comp benchmarking — build a normalized Greenhouse coverage dataset across many companies at once.
- Remote-jobs aggregation — filter to heuristically-remote roles across every tracked board.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
boardTokens | array | yes | Greenhouse board token, e.g. "stripe", or a full boards.greenhouse.io / job-boards.greenhouse.io board URL — both normalize to the token. |
departmentFilter | string | no | Case-insensitive substring match against any entry in a job's departments[].name. Leave empty to keep every department. |
locationFilter | string | no | Case-insensitive substring match against a job's location.name. Leave empty to keep every location. |
remoteOnly | boolean | no | Keep only jobs whose heuristic remote flag is true (location or office name contains "remote"). Best-effort, not an authoritative Greenhouse field. |
maxItems | integer | no | Cap total rows emitted across ALL boards combined in the run, applied after filtering. |
{
"boardTokens": [
"stripe"
],
"departmentFilter": null,
"locationFilter": null,
"remoteOnly": false,
"maxItems": 5,
"proxyConfiguration": {
"useApifyProxy": true
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
job_idcompanytitledepartmentlocationremoteabsolute_urlupdated_atdescription_textsalary
{
"job_id": 7954688,
"company": "stripe",
"company_name": "Stripe",
"title": "Staff Software Engineer",
"department": "Engineering",
"location": "San Francisco, CA",
"remote": false,
"absolute_url": "https://stripe.com/jobs/search?gh_jid=7954688",
"posted_at": "2026-07-01T09:00:00-04:00",
"updated_at": "2026-07-27T11:17:30-04:00",
"description_html": "<h2>Who we are</h2><p>...</p>",
"description_text": "Who we are\n...",
"salary": null,
"scraped_at": "2026-07-29T12:00:00Z"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0015 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
FAQ
Do I need a Greenhouse API key or login?
Where do I find a company's board token?
Why is salary null on most rows?
Does this replace multi-ats-jobs-scraper?
Why a Greenhouse-only Actor instead of a generic job-board scraper?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors