Greenhouse API.
Greenhouse's Job Board API is free and public, one board token at a time. JobsPipe collects every public Greenhouse board into one endpoint, in the same record shape as the other collected boards.
Why people are confused about the Greenhouse API
Greenhouse ships two APIs that share a name. The Harvest API is private, key-scoped, and exposes the full ATS surface: candidates, applications, scorecards, scheduled interviews. The Job Board API is public, unauthenticated, and exposes only the openings the customer has chosen to publish. Most developers searching 'Greenhouse API' land on Harvest docs and assume that is the only option, even though Job Board is what they need.
The Job Board endpoint lives at boards-api.greenhouse.io/v1/boards/<board_token>/jobs, but you still need to know each company's board token in advance, and many enterprises either disable the public board, use a vanity careers domain, or embed jobs through Greenhouse's iframe widget. JobsPipe collects every public Greenhouse board it can identify and normalizes the data into the same JSON shape as every other collected board.
Works when the customer keeps a public board enabled and you already know their token. There is no list endpoint to enumerate Greenhouse customers, and the token list changes every week as companies onboard or churn.
Required if you want applicants and pipeline state, not just postings. Each customer must mint you a Harvest key, so it does not scale to aggregation.
Every public Greenhouse board, one endpoint, no token discovery. Free tier of 1,000 jobs a month included.
Does Greenhouse have an API?
Yes, two. The Job Board API at boards-api.greenhouse.io is public and unauthenticated and returns one company's published openings, departments and offices by board token; it is the surface job boards and aggregators read. The Harvest API at harvest.greenhouse.io is the private, key-authenticated API for a company's own account: candidates, applications, jobs in their internal form, scorecards, offers, users and webhooks. Both call themselves the Greenhouse API, which is why developers land on Harvest docs when they wanted postings. JobsPipe collects the public Job Board surface for every Greenhouse board it can identify.
Is the Greenhouse API free?
The Job Board API is free: no key, no signup, no metering beyond source-side throttling of abusive callers. The Harvest API has no separate price either, but it is only reachable with a key issued inside a paying customer's account, so for an outside developer it is unavailable rather than expensive. JobsPipe's free tier returns 1,000 jobs a month across every collected board, Greenhouse included, and the sandbox needs no key. Paid plans are priced by jobs returned, not by source.
How do I get a Greenhouse API key?
For postings you do not need one. The Job Board API takes a board token in the URL and nothing else, so the work is finding tokens: read the company's careers URL, inspect the embed on a vanity domain, or use a maintained index. Harvest keys are created by a customer admin under Configure, then Dev Center, then API Credential Management, with permissions scoped when the key is made, and are sent over HTTP Basic auth as the username. They never reach another company's account. JobsPipe never requests Harvest credentials; one JobsPipe key reads every public board.
What does the Greenhouse API documentation cover?
developers.greenhouse.io documents both halves. The Job Board API pages cover the public endpoints for jobs (with content=true for full descriptions), departments, offices, sections and the application POST, plus the job-board embed. The Harvest API pages cover the authenticated resources: candidates, applications, jobs, job posts, offers, scorecards, scheduled interviews, users, custom fields and webhooks, with the 50 requests per 10 seconds limit and the permission model. Greenhouse also documents the Ingestion API for partners that push candidates in. JobsPipe's docs at /docs cover the one record shape returned for Greenhouse rows and every other collected board.
What JobsPipe returns for Greenhouse
A POST /v1/jobs/search with "source_or": ["greenhouse"] returns Greenhouse postings as JobsPipe records: id (the Greenhouse job id), job_title, company, company_domain, url, date_posted, discovered_at, last_seen_at, verified_at, status with closed_at and closed_reason once a posting closes, ghost_score, seniority, min_annual_salary_usd and max_annual_salary_usd when the posting states a range (Greenhouse returns pay as free text inside the description, so JobsPipe parses it), technology_slugs and keyword_slugs, and sources[0].provider set to greenhouse. Greenhouse free-texts location ('Remote - US', 'NYC or Remote'); JobsPipe resolves it to cities, state_code and the job_country_code_or and remote filters. Narrow to one company with company_name_partial_match_or.
Greenhouse webhooks
Greenhouse webhooks are configured inside a customer's own account (Configure, Dev Center, Webhooks) and fire on that account's hiring events: candidate stage changes, hires, job creation and updates. Like Harvest keys they are per customer, so there is no way to subscribe to posting changes across Greenhouse customers you do not administer. For that cross-customer case, poll POST /v1/jobs/search with discovered_at_gte set to your last run and "source_or": ["greenhouse"]; every new board posting JobsPipe has seen since then comes back in one call.
Greenhouse postings by the numbers
Measured on the Greenhouse rows in the JobsPipe index and published as shares rather than counts. Use them to decide whether Greenhouse carries the fields your product needs before you filter on source_or.
- Entry1.8%
- Senior20.0%
- Lead and above16.5%
Of the Greenhouse postings that closed in the last 60 days, 68.1% closed within 30 days of first sighting and 20.5% within 7 days. Greenhouse removals are detected continuously from the board feed, so days live tracks the day the employer took the posting down. Filter with posted_at_max_age_days or max_ghost_score when that tail matters to you.
Try the official Greenhouse endpoint
Greenhouse exposes a public Job Board API per company: no key needed for reads. Swap in any company's board token (usually their name).
curl "https://boards-api.greenhouse.io/v1/boards/stripe/jobs?content=true"That covers one company at a time. For every Greenhouse board at once, in the same schema as the other boards JobsPipe collects, use the JobsPipe request below.
Sample request
curl https://api.jobspipe.dev/v1/jobs/search \
-H "Authorization: Bearer jp_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{ "source_or": ["greenhouse"], "status": "active", "limit": 25 }'Sample response
{
"id": "4022345678",
"job_title": "Software Engineer, Payments Infrastructure",
"company": "Stripe",
"company_domain": "stripe.com",
"url": "https://job-boards.greenhouse.io/stripe/jobs/4022345678",
"date_posted": "2026-09-02",
"discovered_at": "2026-09-02T16:04:27+00:00",
"last_seen_at": "2026-09-08 06:12:03",
"verified_at": "2026-09-08 06:40:19",
"status": "active",
"closed_at": null,
"closed_reason": null,
"ghost_score": 12,
"seniority": "mid",
"cities": [
"New York"
],
"state_code": "NY",
"min_annual_salary_usd": 198000,
"max_annual_salary_usd": 297000,
"technology_slugs": [
"java",
"kafka",
"aws"
],
"keyword_slugs": [
"payments",
"distributed-systems"
],
"sources": [
{
"provider": "greenhouse",
"url": "https://job-boards.greenhouse.io/stripe/jobs/4022345678"
}
]
}Every record is returned in the same JSON shape regardless of the board it came from. The full schema is documented in the docs.
Skip the scraper - try the API right now
Sample data from Greenhouse and 30+ other sources in the exact live JSON shape. No key needed.
Run the search to see normalized results.
{
"job_title_or": [
"software engineer"
],
"limit": 3,
"remote": true
}Live results are one free key away - same request against /v1/jobs/search.
Fields in every job record
FAQ
Does Greenhouse have a public jobs API?+
Yes, the Greenhouse Job Board API. It is the public, unauthenticated read API for any company's published jobs: boards-api.greenhouse.io/v1/boards/{board_token}/jobs returns JSON with no key, no signup and no rate negotiation. The catch: you only get published jobs, you need each company's board token, and you are rate-limited at the source.
Is the Greenhouse API free?+
The Job Board API is free and needs no auth. The Harvest API is bundled with a customer's Greenhouse subscription and gated by a key that customer issues. Neither is priced for outside developers. JobsPipe's free tier covers every public Greenhouse board at 1,000 jobs a month.
How do I get a Greenhouse API key?+
You do not need one to read job postings: the Job Board API is unauthenticated. Harvest keys are minted by a customer admin under Configure, Dev Center, API Credential Management, and reach that one account's private data. For postings across companies there is no key to get; the constraint is discovering each board token, which JobsPipe does for you.
How do I find a company's Greenhouse board token?+
Look at the URL of their careers page. A Greenhouse-hosted board sits at boards.greenhouse.io/{board_token} or job-boards.greenhouse.io/{board_token}; an embedded board usually leaks the same token in the page source or the boards-api call. Tokens are usually the company name in lowercase: Stripe is stripe, Notion is notion. Some vanity domains hide it entirely, which is where an aggregator earns its keep.
What is the difference between the Job Board API and the Harvest API?+
The Job Board API is public, read-only and unauthenticated, returning one company's published postings by board token. The Harvest API is private, read-write, key-authenticated and scoped to a single company's full recruiting data: candidates, applications, scorecards, offers. Aggregators use Job Board; an employer's internal integration uses Harvest. They are not interchangeable.
What rate limits apply to the Job Board API?+
Greenhouse does not publish an explicit limit on the public Job Board API but throttles abusive callers. Polling one board every few hours works indefinitely; hammering many boards in tight loops gets blocked. Cache aggressively and respect any Retry-After header. Harvest keys are documented at 50 requests per 10 seconds.
Can I get postings across all Greenhouse customers in one call?+
Not from Greenhouse. The Job Board API is scoped per board token and there is no cross-tenant listing. JobsPipe maintains the token list and serves every public Greenhouse board through POST /v1/jobs/search with "source_or": ["greenhouse"]; narrow to one company with "company_name_partial_match_or": ["stripe"].
Try Greenhouse data free - key in 30 seconds.
Get a free API key