Greenhouse Job Board API | Jobs, Companies & New Postings avatar

Greenhouse Job Board API | Jobs, Companies & New Postings

Pricing

from $0.90 / 1,000 job records

Go to Apify Store
Greenhouse Job Board API | Jobs, Companies & New Postings

Greenhouse Job Board API | Jobs, Companies & New Postings

Live jobs from any Greenhouse job board, no API key needed. Scrape full postings with salaries and timestamps, discover 4,400+ companies hiring on Greenhouse, and track new or changed roles. Pay per row delivered: no start fee, no minimum, filters run before billing.

Pricing

from $0.90 / 1,000 job records

Rating

0.0

(0)

Developer

John

John

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Greenhouse Job Board API

Pull live jobs from any Greenhouse-hosted career site through the public Greenhouse job board API, with no Harvest key and no login. Give it company names or board URLs and get back structured job records with titles, locations, departments, timestamps, salaries, and full descriptions. Or give it nothing and let it discover companies from its bundled directory of 4,400+ verified Greenhouse boards.

Greenhouse is the applicant tracking system behind the career pages of thousands of companies, including Stripe, Airbnb, GitLab, and Anthropic. This actor reads their public job board API live at run time, so every row reflects what the employer's board says right now, not what an index remembered from last week.

What you get per job

