ATS Job Monitor — Track New, Closed & Changed Jobs avatar

ATS Job Monitor — Track New, Closed & Changed Jobs

Pricing

from $3.00 / 1,000 change detecteds

Go to Apify Store
ATS Job Monitor — Track New, Closed & Changed Jobs

ATS Job Monitor — Track New, Closed & Changed Jobs

Job alerts from company career pages: new, closed and edited roles since your last run. Recruiting and hiring signals without re-downloading the board.

Pricing

from $3.00 / 1,000 change detecteds

Rating

0.0

(0)

Developer

Diseño Web de Colombia

Diseño Web de Colombia

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Stop re-downloading the same jobs. Get only what changed since your last run.

What is the ATS Job Monitor?

This Actor watches company job boards on Greenhouse, Lever, Ashby and Workable, and reports the difference against the previous run: roles that opened, roles that closed, and roles whose title, location or description changed.

A scraper is something you run once. A monitor is something you schedule and forget. Point it at a set of companies, put it on a daily or hourly schedule, and it tells you what moved.

Why a diff beats a dump

Dumping a whole board every day means paying for thousands of rows to find the three that are new. This Actor keeps a compressed snapshot in a named key-value store in your own account, compares against it, and returns only the delta.

Two consequences worth knowing:

  • The first run is a baseline. It does not charge per result and returns only a small sample, because billing you for a full initial snapshot would be a nasty first invoice.
  • Each customer's history is isolated, because the store lives in the account running the Actor. Your baseline is yours.

Hiring changes are also a timing signal. A role that opens this morning is worth more than one you find next week, which is why hourly scheduling is supported.

What you can use it for

What you wantHow to ask for it
Job alerts — be first to a new postingSchedule it daily or hourly, read new changes
Recruiting intelligence — competitor reqscompanyTokens for your competitive set
Hiring signals for sales — accounts staffing upCount new changes per company
Detecting a freeze or layoffWatch closed changes cluster
Tracking a role you wantsearchKeyword + location, alert on new
Salary or title changesRead modified changes and the fields that moved
Market timing — when a company opens a teamHourly schedule; the timing is the product
Independent watchlistsA different monitorKey per list

Typical jobs: job alerts, recruiting intelligence, hiring data for sales triggers, and competitor headcount tracking.

What data you get

For each change: the change type (new, closed or modified), the job title, company, location, department, remote flag, the apply URL, the posting date, and for modifications, which fields changed. Plus the underlying job record.

Input

Every field is optional unless marked required.

FieldTypeDescription
oneShotbooleanReturn the CURRENT jobs instead of what changed. Use this for a single lookup or when calling from an AI agent — the monitor needs two runs to have anything to compare, one-shot answers immediately. It never touches your saved history.
monitorKeystringKeep this the same across runs — it is how the actor remembers what it already saw. Use a different name to run several independent monitors (e.g. "engineering" and "sales").
searchKeywordstringOnly watch jobs whose title contains this, e.g. "backend engineer". Leave empty to watch every job.
searchScopestringJob title only is precise. Adding the description finds more, but also matches jobs that merely mention the keyword.
trackChangeTypesarrayLeave empty to get all three. New = a role just opened. Closed = it is gone, usually filled or cancelled. Modified = title, location, salary, department or employment type changed.
locationstringFree text match against the job location, e.g. "New York", "London", "Germany".
remoteOnlybooleanOnly watch jobs the company flags as remote.
departmentstringFree text match against the department or team, e.g. "Engineering", "Sales".
atsPlatformsarrayLeave empty to watch all of them.
companyTokensarrayOnly if you want to watch specific companies instead of the built-in index of 872 companies. Accepts "greenhouse:stripe" or a job board URL.
maxCompaniesintegerKeep this stable across runs. Changing it changes which companies are watched, which shows up as a burst of new and closed jobs.
maxChangesintegerSafety cap. You are charged per change returned.
resetBaselinebooleanForget everything seen before and take a fresh baseline. The baseline run is never charged per result.

Input sample

{
"searchKeyword": "backend engineer",
"companyTokens": [
"greenhouse:stripe",
"lever:ro",
"ashby:ramp"
]
}

Output sample

One real row from an actual run:

