# Changelog of Seek Australia Jobs Scraper (`devilscrapes/seek-australia-jobs-scraper`) Actor

- **URL**: https://apify.com/devilscrapes/seek-australia-jobs-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/devilscrapes/seek-australia-jobs-scraper.md

## Changelog

All notable changes to this Actor are documented here.

### 0.0 — Initial release

- Full `au.seek.com` JSON-search-API scraper: `keywords` + `where` job
  search, keyword-only or browse-all-postings mode, pagination up to
  `maxResults` with per-run job-ID dedup.
- `src/models.py` — `ActorInput` / `ResultRow` Pydantic v2 models,
  single source of truth for `.actor/input_schema.json` and
  `.actor/dataset_schema.json` (ADR-0004).
- `src/geo_guard.py` — verifies `solMetadata.tags["mordor:searchMarket"] == "UNIFIED_AU"` and every job's `locations[].countryCode == "AU"`
  before trusting a response; a mismatch is treated as block-equivalent.
- `src/client.py` — `curl-cffi` fetch/retry/rotation client: browser
  fingerprint rotation across requests, exponential backoff (2s base,
  cap 30s, 5 attempts) on `408 / 429 / 503`, Cloudflare-challenge
  detection, and session/proxy rotation on every block or geo mismatch.
- `src/parser.py` — pure job-dict → `ResultRow` mapper; never invents
  structured salary data, coerces empty `salaryLabel` to `null`, drops
  rows missing `id` / `title` / `listingDate`.
- `src/scraper.py` — pagination, per-run dedup, `classificationFilter`
  client-side post-filter, and explicit stop-reason logging
  (max-results reached / empty page / no more pages / page failed).
- `src/main.py` — Actor SDK wiring: `actor-start` + `result-row` PPE
  events, partial-success dataset flushing, and a hard-block exit path
  that always names pages fetched vs. blocked (never a silent "0
  results").
- `src/recon_cloud.py` — RESIDENTIAL (AU) vs. DATACENTER cloud-egress
  go/no-go probe for the JSON search API, written per spec's named Risk
  (not the production entrypoint).
- 64 tests passing (`pytest`), `ruff` clean, `pyright` clean.
- README, `promo.json`, and this changelog finalized for publish
  (ADR-0005 gate).