Field groupFields
Identityid, internalJobId, requisitionId, title, companyName, boardToken, url
Structuredepartments, offices, location, locationsDerived, isRemote
TimestampsdatePublished, dateUpdated (the employer's own last-modified stamp)
CompensationsalaryRaw (published pay ranges, verbatim) and salaryDerived (parsed from the posting text)
ContentdescriptionMarkdown, descriptionHtml, descriptionText, application questions
Provenancelanguage, metadata, dataCompliance, source, scrapedAt

Three modes in one actor

  1. Full job records (default): every open job on the boards you name, with descriptions in the formats you pick.
  2. Job URLs only: the cheapest way to index everything: id, title, company, link, and both timestamps, without descriptions.
  3. Company discovery: one row per company that hires through Greenhouse, live-verified with a current open-jobs count. The bundled directory covers 4,400+ boards found in public web archives and re-verified at run time.

Leave the company list empty and the actor sweeps the directory for you, capped by maxCompanies and maxJobs so an exploratory run stays small.

Track new and changed postings without state

Every Greenhouse job carries the employer's own updated and first-published timestamps. Set updatedAfter to 25h on a daily schedule and each run returns only what changed since yesterday. There is no seen-list or delta store to maintain between runs, because the timestamps come from the source. Use publishedAfter for a genuinely-new-roles feed.

Pay for exactly what you receive

Billing is per delivered row, with no start fee and no minimum spend. Filters (title, department, location, dates) run before billing, so filtered jobs cost nothing. The base job record is one event; Markdown, HTML, or plain-text descriptions, application questions, and the whole-run report are optional add-ons, each billed only on the rows that actually carry them. Turn everything off and a job row costs a fraction of a cent.

Input parameters

ParameterTypeDefaultWhat it does
companiesarray["stripe"]Board tokens or any board, embed, or single-job URL, mixed freely
startUrlsarray[]Same values in URL-list form; merged with companies
outputModeselectjobsjobs, urlsOnly, or companiesOnly
discoveryQuerystring""Text match over the company directory for discovery and sweeps
verifyCompaniesbooleantrueLive-probe each discovered company before returning it
titleKeywordsarray[]Keep jobs whose title contains any of these
departmentsarray[]Keep jobs in matching departments
locationKeywordsarray[]Keep jobs in matching locations or offices
updatedAfterstring""Change detection: 24h, 7d, 2w, or an ISO date
publishedAfterstring""Same grammar, against the first-published date
includeDescriptionMarkdownbooleantrueAdd the description as Markdown (paid add-on)
includeDescriptionHtmlbooleanfalseAdd the original HTML (paid add-on)
includeDescriptionTextbooleanfalseAdd plain text (paid add-on)
includeQuestionsbooleanfalseAdd application form questions (paid add-on)
reportselectnoneWrite a Markdown or HTML run report (paid add-on)
maxCompaniesinteger25Cap on companies in sweeps and discovery
maxJobsPerCompanyinteger0Per-board cap, 0 = all
maxJobsinteger100Whole-run cap, the main cost control
maxConcurrencyinteger5Parallel per-job requests

Example output

{
"resultType": "job",
"id": "8503792002",
"title": "Account Executive - Italy",
"companyName": "GitLab",
"boardToken": "gitlab",
"url": "https://job-boards.greenhouse.io/gitlab/jobs/8503792002",
"departments": [{ "id": 4011044002, "name": "Sales" }],
"location": "Remote, Italy",
"isRemote": true,
"language": "en",
"datePublished": "2026-04-17T05:58:03-04:00",
"dateUpdated": "2026-08-03T16:43:10-04:00",
"salaryDerived": { "min": 71400, "max": 126000, "currency": "EUR", "period": "year", "source": "description-regex" },
"descriptionMarkdown": "## About the role\n\nGitLab is looking for...",
"source": "greenhouse",
"scrapedAt": "2026-08-25T16:00:00Z"
}

Use cases

  • Job boards and aggregators: backfill and refresh listings straight from the source, not from a third-party index.
  • Recruiters and sourcers: pull every open role at target companies, filtered by title, department, or location.
  • Sales and GTM teams: hiring is a buying signal. Discover companies on Greenhouse in your niche and watch where headcount is going.
  • Talent analytics: track posting velocity, remote share, and salary transparency across thousands of employers.
  • AI agents: structured JSON, Markdown descriptions, stable field names, and MCP support make this a clean tool for agent pipelines.

Getting started

  1. Add company tokens or paste board URLs into the companies field.
  2. Pick the description formats you want (Markdown is on by default).
  3. Run it. Rows land in the dataset; a per-board summary lands in the key-value store.

View on Apify Store

Worked examples in Python plus MCP setup walkthroughs live in the example repo: https://github.com/johnisanerd/Apify-Greenhouse-Job-Board-API

For scheduled monitoring, create a daily schedule with updatedAfter set to 25h and the actor becomes a change feed for the boards you care about.

💡 Example tasks

Ready-made configurations with their own landing pages:

Integrations

  • Apify API and clients: run the actor and read the dataset from Python or JavaScript with the Apify API, or export results as JSON, CSV, or Excel straight from the console.
  • Schedules and monitoring: pair a daily schedule with updatedAfter for a hands-off change feed.
  • MCP: add the actor to any MCP client through the hosted server (section below).
  • Automation platforms: connect through Apify's integrations for n8n, Make, Zapier, webhooks, and Google Sheets.
  • Crypto-native agents: pay per run over the x402 protocol (section below).

Part of a family of job-data APIs on this account:

🔌 Use this API from Claude (MCP)

Add this actor as a tool in Claude Code (free trial), Claude Cowork (free trial), or any MCP client, through the hosted Apify MCP server:

https://mcp.apify.com/?tools=actors,docs,johnvc/greenhouse-job-board-api

Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp

💸 Pay per run with crypto (x402)

The Greenhouse Job Board API supports agentic payments via the x402 protocol. AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed: point your agent at the Apify MCP server and it can discover, pay for, and run this actor autonomously. Read the Apify x402 announcement for details.

Greenhouse job board API pricing

Pay per event, per delivered row. The base job record covers every structured field. Add-ons bill only on rows that carry them: description formats, application questions, and the whole-run report. URL index rows and discovered companies have their own low per-row events. No start fee, no monthly rental, no minimum results per run, and filtered rows are never charged. Current prices are on the store page's pricing card.

FAQ

Is this an API or a web scraper?

Both, honestly. Under the hood it reads the same public endpoints a scraper would. What you get is an API: structured JSON on demand, filters, stable field names, and no HTML unless you ask for it. If you have been maintaining your own Greenhouse scraper, this is the version where someone else maintains the parser.

Can I use this from Claude or another MCP client?

Yes. Add the hosted MCP server URL from the section above and the actor shows up as a callable tool in Claude Code (free trial), Claude Cowork (free trial), or any MCP client. Agents can discover it, run it, and read the dataset without any glue code.

Is there a page that lists all Greenhouse open jobs?

Not from Greenhouse itself, which is exactly why this actor exists. Leave the companies field empty and it sweeps its bundled directory of 4,400+ verified boards, capped by maxCompanies and maxJobs. Raise the caps to go wider.

What is boards-api.greenhouse.io?

It is the public, read-only job board API that powers every hosted Greenhouse career page. This actor reads it directly, which is why results are live rather than indexed.

Do I need a Greenhouse Harvest API key?

No. The Harvest API is Greenhouse's private, authenticated API for employers. This actor uses only the public job board layer, so there is nothing to sign up for and no key to manage.

How do I use the Greenhouse API without writing code?

Run this actor from the Apify console, on a schedule, from n8n, or from an AI agent over MCP. Input is a form; output is a dataset you can export as JSON, CSV, or Excel.

How do I find companies that use Greenhouse?

Set outputMode to companiesOnly. You get one row per company with its board token, a live open-jobs count, and the board URL. Add a discoveryQuery to narrow by name.

How do I get only new job postings?

Set updatedAfter (for any change) or publishedAfter (for new roles only) to a window like 24h, or an ISO date. The actor uses the employer's own timestamps, so there is no state to manage between runs.

Does job board scraping require an API?

Greenhouse boards expose a public API, and reading it is far more reliable than parsing career-page HTML. This actor speaks that API for you and returns normalized rows.

Is the job description included by default?

Yes, as Markdown, which reads well in AI pipelines and converts cleanly to anything else. HTML and plain text are separate toggles. Each format is a per-row add-on charge, so you only pay for what you ship.

What about boards hosted in the EU?

A small number of Greenhouse customers use the EU data silo (job-boards.eu.greenhouse.io). Those boards are detected and reported clearly, but not yet scraped; EU support is planned.

Why did a board return an error row?

Error rows carry a stable errorCode: board_not_found means the token does not exist on the public API (check the spelling against the company's careers URL), http_error means the source answered abnormally. Errors are in-band rows, so your pipeline sees them without reading logs.

🌐 About Alpha OSINT

This Actor is part of Alpha OSINT, toolset of financial and operations data sources and APIs. For support or requests for this actor, please start a ticket directly on our support page.

Last Updated: 2026.08.27