{
"changeType": "baseline",
"detectedAt": "2026-08-03T02:39:18.466Z",
"changedFields": null,
"id": "greenhouse:stripe:7826765",
"ats": "greenhouse",
"companyToken": "stripe",
"companyName": "Stripe",
"externalId": "7826765",
"title": "Backend Engineer, AI Security",
"department": "8614 Office of the CISO & Partnership",
"location": "New York, San Francisco, Seattle, or Remote (US/Canada)",
"isRemote": true,
"employmentType": null,
"compensationText": null,
"postedAt": "2026-04-20T17:56:42.000Z",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=7826765",
"descriptionText": "Who we are\n\n About Stripe\n\n Stripe is a financial infrastructure platform for businesses. Millions of companies—from the world's largest enterprises to the most ambitious startups—use Stripe to accept payments, grow t..."
}

Who uses this

  • Recruiters — know the moment a competitor opens a req
  • Sales teams — hiring changes are buying signals with timing attached
  • Candidates — be first to a new posting, not the hundredth applicant
  • Analysts — track headcount direction across a set of companies over time
  • Anyone running a job alert product who needs a clean change feed

Honest limits

These are real and none of them is fixable by any tool. They are here so you know what you are buying before you run it.

  • The first run establishes a baseline and deliberately returns only a sample. Real change detection starts on the second run.
  • Only Greenhouse, Lever, Ashby and Workable. Companies on other systems are not covered.
  • A closed role means it left the board, which usually means filled or cancelled — the ATS does not say which.
  • Change detection depends on your schedule. If a role opens and closes between two runs, you will not see it.
  • Workable rate-limits harder than the others and is queried more slowly.

FAQ

Where is the baseline stored?

In a named key-value store inside your own Apify account, keyed by the monitorKey you choose. It never leaves your account, and different keys keep separate histories so you can run several independent monitors.

Why did my first run return almost nothing?

Because it is the baseline. There is nothing to compare against yet, so it records the current state and returns a small sample without charging per result. The second run is where changes appear.

How often should I schedule it?

Daily is enough for most tracking. Hourly makes sense when being first matters — recruiting and sales both benefit. The cost scales with changes found, not with how often you check.

What counts as a modified job?

A posting that stayed on the board but whose title, location, department or description changed. The row tells you which fields moved.

Can I reset the baseline?

Yes, set resetBaseline to true for one run and it starts over from the current state.

Can I just get a full dump instead?

Use the ATS Job Scraper Actor for that. Same sources, no diffing, returns everything matching your filters.

Do I need an account or an API key for the source?

No. This Actor only reads public pages and public endpoints, the same ones any logged-out visitor sees. You never give it credentials, and nothing is done on your behalf.

Scraping publicly available information is broadly accepted as legal, and this Actor only ever touches pages that require no login. That said, what you may do with the data afterwards is a separate question — personal data in particular is regulated by GDPR and CCPA. If you plan to process personal data, take advice first. Apify has a good primer: Is web scraping legal?

How much will a run cost me?

You are charged per result, so the cost scales with what you actually get back. The pricing is shown on this page above the input form. Start with a small run to see real numbers before you scale up.

Can I export to Excel, CSV or Google Sheets?

Yes. Every run's dataset can be downloaded as CSV, Excel, JSON, XML or HTML from the Storage tab, and Apify integrates directly with Google Sheets, Airtable, Zapier, Make and Slack.

Can I run this on a schedule?

Yes. Open the Schedules tab and pick an interval — hourly, daily, weekly. Each run only costs you what it returns.

Can I call it from my own code instead of the console?

Yes. Every Actor on Apify is also an API endpoint. There are official clients for Python and JavaScript, plus a plain REST API. The API tab on this page shows ready-made snippets with your input already filled in.

Something came back empty. Is it broken?

Usually not. An empty result normally means the filters were too narrow, or the source genuinely has nothing to return for that query. This Actor is written to finish successfully and tell you what happened rather than fail — check the run log, it says which step returned nothing.

  • ATS Job Scraper — the full dump version of the same sources
  • LinkedIn Jobs Scraper + Direct Apply Links — LinkedIn postings with the original
  • Company Signals — competitor changes beyond hiring

Where the data comes from

The public JSON endpoints of Greenhouse, Lever, Ashby and Workable. No login, no API key. Snapshots are stored in your own Apify account.