Yugenox Data

Jobs, hiring signals

Hiring signals from your target accounts' own career sites

List the companies you sell to, invest in or compete with. Each morning you get the jobs they opened and the jobs they closed since yesterday, read from their own career sites, with department, location and dates. The first run costs $0.0015 per open job; after that you pay only for the changes.

What counts as a hiring signal

Career sites are the best source for these because they are first-party: the employer's own board, with the apply link, and a job leaves it when the role is closed. Job boards can copy postings late, keep them after they close and mix in agency reposts.

The setup

  1. List the companies in companies: names (a directory of about 1,400 large employers resolves them, for example the 40 Canadian employers on Workday), board URLs or careers pages, on any of the 12 supported systems.
  2. Turn on monitorMode and give the list a monitorKey, so several watchlists keep separate histories.
  3. Add filters if only some jobs matter.
  4. Schedule it daily in Apify (Schedules, then pick the saved task). Changing the company list or a filter starts a new baseline.
Input
{
  "companies": [
    "Stripe",
    "https://jobs.lever.co/palantir"
  ],
  "monitorMode": true,
  "monitorKey": "target-accounts",
  "departments": [
    "engineering",
    "sales"
  ],
  "countries": [
    "US",
    "CA"
  ]
}

What a change row looks like

monitorMode turns a scheduled run into a change feed: the first run saves every current job as new (the baseline), and later runs save only jobs that appeared (new, with firstSeenAt) or closed (removed, with removedDetectedAt). A job is reported as removed only after its board was read completely and the job itself is gone, so a temporary outage never looks like a wave of closed jobs. Every row also carries the normal job fields: company, title, department, location, country, workplace type, posting date and the apply link.

changeTypeMeansExtra fields
newThe job appeared since the last run (on the first run: every current job)firstSeenAt
removedThe job was on the board last time and is gone nowfirstSeenAt, removedDetectedAt

Turn on includeUnchanged if you also want the jobs that didn't change in every run.

Filters that keep it relevant

departments, keywords (with searchInDescription to match the text too), excludeKeywords, locations, countries, workplaceTypes, employmentTypes and postedWithinDays are all case-insensitive. Jobs they filter out are never saved or charged, and the run log lists the departments and locations each board really uses when a filter matches nothing.

Where it goes

Each run's rows are in an Apify dataset you can pull over the API as JSON, CSV or Excel. Apify's own integrations send them to Slack, Gmail or Google Drive, or to Google Sheets and your CRM through Make, Zapier or n8n; a webhook can call your own endpoint when a run finishes. Clay users can run Apify Actors from a Clay table with their own Apify API token: Clay's documentation describes launching actors and retrieving run results in Clay (Clay docs, read October 6, 2026).

What it costs

The first run is the baseline: every open job at your accounts, $0.0015 each. Fifty target accounts with about 200 open jobs each is 10,000 rows, $15.00. After that the bill depends on how much your accounts hire. As an assumption, not a measurement: if 2% of jobs change on a given day, those 50 accounts produce about 200 change rows a day, $0.30 a day or about $9.00 per 30 days. The README puts it simply: most daily runs save just a handful of rows.

For investors and analysts

Keep each day's change rows and you build your own hiring time series per company: openings by department, closures, net change. It starts on your first run; there is no history before it, and a company's history restarts if you change its filters.

Limits

Ask for it from ChatGPT, Claude or Cursor

The ATS Jobs Scraper works as a tool in ChatGPT, Claude, Cursor and VS Code through Apify's hosted MCP server. Add this URL as a custom connector and sign in with your Apify account; runs bill to that account. Then ask in plain English, for example "which of these 20 companies opened new sales jobs in Canada this week?".

MCP server URL
https://mcp.apify.com/?tools=fetch-actor-details,yugenox/ats-jobs-scraper

The AI setup guide walks through each client.

Run it from code

The input above as code. The first run saves every matching open job; scheduled runs after it save only new and removed ones.

JavaScript
// Save as run.mjs, then: npm i apify-client && APIFY_TOKEN=... node run.mjs
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('yugenox/ats-jobs-scraper').call({
  companies: [
    "Stripe",
    "https://jobs.lever.co/palantir"
  ],
  monitorMode: true,
  monitorKey: "target-accounts",
  departments: [
    "engineering",
    "sales"
  ],
  countries: [
    "US",
    "CA"
  ]
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) console.log(item.changeType, item.company, item.title, item.firstSeenAt);

Not affiliated with Workday, Inc., Greenhouse, Lever, Ashby or any other applicant tracking system vendor, or with any employer named on this page. Workday is a trademark of Workday, Inc.

Questions people ask

How do I get only new jobs each day?

Turn on monitorMode, give the list a monitorKey and schedule the run daily. The first run saves every current job; later runs save only jobs that appeared or closed since the previous run.

How do I know a removed job really closed?

A job is reported as removed only after its whole board was read successfully and the job no longer exists. A board that failed to load is never read as closed jobs.

Does it work with Clay?

Clay's Apify integration lets you run an Apify Actor from a Clay table with your own Apify API token, per Clay's documentation. Paste this Actor's input JSON there.

Can I see hiring history from before I started?

No. The history is what your scheduled runs collect from the first run on. For historical job data, a job-posting database is the better fit.

What does a daily run cost?

$0.0015 per saved row. The baseline is every open job; daily runs after it save only changes, often a handful of rows per company.

Run it on your own data

Open the ATS Jobs Scraper on Apify, list your target companies, turn on monitor mode and schedule it. You pay per saved job from your own Apify account.

Last updated 2026-10-06.