# Changelog of Kijiji Listings Scraper (`devilscrapes/kijiji-listings-scraper`) Actor

- **URL**: https://apify.com/devilscrapes/kijiji-listings-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/devilscrapes/kijiji-listings-scraper.md

## Kijiji Listings Scraper — Changelog

### 0.1.0 — 2026-09-21

- Real implementation: `src/parser.py` (pure `__NEXT_DATA__`/Apollo cache
  extraction, `StandardListing:{id}` record walking, price-object
  dispatch with `NonAmountPrice`/`null` service-ad tolerance),
  `src/scraper.py` (curl-cffi fetch with retry/backoff/impersonation
  rotation, path-form pagination, run-wide `listing_id` dedupe, REQ-14
  fair-share term budgeting with rollover), and `src/main.py` (Apify SDK
  wiring — charge-order discipline, batch push + PPE charge, zero-rows-is-
  SUCCEEDED per REQ-12).
- Prefill now exercises 2 search terms and `maxPagesPerTerm: 2` (not the
  single-term/1-page default originally planned) so cloud QA drives the
  path-form pager onto page 2 and REQ-14's fair-share split, not just page
  1 — a sibling Actor shipped a page-2 duplicate-rows defect that this
  prefill choice is designed to catch before publish.
- 64 unit tests, including a pagination-disjoint-id-set regression guard
  and a filter-fidelity guard against REAL captured Kijiji fixtures
  (`tests/fixtures/laptop_page1.html`, `laptop_page2.html`,
  `bicycle_page1.html`).

### 0.0.0 — 2026-09-20

- Scaffolded: `.actor/` config, input schema stub, README, tests dir.
  `src/main.py` pushes one placeholder dataset row only — real
  search-term-browse scraping (Pydantic `ActorInput`/`ResultRow` models,
  Apollo/`__NEXT_DATA__` parsing, path-form pagination) is not implemented
  yet. See `docs/specs/kijiji-listings-scraper/tasks.md` T02-T11.
