Changelog

New endpoints, parameters and data — newest first. All changes are backwards-compatible; we add fields, we don't remove them.

August 2026

Season addressing that matches the data

  • GET /v1/leagues/{id}/fixtures no longer depends on the feed's season index: it defaults to your plan's whole history window plus the upcoming schedule, start_time/end_time narrow it with no 24h cap, and ?season= now selects by the season's kickoff dates. Leagues whose seasons list is empty — the index only tracks a subset — return their full fixture history instead of season_not_found, and a ?season= they do not list is a clear 404.
  • GET /v1/standings is now explicit about coverage: where the feed carries no current table, we compute one from finished results where the league's format allows it — marked "source": "computed" (goal, corner and card tables alike; administrative point adjustments excluded). Formats a computed table cannot represent faithfully (playoff splits, Apertura/Clausura pyramids, quadruple round-robins) return an explicit standings_not_available error instead of a stale or missing-season answer. Every response now names its season and its source ("feed" | "computed").
  • Unsupported query parameters other feeds use — from, to, date, and team/live on /v1/fixtures — return 400 unknown_parameter instead of being silently ignored, so an unfiltered response can never masquerade as a filtered one.
  • Pricing copy now spells out the Pro odds package: opening, closing and in-play prices; tick-by-tick movement history stays Ultra.

August 2026

The league list, published and enforced

  • The Pro league list is published in full, with ids, at /docs/league-coverage: the top flight of 84 countries, the 34 second divisions bet365 prices in full, the continental club cups and national-team football.
  • Plan league scope is now enforced. Free keys reach the five big European leagues, Pro the published list, Ultra everything. A competition outside your plan returns 403 insufficient_plan — never an empty list.

August 2026

BTTS, and a trimmed history

  • GET /v1/leagues/{id} now lists the league's seasons (newest first, one marked current) — the valid ?season= values for league fixtures and standings.
  • country_id and is_national are dropped from team payloads — the upstream data never actually carried them, so they only misled.
  • Both-teams-to-score joins /v1/fixtures/{id}/odds (bet365, pre-match) and the coverage table.
  • Bookmakers beyond bet365 on /v1/fixtures/{id}/odds are now an Ultra feature — bet365 (every market) stays on Pro.
  • The first_10min and next_goal markets are dropped from odds history.
  • The /v1/fixtures/{id}/corners endpoint is removed — corner counts are on every fixture, corner lines on /odds, and corner tables on /standings.
  • corner_projection is dropped from /v1/fixtures/{id}/statistics and the stats include.

August 2026

Closing lines

  • The current stage is renamed closing on every odds payload — opening / closing / inplay, the terms backtesters actually use. For a match that has not kicked off yet, closing is simply the latest pre-match price so far.

August 2026

Bookmaker odds

  • /v1/fixtures/{id}/odds now returns full prices: every stage (opening, closing, in-play) carries the line and both prices, not just the line.
  • New bookmakers parameter (comma list, default bet365) and GET /v1/bookmakers — 18 more books with 1X2, Asian handicap, goal line and corner line where recorded, one odds entry per book.
  • Odds movement history too: ?bookmaker= on /v1/fixtures/{id}/odds/history (one book at a time, default bet365) replays any bookmaker's 1X2, Asian handicap, goal line or corner line tick by tick.

August 2026

Reliable live view

  • status=live now only returns matches that kicked off within the last 4 hours — stale feed rows stuck in a running status no longer appear.
  • per_page for status=live goes up to 500, so a single page holds every live match and offset pagination cannot skip or duplicate a match mid-scroll.

August 2026

Focused fixtures endpoints

  • New GET /v1/leagues/{id}/fixtures — a full season of league fixtures (defaults to the newest season with fixtures), the bulk entry point for historical data.
  • New GET /v1/teams/{id}/fixtures — one team's matches home and away, most recent first.
  • /v1/fixtures is now the window view: start_time / end_time unix timestamps bound a window of up to 24 hours (default: today UTC), so any timezone's "today" is one call. The date, season, team and live parameters are gone — use the new endpoints, and status=live for in-play. status accepts all (default) | scheduled | live | finished; unknown values return a 400.
  • esports is now a plain boolean: false (default) returns real football, true returns esoccer instead — the mixed "include" mode is gone.

August 2026

Kickoff timestamps

  • New kickoff_ts field — unix seconds, UTC — alongside kickoff_utc on every fixture payload, so comparisons and backtest math need no date parsing.

August 2026

Short-form odds lines

  • All odds lines are now single short-form numbers: split bookmaker quotes are averaged ("0.0, -0.5" becomes -0.25) on every endpoint, tick history included.
  • Card lines (card_line, card_asian) are now part of the odds include on /v1/fixtures.

August 2026

Compound requests

  • New include parameter on /v1/fixtures and /v1/fixtures/{id} — expand odds, events and in-play stats inline: one call per screen, not one call per match.

August 2026

Localization & esoccer filter

  • New lang parameter on fixtures, leagues, teams, standings and countries — team, league and country names in 21 languages besides English.
  • New esports parameter on /v1/fixtures and /v1/leagues — esoccer (e-football) leagues are excluded by default, opt in with include or only.

July 2026

v1 launched

  • Public launch: fixtures, live scores, odds (pre-match + in-play with opening lines and tick history), corners, cards, standings, match events, leagues, teams and countries.
  • API key authentication, per-minute rate limits and a uniform JSON envelope.