Job boards & ATS · Live on Apify

Greenhouse jobs scraper and job change monitor

Add the Greenhouse boards of companies you follow. Get their open jobs as clean rows. Run it again later and see which jobs are new, updated or gone.

About $0.24 for 1,000 jobs$0.00024 per job + $0.0014 per run. One run gives up to 10,000 jobs. Apify bills you, not us.One job in a run of its own: about $0.0016.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

recordTypejob
stableIdexampleco:1234567
boardTokenexampleco

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: snapshot in Mode. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

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

Who uses it

Sales teams

Watch target companies and see when they open new roles.

Job board builders

Pull open jobs from many Greenhouse companies into one feed.

Recruiting analysts

Track how hiring changes at a list of known companies.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Greenhouse job result$0.00024 (from $0.00019 on paid Apify plans)One useful Greenhouse job or verified monitoring change saved to Dataset.
Start fee$0.0014Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.

Examples

  • One job: about $0.0016.
  • 1,000 jobs: about $0.24.
  • Every day 100 jobs, for 30 days: about $0.76 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 20,000 jobs.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Do I need a Greenhouse account or API key?

No. The tool uses the public Greenhouse job board endpoints. It never sends job applications.

Can it find every company that uses Greenhouse?

No. You must know the board token or board URL of each company.

How do I see only new or removed jobs?

Use monitor mode. Give it the snapshot store ID from an earlier run.

Does it work with EU Greenhouse boards?

Yes. It accepts US and EU Greenhouse board URLs and plain board tokens.

Details

Tips for better results
  • Find the board token in the career page link, for example job-boards.greenhouse.io/figma.
  • Leave job descriptions off on your first run. The output stays small and fast.
  • Check RUN_SUMMARY after each run. It shows if a board was read in full.
Limits and good to know

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

  • 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
Recent updates
  1. Update

    • Documentation-only bootstrap scaffold.
    • Durable workflow package and exact central playbook provenance.
    • Strict TypeScript/Node 24 direct-HTTP Actor runtime for snapshot, exact-job, and explicit-baseline monitor modes.

For developers

Sample result

An example of one result with placeholder values, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "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"
}

Use it from code

Actor ID: cliqtomedia/greenhouse-jobs-monitor-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/greenhouse-jobs-monitor-scraper").call(run_input={
    "mode": "snapshot",
    "monitorOutput": "changes_only"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~greenhouse-jobs-monitor-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "snapshot", "monitorOutput": "changes_only"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/greenhouse-jobs-monitor-scraper")
result = tool.invoke({"run_input": {"mode": "snapshot", "monitorOutput": "changes_only"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (30)
FieldType
schemaVersioninteger
recordTypestring
stableIdstring
boardTokenstring
boardRegionstring
jobIdstring
internalJobIdstring
requisitionIdstring
titlestring
locationobject
departmentsarray
officesarray
metadataarray
languagestring
absoluteUrlstring
greenhouseUrlstring
firstPublishedAtstring
updatedAtstring
contentHtmlstring
contentTextstring
questionsobject
payRangesarray
retrievedAtstring
changeStatusstring
matchTransitionstring
changedFieldsarray
previousHashstring
currentHashstring
observedRemovedAtstring
sourceEvidenceobject
Input settings (17)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Mode requiredmodestring"snapshot"
Board tokens or URLsboardsarray
Exact jobsjobsarray
Prior snapshot KVS IDbaselineKeyValueStoreIdstring
Monitor outputmonitorOutputstring"changes_only"
Include job descriptionincludeContentbooleanfalse
Include public application questionsincludeQuestionsbooleanfalse
Include structured pay rangesincludePayTransparencybooleanfalse
Title keywordstitleKeywordsarray
Description keywordscontentKeywordsarray
Locationslocationsarray
Departmentsdepartmentsarray
Officesofficesarray
First published on/afterfirstPublishedAfterstring
Updated on/afterupdatedAfterstring
Maximum matching jobs per boardmaxJobsPerBoardinteger5000
Maximum matching jobs totalmaxJobsTotalinteger10000

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure