# Changelog of Ticketmaster Events Scraper (`devilscrapes/ticketmaster-events-scraper`) Actor

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

## Changelog

### 0.1.0 - Unreleased

- Search-only Ticketmaster scraper. `src/client.py`: curl-cffi with a mixed
  Firefox/Safari/Chrome impersonation tuple, fresh proxy session id and profile
  on every retry, backoff 2s doubling to 30s, max 5 attempts, honours
  `Retry-After`; a request router refuses every URL that is not
  `https://www.ticketmaster.com/search` before any network I/O. A block is
  read from the body (challenge title, or a 200 with neither the `searchEvents`
  payload nor event cards), never by substring, and raises
  `TicketmasterBlockedError`.
- `src/parser.py`: reads the `searchEvents` query in `__NEXT_DATA__` (events,
  total, add-ons); falls back to the server-rendered event cards.
  Parking / VIP add-ons become flagged rows with `parentEventId`.
- `src/scraper.py`: run-wide dedupe, `maxPages` / `maxItems` / target-total /
  empty-page / no-new-ids stops, per-query fault isolation. `total == 0`
  finishes SUCCEEDED with zero rows; a block with nothing emitted fails the run.
- Default proxy is Apify RESIDENTIAL pinned to US.
- Offline tests against trimmed real captures (no live network).

### 0.0.1 - Unreleased

- Scaffold.
