jobId.
You could build the same thing on the free job board APIs, with your own cron job and no Actor fee. The Actors save you the per-platform parsing and give you one record format, but you still run the comparison.
1. Schedule a daily run
- In Apify Console, open Schedules and click Create new.
- In the Schedule setup card, set when it runs, for example
0 7 * * *for 07:00 every day. - Click Add, choose the Actor, and give it your input:
- Click Enable. New schedules start disabled.
2. Call your script when a run finishes
Open the Actor in Apify Console, go to its Integrations tab and add a webhook:- Event:
ACTOR.RUN.SUCCEEDED - URL: your server’s address, ending in
/apify/and a long random secret
resource, including the defaultDatasetId the script reads. The webhook fires for every run of that Actor in your account. If you also run it by hand with other input, save the input as an Apify task and attach the schedule and webhook to the task instead.
3. Compare runs by job ID
This script has no dependencies and needs Node 18 or newer. It keeps the jobs it has seen in a file and prints what changed:- The first run reports every job as new, because nothing has been seen yet.
- A board that fails gets an item with an
errorfield, and the script then skips closed-role reporting for that run, so an outage doesn’t look like mass closures. - Replace
console.logwith whatever should notify you, such as a Slack incoming webhook.
What it costs
You pay for every job stored in every run. Discord and Figma had 172 open jobs on 2026-11-05, so a daily run with no filter stores about 5,160 jobs a month: $5.16 at $1.00 per 1,000 jobs, plus a small start fee per run. Filters cut that directly, because filtered-out jobs aren’t charged. Maximum cost per run caps a run.Run Greenhouse Jobs API & Scraper on Apify
$1.00 per 1,000 jobs, no subscription. You run it with your own Apify account.
