Greenhouse Jobs Scraper & Monitor avatar

Greenhouse Jobs Scraper & Monitor

Pricing

from $0.19 / 1,000 greenhouse job results

Go to Apify Store
Greenhouse Jobs Scraper & Monitor

Greenhouse Jobs Scraper & Monitor

Greenhouse jobs scraper for known public boards with snapshots, exact details and explicit change monitoring.

Pricing

from $0.19 / 1,000 greenhouse job results

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

This Greenhouse jobs scraper reads public boards you already know. Export a current snapshot, fetch exact job details, or compare two snapshots to find changes.

The Actor calls public Greenhouse Job Board GET endpoints. It needs no Greenhouse account, browser, or proxy. It never submits job applications.

Quick start

This input reads one public board without job descriptions:

{
"mode": "snapshot",
"boards": ["figma"],
"includeContent": false,
"maxJobsPerBoard": 500,
"maxJobsTotal": 500
}

You can use a raw board token or a supported Greenhouse board URL:

{
"mode": "snapshot",
"boards": [
"airbnb",
"https://job-boards.greenhouse.io/figma",
"https://job-boards.eu.greenhouse.io/proton"
],
"includeContent": true,
"titleKeywords": ["engineer"],
"locations": ["remote"]
}

Filters are case-insensitive. Filters run before output limits. A board that hits a limit is marked partial, so it cannot produce false removal events.

Fetch exact job details

Use the board token and numeric Greenhouse job-post ID:

{
"mode": "details",
"jobs": ["airbnb/1234567"],
"includeContent": true,
"includeQuestions": true,
"includePayTransparency": true
}

Questions and pay ranges are optional. Each option adds one detail request for each relevant job. Values appear only when the employer exposes them.

Monitor job changes

First, create a snapshot:

{
"mode": "monitor",
"boards": ["proton"]
}

The run saves SNAPSHOT in its default key-value store. It reports that store ID in RUN_SUMMARY.currentSnapshotKeyValueStoreId.

Pass the store ID to a later run:

{
"mode": "monitor",
"boards": ["proton"],
"baselineKeyValueStoreId": "PRIOR_RUN_KVS_ID",
"monitorOutput": "changes_only"
}

The Actor never changes the prior store. Several runs can compare against the same snapshot. Set monitorOutput to all to include unchanged jobs.

Monitor rows can be baseline, new, updated, unchanged, or removed. A removal appears only when both board snapshots are complete and compatible. The removal time is when the absence was observed, not an employer closure time.

An inaccessible, expired, incompatible, or damaged baseline fails closed. The Actor does not invent changes or silently create a replacement baseline.

Output

Each Dataset item is one current job or one verified removal tombstone. Its stable ID is {lowercaseBoardToken}:{greenhouseJobPostId}.

Important fields include:

  • source job, internal and requisition IDs;
  • title, location, departments and offices;
  • source and Greenhouse URLs;
  • first-published and updated timestamps;
  • optional HTML plus separate plain text;
  • optional public questions and structured pay ranges;
  • change status, changed fields and versioned hashes;
  • source request evidence.

Example:

{
"schemaVersion": 1,
"recordType": "job",
"stableId": "exampleco:1234567",
"boardToken": "exampleco",
"jobId": "1234567",
"title": "Software Engineer",
"location": { "name": "Remote" },
"changeStatus": null,
"changedFields": [],
"updatedAt": "2026-09-10T09:30:00.000Z",
"absoluteUrl": "https://example.invalid/jobs/1234567"
}

The default key-value store contains two records:

  • RUN_SUMMARY explains coverage, limits, retries, output, baseline and charge counts for every input.
  • SNAPSHOT contains versioned state for a later monitor run.

Always inspect RUN_SUMMARY. A successful platform status alone does not prove that every source input was complete.

How charging works

Apify charges USD 0.001 once after valid input is accepted. Each useful job or verified monitoring change saved to Dataset has one job-result charge.

The row price depends on your Apify plan:

  • FREE: USD 0.000240;
  • BRONZE: USD 0.000230;
  • SILVER: USD 0.000210;
  • GOLD, PLATINUM and DIAMOND: USD 0.000190.

Empty boards, failed inputs and rows that are not saved have no row charge.

Outcomes and retries

Each input ends as COMPLETE, EMPTY, NOT_FOUND, PARTIAL, DRIFTED, FAILED, or UNPROCESSED.

  • EMPTY and NOT_FOUND are valid source outcomes.
  • PARTIAL means a limit or detail problem left work incomplete.
  • DRIFTED means the source response no longer matches the supported shape.
  • FAILED means a technical request failed after bounded retries.
  • UNPROCESSED means a run-wide stop left the input untouched.

The Actor tries network, 408, 429, and 5xx failures at most three times. Do not loop on invalid input, 404, source drift, or a damaged baseline.

For support, send the Apify run ID, UTC time, redacted input and RUN_SUMMARY. Never send tokens, cookies, authorization headers, or application answers.

Limits

  • Up to 100 boards per snapshot or monitor run.
  • Up to 5,000 matching jobs per board.
  • Up to 10,000 matching jobs per run.
  • Up to 500 exact jobs in details mode.
  • Four boards and eight detail requests can run concurrently.
  • Description responses are capped at 64 MiB per board.
  • Detail responses are capped at 2 MiB each.

These bounds keep runs predictable. The Actor marks omitted work instead of claiming more coverage than it observed.

Limitations

  • You must already know each board token or URL.
  • This is not a global Greenhouse company index.
  • Other applicant tracking systems are not supported.
  • Greenhouse can remove a posting without a reason or closure time.
  • Source changes, access limits, and network failures can make a run partial.
  • You are responsible for lawful downstream retention and republication.

Greenhouse is a trademark of its owner. This project is not affiliated with or endorsed by Greenhouse Software, Inc.