# Changelog of ATS Jobs Scraper — Greenhouse, Lever, Ashby, Workday & more (`dataloft/ats-jobs-scraper`) Actor

- **URL**: https://apify.com/dataloft/ats-jobs-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/dataloft/ats-jobs-scraper.md

## Changelog

### 0.3 — 2026-09-05

- Fail visibly on unavailable monitoring history or unresolved delivery; use non-overlapping runs per watchlist.
- Budget-aware SDK result-event delivery and explicit charge/delivery reconciliation.
- Purposeful, bounded public example inputs and corrected default API input.
- Source-dependent limitations and Actor-start fee disclosed.

### 0.2 — 2026-09-02

#### Monitoring mode (only new jobs since last run)

- New input **`onlyNewJobs`**. When on, every posting delivered is remembered in a *named*
  key-value store and skipped on later runs. Skipped postings are neither saved to the dataset
  nor charged for, so a scheduled task costs only what actually changed.
- New input **`seenStoreName`** overrides the store name (default
  `dataloft-seen-ats-jobs-scraper`), so several watchlists can run without sharing history.
- A posting is matched on its platform-native job id *and* on its normalised job/apply URL, so the
  comparison holds even when a platform changes how it reports one of them.
- Per-board and whole-run log lines report `scanned N, new M, previously seen K`; the same counts
  land in `RUN_SUMMARY` under `monitoring`.
- The set is written back at the end of the run and also on `migrating` / `aborting`, so an
  interrupted run does not force the next one to re-deliver everything.

#### Input aliases for migrating from other actors

- **`companies`**, **`companyUrls`**, **`startUrls`** (objects or plain strings) and **`queries`**
  are accepted and folded into `boards` / `companyDomains`: recognised ATS URLs and `platform:slug`
  forms become boards, bare company domains go through ATS auto-detection.
- Alias values that are neither a URL nor a domain are reported in the log and in
  `RUN_SUMMARY.unresolvedInputs` instead of being silently dropped.
- Existing inputs are unchanged; nothing needs rewriting.

#### Cost and platform settings

- Memory is now declared: default **512 MB**, minimum 256 MB, maximum 1024 MB. This actor is a
  pure-HTTP JSON API client, so the previous 4 GB default was quadrupling the platform cost of
  every run for no benefit.

#### Schema fixes

- Dataset views verified against the fields the actor really emits.
- `changelog` declared in `.actor/actor.json`.
