Changelog
What changed in the API, newest first.
Win probability
/v1/analytics/matches/{match}/win-probability gives the batting side's chance of winning after each over of a one-day or T20 match, from models fitted each week on our own ball-by-ball record of completed matches. Its Brier score on matches held back from fitting comes with every answer. Analyst Pro, and a sample on every plan for the last 30 days, as with the worm.
Live state in /v1/status
/v1/status has a new object, live: state (running, paused or stopped), resumes_at while paused, last_update and in_play. A pause lasts a few minutes, and when reads resume every ball since the last one held is caught up, so nothing is lost, only delayed.
The live stream
/v1/live/stream pushes live scores as server-sent events on Match Week, Pro and Analyst Pro: a snapshot of every match in play on connect, then a score event whenever a score or state changes and a ball event for every new ball. Reconnecting with the last event id carries on with no ball missed or repeated. One connection of up to 2 minutes counts as one call, so following every live match all day costs about 720 calls instead of thousands of polls.
Bulk files
Archive, Pro and Analyst Pro can now download the whole record instead of paging through it: /v1/export lists the files (matches, innings, batting, bowling and every ball, one file a year for each since 2001, and one file each for players, teams and grounds), and /v1/export/{file} sends one, as gzipped CSV or gzipped JSON lines. The matches file carries the toss, result, officials and the first day's weather. Each download counts as one call; the files are rebuilt each night up to yesterday.
The manual and the MCP tools in the documentation
The whole API is now one markdown file for agents at /documentation/manual.md, compiled from the same lists as the pages. The documentation gains an MCP server guide and an MCP tools page listing every tool with its arguments and the call it makes, and each endpoint page links its tool. A key made in your account now appears in the documentation's Run it live panel by itself.
Scorecards for older internationals
Internationals held without their balls now carry their scorecard where we hold it, back to the 1870s: coverage scorecard, with every batter's runs, balls (null where the old card leaves it blank), minutes, fours, sixes and how out, and every bowler's overs, maidens, runs, wickets and economy, with balls_per_over for the 8-ball overs of the past. /v1/matches/{match}/scorecard answers them on the same plans as any scorecard; /v1/matches takes coverage=scorecard; their deliveries, overs and partnerships calls answer 404 no_ball_by_ball, not counted. The old cards do not name the fielder or the bowler for each dismissal.
Match-day weather
/v1/matches/{match}/scorecard has a new list, weather: one entry a day of the match, with day, max_c, min_c, rain_mm, humidity_pct, dew_point_c and wind_kmh, each null when not known, and an empty list for a ground not yet placed. The match page shows the same as Conditions.
Innings totals for older internationals
Internationals without a scorecard now carry their innings totals where we hold them: coverage totals, with each innings' runs, wickets, overs, extras and fall of wickets, the batter out at each wicket with their runs and balls. /v1/matches/{match} answers them under innings, /v1/matches takes coverage=totals and each row carries its scores, and the rest stay coverage result_only. The scorecard, deliveries and partnerships calls still answer 404 no_scorecard for them.
Every women's international, with its result
Matches now lists every women's Test, ODI and T20 international as well as the men's, from the first women's Test in December 1934. Those we hold ball by ball are as before; the rest are listed with their teams, ground, dates and result, with coverage result_only, gender female and an address ending in -women. /v1/matches?gender=female&coverage=result_only lists them.
Batting and bowling styles
/v1/players/{player} has two new fields on every plan: batting_style and bowling_style, such as Right-hand bat and Right-arm fast-medium, each null when not known. They are filled for the players of every international since 2001 and of every match followed live.
Live scores
Three new endpoints for Match Week, Pro and Analyst Pro. /v1/live lists every match in play now, men and women, international and domestic, with the score and the state of play, updated every minute; state=upcoming and state=finished list the next 24 hours and the last 48. /v1/live/{match} gives one match: batting and bowling so far, who is in, the partnership, the chase and the last 12 balls. /v1/live/{match}/balls gives every ball, or with after only the balls since your last call. A live match keeps its address while it is held, and joins /v1/matches once its scorecard is in.
Birth and death details for players
/v1/players/{player} has five new fields on every plan: born, birthplace, died, deathplace and nationality, each null when not known. Dates are YYYY-MM-DD, or YYYY-MM or YYYY when only the month or year is known. country is unchanged: it is still the side the player played for. Player pages show the same details.
Every men's international back to 1877, with its result
Matches now lists every men's Test, ODI and T20 international ever played, back to the first Test in March 1877. Those we hold ball by ball are as before; the rest are listed with their teams, ground, dates and result, and their scorecard is not in the database. Every match carries a new field, coverage: full or result_only, and /v1/matches takes coverage as a filter. A result-only match answers /v1/matches/{slug} with its result, official number and ground on every plan; its scorecard, deliveries, overs, partnerships and reviews answer 404 with a new error code, no_scorecard, which is not counted against your day.
Our own field names, and no numbers in addresses
Fields renamed, with nothing kept under the old names. Deliveries: non_striker is now partner, noballs no_balls, legbyes leg_byes, non_boundary all_run, and a wicket's kind, player_out and fielders are how_out, dismissed and fielded_by. Matches: match_number is official_number, method rain_rule, player_of_match player_of_the_match; an innings' declared, super_over and target are innings_declared, is_super_over and chase_target; officials are on_field_umpires, third_umpire, fourth_umpire and referee. Scorecards: noballs is no_balls and super_over is_super_over. Reviews: umpire, decision and umpires_call are on_field_umpire, outcome and on_field_call_stood. Dismissals: by_kind is by_how_out, each with how_out. A player no longer returns ids from other databases. Players, teams and grounds that share a name now end in a short code instead of a number; keys made before today can still use the old numbered addresses until 31 October 2026, answered with Deprecation, Sunset and X-Replaced-By headers naming the new address, and after that they return 404.
One answer shape, clearer errors, and a pace limit
Every answer is now {"data": ..., "meta": {...}}: the thing asked for in data, and the plan, count and paging in meta. Lists page by page or by cursor (next_cursor), with per_page. Errors have eight fixed codes: bad_request, unauthorized, upgrade_required (naming the plan), not_found, unknown_parameter (422, listing what the endpoint takes), rate_limited, quota_exceeded and server_error. Each plan now has a calls-a-minute limit beside its daily quota, with X-RateLimit and X-Quota headers, and /v1/usage no longer counts against the quota. A key in the address is refused, and the version in the address is optional.
Five plans: Pro joins, and Archive reads to yesterday
A fifth plan, Pro, has Archive and Match Week together: every match since 2001 and today's, with 50,000 calls a day. Archive now reads every match up to yesterday; today's matches are part of Match Week, Pro and Analyst Pro. A plan that cannot read something now names every plan that can, rather than saying "or above".
Documentation, and three corrections
The documentation opens: an overview, 14 guides, a page for every endpoint with a live console, this changelog, an OpenAPI 3.1 spec and a Postman collection. Deliveries now count overs from 1, as the overs endpoint does. Dismissal analysis leaves out retirements, so it agrees with career stats. Chase bands start from a realistic lowest target for the format.
Analytics open: 12 analytical endpoints
Matchups, player splits, phases, dismissals, scoring shape and rolling form; venue par scores and toss effect; team phases, competition trends, chases and the match worm. All 40 endpoints now answer.
26 data endpoints
Search, matches with every filter, scorecards, deliveries, overs, partnerships, DRS reviews, players and their logs, teams and head-to-head, venues, competitions and seasons, and records.
The API opens
Keys, the four plans and their daily limits, rate-limit headers on every response, one error shape, /v1/usage and /v1/status.