Greenhouse Job Board Scraper — Open Jobs, Live, Any Company avatar

Greenhouse Job Board Scraper — Open Jobs, Live, Any Company

Pricing

from $0.80 / 1,000 job returneds

Go to Apify Store
Greenhouse Job Board Scraper — Open Jobs, Live, Any Company

Greenhouse Job Board Scraper — Open Jobs, Live, Any Company

Get every open job from any company's Greenhouse job board: title, departments, offices, location, dates, description and apply link, fetched live, emails and phones redacted. From $0.001 a job, a dollar per thousand; failed boards are free. Callable by AI agents.

Pricing

from $0.80 / 1,000 job returneds

Rating

0.0

(0)

Developer

Logan Parker

Logan Parker

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

Get every open job from any company's Greenhouse job board — give it board tokens like stripe, board URLs or company names, and it returns each posting's title, departments, offices, location, dates, description as Markdown and apply link, fetched live. For recruiters, job-search tools and AI agents that need current openings straight from the employer, with emails and phone numbers redacted. From $0.001 a job, a dollar per thousand jobs; a board that cannot be read costs nothing.

Example result

A job record from the production image's run of the smoke input against the live source (2026-10-26T12:47:34Z). Each board also gets one free record first with its open, matching and returned job counts; the run's first record carries the Hermes directory's size and build date.

{
"type": "job",
"source": "greenhouse",
"board": "stripe",
"company": "Stripe",
"jobId": "8273853",
"title": "Head of Marketing, Japan",
"departments": [
"2313 Marketing - APAC"
],
"offices": [
"Japan Locations"
],
"location": {
"raw": "Tokyo",
"city": null,
"region": null,
"country": null,
"remote": false
},
"salary": null,
"postedAt": "2026-10-26T04:56:58Z",
"updatedAt": "2026-10-26T04:56:58Z",
"descriptionMarkdown": null,
"applyUrl": "https://stripe.com/jobs/search?gh_jid=8273853",
"sourceUrl": "https://job-boards.greenhouse.io/stripe/jobs/8273853",
"ok": true
}

How to use it

Start a run in Apify Console, by API or from an agent with an input like this one — it is the input Apify runs every day to test this Actor:

{
"boards": [
"stripe"
],
"maxJobsPerBoard": 5,
"includeDescription": false
}
FieldTypeMeaning
boardsarrayGreenhouse board tokens (stripe), board URLs (job-boards.greenhouse.io/stripe) or company names found in the Hermes directory; 1–100.
keywordsarrayReturn only jobs whose title or a department contains any of these words or phrases (case-insensitive).
locationsarrayReturn only jobs whose location text, city, region or country matches any of these (country names or ISO codes match the parsed country).
remoteOnlybooleanReturn only jobs the board marks remote.
postedWithinDaysintegerReturn only jobs first published (or, when not stated, updated) in the last N days; 1–3,650.
includeDescriptionbooleanReturn each job's description as redacted Markdown.
maxJobsPerBoardintegerMost jobs returned per board, newest first; 1–5,000.

Events and prices

EventTitleCharged whenFREE / BRONZESILVERGOLD / PLATINUM / DIAMOND
job-returnedJob returnedOne posting returned.$0.001$0.0009$0.0008

Worked cost: five boards with 40 matching jobs each cost 200 × $0.001 = $0.20 at the FREE and BRONZE price, $0.18 on SILVER and $0.16 on GOLD and above, plus the actor-start event.

Platform usage is not passed through. Apify's automatic actor-start event remains $0.00005 per started GB (one GB or less counts once). The synthetic dataset-item event is absent. Failure records and the free summary records are never charged; when the run's maximum total charge is reached, further work stops and the rest gets uncharged charge_limit_reached records. Work completed before an abort is settled.

Call it from an agent

Through Apify's MCP server (https://mcp.apify.com) use call-actor:

{
"actor": "hermeskd/greenhouse-jobs",
"input": {
"boards": [
"stripe"
],
"maxJobsPerBoard": 5,
"includeDescription": false
},
"callOptions": {
"maxTotalChargeUsd": 0.05,
"timeout": 900
},
"waitSecs": 30
}

Then call get-dataset-items with the returned defaultDatasetId. Dedicated tool URL: https://mcp.apify.com?tools=hermeskd/greenhouse-jobs

