Modified Jobs
modified-ats is the companion endpoint to active-ats that lets you keep an existing copy of the dataset in sync without re-fetching the full feed. Requires a Pro plan.
- ATS only. There is no
modified-jb- LinkedIn and the other job-board sources are not re-checked for field-level modifications. - Contains every ATS job whose tracked fields (title, description, location, salary, apply URL, …) changed in the last 24 hours.
- Typically returns between 100,000 and 150,000 jobs per day.
How to call it
We recommend calling modified-ats once per day at the same time. As long as you stick to a fixed cadence you will never receive duplicate modifications between runs. Pagination is identical to active-ats - use limit + offset and keep going until the API returns fewer rows than limit. cursor is also available if you prefer it, but note the ordering caveat below.
Two extra response fields
In addition to the full ActiveAtsJob shape, every row also includes:
date_modified- the UTC timestamp when we detected the change. Default sort order isdate_modifieddescending. Caveat: if you paginate withcursorinstead ofoffset, results are ordered byidascending instead.modified_fields- a string array listing exactly which fields changed (e.g.["title", "ai_salary_min_value"]). Use this to apply targeted updates instead of overwriting whole rows.
Posted-date modifications
Some ATS bump the job's date_posted very frequently to keep it looking "fresh". To avoid drowning your sync in cosmetic changes, we only treat a posted-date change as a modification if the new date_posted is older than 14 or 30 days (depending on the ATS). Modifications to other fields are always reported.
See Recommended Strategy for how modified-ats fits into the broader sync workflow.