job-boards.greenhouse.io APIjob-boards.greenhouse.io ↗
Access job listings, departments, offices, and application form questions from any Greenhouse.io public job board via 6 structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/83293b68-327f-4cd1-bf90-079591d9fd35/get_board_info?board_token=stripe' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve basic info about a company's Greenhouse job board, including the company name.
| Param | Type | Description |
|---|---|---|
| board_tokenrequired | string | The company's Greenhouse board token (e.g. 'anthropic', 'spacex', 'stripe'). |
{
"type": "object",
"fields": {
"name": "string, the company/board display name",
"content": "string, board content or notes (may be empty)"
},
"sample": {
"data": {
"name": "Anthropic",
"content": ""
},
"status": "success"
}
}About the job-boards.greenhouse.io API
This API exposes 6 endpoints for reading structured data from any public Greenhouse.io job board. list_jobs returns every open position for a given board token, including job ID, title, URL, location, department, and office assignments. get_job goes deeper, returning the full HTML job description and the complete application form question set. search_jobs adds keyword, department, office, and recency filters across any board.
Board and Job Data
Every endpoint is scoped to a specific company board via the board_token parameter — for example, anthropic, stripe, or spacex. get_board_info returns the company display name and any board-level content. list_jobs returns an array of job objects, each carrying id, title, absolute_url, location, departments, and offices. Pass content=true to include the full HTML job description and metadata in each job object.
Job Detail and Application Forms
get_job retrieves a single posting by job_id and returns all fields from the list view plus the full content HTML and, when questions=true, an array of application form question objects. Each question object includes label, required, and a fields array describing input type — useful for building application pre-fill tools or ATS integrations that need to mirror a company's exact form structure.
Department and Office Browsing
list_departments returns every department on the board with id, name, parent_id, child_ids, and a nested jobs array. list_offices follows the same pattern, nesting departments (and their jobs) inside each office object — so you can traverse the full org hierarchy of open roles in one call. Both endpoints are useful for building filtered job discovery interfaces or monitoring headcount changes by team or location.
Search and Filtering
search_jobs accepts a free-text query matched against job titles and descriptions, plus department and office filters (exact match, case-insensitive). The is_new boolean limits results to jobs published within the last 7 days, making it straightforward to build a job-alert feed without storing state beyond the last poll time.
- Monitor new engineering roles at a target company using
search_jobswithis_new=trueand a department filter. - Pre-fill a job application UI by fetching the exact question structure from
get_jobwithquestions=true. - Build a cross-company job aggregator by iterating
list_jobsacross multiple board tokens. - Track headcount growth by department over time using repeated calls to
list_departments. - Map office expansion by polling
list_officesand diffing the returned location and job counts. - Power a recruiter research tool that surfaces all open roles at a company with direct application URLs from the
absolute_urlfield. - Alert on keyword-matching roles (e.g. 'machine learning', 'staff engineer') across multiple boards using the
queryparameter insearch_jobs.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Greenhouse have an official developer API?+
What does `search_jobs` return and how does the `is_new` filter work?+
search_jobs returns a filtered subset of all jobs on the board, along with a total count. The is_new filter compares each job's publish date against a 7-day window and returns only postings added within that period. Combined with the query, department, and office parameters, you can narrow results to, for example, new roles in a specific office without client-side post-processing.Does the API return private or internal job postings?+
board_token.Can the API submit job applications on behalf of a user?+
Does the API support paginating through large job lists?+
list_jobs and search_jobs return all matching jobs in a single response along with a total count — there is no page or offset parameter. For boards with a very large number of postings, the full result set is returned at once. If you need incremental delivery, you can fork this API on Parse and revise it to add pagination logic.