Output fields

FieldMeaning
typeboard: one free summary per input board (open, matching and returned job counts); job: one posting.
sourceAlways greenhouse.
boardGreenhouse board token (the input as given on a failure record).
companyCompany name as the board states it (or the directory names it).
jobIdGreenhouse job id.
titleJob title.
departmentsDepartment names the board lists for the job.
officesOffice names the board lists for the job.
locationLocation parsed from the source text: raw text, and city, region (US state code) and ISO 3166-1 alpha-2 country only when the text states them unambiguously; remote when the source says so.
salaryPay range only when the source states one; never inferred.
postedAtFirst published on the board (UTC, ISO 8601).
updatedAtLast updated on the board (UTC, ISO 8601).
descriptionMarkdownDescription as Markdown with emails and phone numbers redacted; null when includeDescription is false.
applyUrlWhere the company sends applicants (the board's absolute_url).
sourceUrlThe job's page on the public Greenhouse board.
openJobsBoard record: open jobs on the board.
matchingJobsBoard record: jobs matching the filters.
returnedJobsBoard record: jobs returned for this board (maxJobsPerBoard and de-duplication applied).
directoryOn the run's first record: the Hermes board directory used for company names — boards, postings, build date, build seconds and whether it is the snapshot baked into the image. Null when no directory could be read.
okTrue for a board read and for every returned job.
errorFailure, never charged.

Limits and run time

1–100 boards per run; 1–5,000 jobs per board (maxJobsPerBoard, default 500), newest first by first-published date. One request per board: the board list with content=true, which carries departments, offices and descriptions; descriptions are converted to Markdown only for the jobs returned. The board list states no pay range (Greenhouse publishes ranges only on its single-job endpoint), so salary is null on these records. A company name is resolved through the Hermes board directory; a name it does not know is board_not_found, uncharged. Locations are parsed only when the board's text is unambiguous (City, ST, City, Country, a country, a remote marker); otherwise city, region and country are null and the raw text is kept. The smoke input (one board, five jobs) ran in 4.2 seconds end to end in the production image on 2026-10-26; the default run timeout is 900 seconds. Cold platform time, cost and the smallest passing memory are measured by the deploy.

Errors

CodeMeaning
board_not_foundNo public Greenhouse board has that token (HTTP 404), or the company name is not in the directory; uncharged.
rate_limitedThe source asked us to slow down (HTTP 429); nothing was charged.
source_schema_changedThe source's response no longer has the verified shape; the run fails loudly when every input does.
download_failedThe request failed, timed out or answered an unexpected HTTP status.
robots_disallowedrobots.txt forbids fetching the URL; no request was made to it.
blocked_hostThe host is on the deny-list or resolves to a private or local address; no request was made.
timeoutThe input did not finish within the run's time budget.
invalid_inputThe run input passed the input schema but cannot be used; the message names the field.
internal_errorUnexpected failure; the message carries the error class.
charge_limit_reachedThe run reached its maximum total charge; this input was not processed.

No failure record is charged. A run fails only when every input failed on the Actor's side (internal_error, timeout, source_schema_changed); caller-side failures and mixtures leave the run SUCCEEDED.

Sources and terms

Greenhouse Job Board API (boards-api.greenhouse.io/v1/boards/{token}/jobs). Greenhouse's documentation, read 2026-10-26 on docs.greenhouse.io: "Job Board data is publicly available, so authentication is not required for any GET endpoints." Only the application POST needs a key, and no Hermes Actor calls it. The API host's robots.txt (read 2026-10-26) disallows only /embed/. Only process content you have the right to process. Every request obeys HermesBot robots-group selection, the shared deny-list, public-address checks on connections and redirects, an honest user-agent, a 30-second deadline per request and at most one request a second per host (Lever and Remote OK ask Crawl-delay: 1). No caller credentials, cookies, CAPTCHA solving, residential proxies or evasion. Job text is returned with email addresses and phone numbers redacted; no recruiter, applicant or hiring-team object is ever read or returned, and the application endpoints are never called.

Not affiliated

This Actor is not affiliated with Greenhouse Software, Apify or the companies whose boards it reads. Third-party names describe the source.

Changelog

2026-10-26: first version (build unit 5): live board reads, filters, redaction, the free board record, company names through the Hermes directory; listing written to the amended store contract.