# Changelog of Sofascore Rankings Scraper (`incognito_mode/sofascore-rankings-scraper`) Actor

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

## Changelog

### Unreleased — 2026-10-04

- Fixes Apify Store QA runs that failed with every request blocked after
  rotating through 15 proxy IPs, ending on
  `curl: (7) CONNECT tunnel failed, response 590`. Two compounding bugs:
  Sofascore can refuse more than 12 Apify datacenter IPs in a bad spell
  (QA run `eNtVzZd2zSLc2kMul` hit exactly that), and Apify still hands out
  `RESIDENTIAL` proxy URLs when the account has no residential capacity
  (`availableCount: 0`), so the fallback burned three attempts on dead
  CONNECT tunnels instead of trying more free datacenter IPs.
- Dead CONNECT / HTTP 590 now abandons the current proxy tier immediately.
- Datacenter budget raised 12 → 16, and a second free datacenter pass runs
  after residential so a dead metered tier cannot strand the run.
- Client `max_escalations` raised 16 → 40 so the ceiling covers both
  datacenter passes.

### 1.0.16 — 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.12 — 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-26

First release.

- **25 ranking tables** across five sports in one run: FIFA men's world
  ranking, UEFA club and league coefficients, ATP and WTA singles and live,
  UTR men and women, World Rugby, rugby league world, Premier Padel men and
  women, and all twelve UFC divisions.
- A ranking **catalogue** is the product. Sofascore's endpoint returns rows
  and nothing that names them — type 11 is sixteen unlabelled fighters, and
  type 1 is not the FIFA table. The catalogue was built by sweeping every
  type from 1 to 110 against the live API and identifying each table from its
  contents; 25 are live and the rest 404.
- `topN` to cut each table, and an entity filter to pull specific
  competitors.
- Name-to-ID search for teams, players and tournaments, so the rest of
  Sofascore's data can be addressed without hunting IDs by hand.
