Greenhouse Jobs — Full Export & Changes avatar

Greenhouse Jobs — Full Export & Changes

Pricing

from $30.00 / 1,000 complete board scans

Go to Apify Store
Greenhouse Jobs — Full Export & Changes

Greenhouse Jobs — Full Export & Changes

Export public Greenhouse jobs and track new, edited and absent postings across complete snapshots. No API key, browser or proxy needed.

Pricing

from $30.00 / 1,000 complete board scans

Rating

0.0

(0)

Developer

Andrey Garanin

Andrey Garanin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Security

Limited permissions

Share

Export public Greenhouse job boards into an Apify dataset. Download the current jobs, run a recurring change feed, and keep posting IDs, source timestamps and coverage visible.

No Greenhouse API key, browser, proxy, separate website or external subscription is required. The Actor runs inside Apify.

What you get

  • Complete current job export from one or more company boards.
  • New, meaningfully edited, reappeared and observed-absent postings between snapshots.
  • Readable descriptions, departments, offices, source location, native posting ID and source timestamps.
  • A visible completeness summary for every exported board.
  • CSV, Excel and JSON export through Apify's native dataset interface after deployment.
  • Recurring execution through Apify Tasks/Schedules; API and Apify integrations are supplied by the platform.

Quick start in Apify

  1. Enter a company board token or public Greenhouse URL, for example figma or https://job-boards.greenhouse.io/figma.
  2. Keep All current jobs plus changes for a complete export. Choose Changes only for recurring feeds; the first successful run still exports a baseline.
  3. Click Start. In Output, inspect the job records and board summaries, then download the dataset.
{
"boards": ["figma"],
"outputMode": "changes",
"trackChanges": true,
"historyName": "my-company-watchlist",
"includeDescriptions": true,
"missingConfirmations": 2
}

To refresh daily, save the input as an Apify Task, schedule it daily and reuse the same history name. Do not overlap runs using the same history and filters. For independent pipelines, use different history names.

Record types and events

RecordMeaning
job / baselinePresent in the first snapshot. First observed is not first published.
job / newNative posting ID was not present in the retained history.
job / updatedTitle, location, description or another tracked content field changed. changed_fields explains which. Source timestamp churn alone is ignored.
job / reappearedPreviously absent native posting ID returned. This does not prove a newly opened position.
job / unchangedCurrent posting, included in All mode.
absence / observed_absentMissing from the configured number of complete successful snapshots; default two. Not proof of filled, canceled or closed employment.
board_summarySuccessful source count, exported count, baseline and event counts.
board_errorSource, size, schema or history problem; board not exported or scan-charged.

Use record_type == "job" and matches_filters == true for current matching jobs. A changed job that leaves your title/location filter is still emitted once with matches_filters:false, so a downstream feed can remove it. Absence records are separate.

OUTPUT in the default key-value store holds the final run summary, including history-commit results. A dataset summary is delivered before the state commit, so its history_updated is null; read OUTPUT or its SCAN-* record for the final value. Partial failures remain visible even if other boards succeed.

Pricing

$0.03 per complete successfully exported company board, including all selected job rows, changes and its summary, up to the configured limit. Ten boards cost $0.30; five boards daily for 30 days cost $4.50. This is not a per-job price or a monthly subscription.

Baseline, unchanged and empty successful scans are billable. Invalid boards, incomplete responses and guard-held boards do not trigger the board-scan event. An Apify synthetic start fee of $0.00005 per GB-start (minimum one event per run) is additional. Underlying platform usage is included in this configuration. The Store Pricing panel is authoritative.

Job rows are included in the scan price, without paid per-dataset-row billing. The publisher bears underlying run costs. The Actor checks the remaining scan budget before fetching another board and stops when no complete scan fits.

Completeness and limits

  • Only the official, public Greenhouse Job Board GET API is used. No application submissions, candidate records, Harvest credentials, paywalled data or anti-bot bypass.
  • Supports tokens and HTTPS boards.greenhouse.io / job-boards.greenhouse.io URLs. Custom career domains, EU-specific hostnames and other ATS are not auto-detected in this version.
  • Maximum 20 boards, 5,000 source jobs per board; default safety limit 2,000. Maximum response 16 MB; bounded retries and timeouts. Exceeding a limit holds the whole board, not a truncated success.
  • API meta.total must equal the received unique posting count. Native id is the posting ID; internal_job_id is kept separately. Prospect posts can have a null internal job ID.
  • A formerly nonempty board becoming empty, or a board of at least ten jobs dropping by over 60%, is held by default. Independently verify the source before enabling allowLargeDrops.
  • Observed absence requires successful snapshots, not a time interval: two daily scans usually mean two days; two immediate scans do not. History is not a distributed database: avoid overlapping runs. Optimistic checks detect many conflicts but are not a guaranteed cross-run lock.
  • Absence tombstones expire after 30 days. A later return may be classified as new after that retention window.
  • There is no inferred salary, seniority, remote eligibility, employee count or hiring score. Source location text is preserved. Descriptions can contain advertised salary text but are not parsed into a claimed salary field.
  • Filters are exact case-insensitive substrings, not AI judgments. No language model receives the content. Source data can itself be stale or inaccurate; API completeness does not verify hiring intent.

Storage and privacy

The Actor uses limited Apify permissions. With change tracking enabled, normalized public job metadata and description hashes are saved in a named key-value store under the running customer's Apify account. Full descriptions are exported with current jobs when requested, but are not retained in history; absence rows therefore do not include the old full description. State is partitioned by Actor/history/filter configuration and board. Input, output and retained snapshots follow that customer's Apify storage/access policies. Delete the named store to discard history; the next run becomes a new baseline.

The code makes outbound requests only to the official Greenhouse board API and the Apify SDK/platform. It does not send data to the publisher's own server or an AI provider. It does not collect applications, candidate profiles or contact lists. Avoid adding confidential information to job-board URLs or history names.

Troubleshooting

Empty results: inspect board_error and OUTPUT, filters and the actual board token. Zero matching job rows with a complete board summary can mean no jobs match the filter; it is not necessarily a failure.

No changes on the second run: this is expected if the source content is unchanged. A complete unchanged scan still produces a visible summary and one scan event.

Missing records / limit error: increase the safety cap only within supported limits. There is no hidden partial export. Guard-held scans retain the previous baseline.

A run failed after some output: inspect saved results and the SCAN-* records before retrying. Completed scan charges are not automatically reversed. The engine does not advance a board's history until its export and scan charge complete; a failed state commit can cause repeated records on a later run.

Support: use the Actor's Apify Issues tab, include the run URL and expected behavior. Never include API tokens. The publisher still needs to handle genuine bugs; built-in hosting and billing do not make maintenance disappear.

Independent software, not affiliated with Greenhouse or Apify.