# Changelog of Sofascore League Standings & Tables Scraper (`incognito_mode/sofascore-standings-scraper`) Actor

- **URL**: https://apify.com/incognito_mode/sofascore-standings-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/incognito_mode/sofascore-standings-scraper.md

## Changelog

### Unreleased — 2026-09-27

- Fixes every run failing with `403 {"reason": "challenge"}` since
  2026-09-24. Sofascore now refuses a `User-Agent` claiming a Chrome older
  than a cutoff that trails the current stable release (148 when measured,
  with 154 stable), and the client had Chrome 136 hardcoded. No proxy tier
  could help, since the block was never about the IP.
- The Chrome version is now resolved at the start of each run from Google's
  Chrome release feed, falling back to an estimate from Chrome's four-week
  release cadence, so it can no longer go stale. `User-Agent`, `Sec-Ch-Ua`
  and the platform headers are generated together and always agree.

### 1.0.24 — 2026-08-31

- Datacenter proxy budget raised from 4 IPs to 12, and residential given its
  own separate budget of 3. Sofascore refuses Apify's datacenter egress on the
  first request of essentially every platform run, and a measured run needed 4
  IPs for two requests — the whole old budget. A run that hit one more block
  would have fallen through to a metered residential proxy that free-plan
  accounts do not have, and failed. The free tier now absorbs that.
- `max_escalations` raised 8 → 16 so the client's own ceiling can no longer
  shadow the tier budgets and strand the last tier.

### 1.0 — 2026-08-24

First release.

- League tables for football, basketball, ice hockey, baseball and more —
  one row per team, with a stable column set across every sport.
- Position, played, won, drawn, lost, points, goals for and against, goal
  difference, and promotion or relegation status.
- Group-stage competitions (World Cup groups, MLB divisions, NHL conferences)
  fill the `group` column; a single-table league leaves it empty.
- Total, home and away tables via `standingsTypes`, and `groupScope` to pick
  between overall and per-group.
- Season fallback for competitions whose new season has no table yet.
- A 404 from Sofascore's standings endpoint is treated as a real answer —
  that competition has no table for that season — not as a failure.
