Live stream
/v1/live/streamOn each planFree keyNot includedMatch WeekIn fullArchiveNot includedProIn fullAnalyst ProIn full
Live scores pushed instead of polled: one connection sends server-sent events as they happen. snapshot on connect (every match in play, as /v1/live gives it), score when a match's score or state changes, and ball for every new ball (as /v1/live/{match}/balls gives it, with its match). match= follows one match only. Send the key in a header as on every call, so read it with any SSE client on a server (curl -N, Python sseclient, Node eventsource). Each event carries an id: a client that reconnects sends it back by itself and carries on with no ball missed or repeated. A connection lasts 2 minutes and the client reconnects by itself; each connection counts as one call, and a key holds up to 2 at once. For the balls already bowled, call /v1/live/{match}/balls once, then follow the stream.
Parameters
| Name | In | Values | Required |
|---|---|---|---|
match | query | A live match address from /v1/live; leave out for every match in play |
Request
curl -H "Authorization: Bearer $CDB_KEY" \ "https://api.cricketdatabase.com/v1/live/stream"
import requests
r = requests.get("https://api.cricketdatabase.com/v1/live/stream",
headers={"Authorization": f"Bearer {key}"})
print(r.json())const r = await fetch("https://api.cricketdatabase.com/v1/live/stream",
{ headers: { "Authorization": `Bearer ${key}` } });
console.log(await r.json());curl -H "X-API-Key: $CDB_KEY" \ "https://api.cricketdatabase.com/v1/live/stream"
import requests
r = requests.get("https://api.cricketdatabase.com/v1/live/stream",
headers={"X-API-Key": key})
print(r.json())const r = await fetch("https://api.cricketdatabase.com/v1/live/stream",
{ headers: { "X-API-Key": key } });
console.log(await r.json());Response
{
"data": {
"stream": "text/event-stream",
"events": {
"snapshot": "every match in play on connect, as /v1/live gives it",
"score": "a match whose score or state changed (one /v1/live row)",
"ball": "one new ball, as /v1/live/{match}/balls gives it, with its match"
},
"matches_in_play": [
{
"match": "2026-10-09-afghanistan-v-bangladesh",
"name": "Afghanistan v Bangladesh",
"competition": "Bangladesh tour of United Arab Emirates 2026/27",
"format": "Test",
"state": "live",
"international": true,
"women": false,
"status": "Afghanistan require 347 runs",
"starts_at": "2026-10-09T06:00:00Z",
"venue": "Zayed Cricket Stadium, Abu Dhabi",
"city": "Abu Dhabi",
"teams": [
{
"name": "Afghanistan",
"score": "240 & 132/3 (50 ov, target 479)"
},
{
"name": "Bangladesh",
"score": "346 & 372/7d"
}
],
"innings": [
{
"innings": 1,
"team": "Bangladesh",
"runs": 346,
"wickets": 10,
"overs": "92.3",
"chase_target": null,
"innings_declared": false
},
{
"innings": 2,
"team": "Bangladesh",
"runs": 0,
"wickets": 0,
"overs": "89.1",
"chase_target": null,
"innings_declared": false
},
"... 2 more"
],
"ball_by_ball": true,
"batting": "Bangladesh",
"winner": null,
"updated_at": "2026-10-12T21:42:05Z"
},
{
"match": "2026-10-09-south-africa-v-australia",
"name": "South Africa v Australia",
"competition": "Australia tour of South Africa 2026/27",
"format": "Test",
"state": "live",
"international": true,
"women": false,
"status": "South Africa require 319 runs",
"starts_at": "2026-10-09T07:30:00Z",
"venue": "Kingsmead, Durban",
"city": "Durban",
"teams": [
{
"name": "South Africa",
"score": "284 & 102/4 (41 ov, target 421)"
},
{
"name": "Australia",
"score": "390 & 314/6d"
}
],
"innings": [
{
"innings": 1,
"team": "Australia",
"runs": 390,
"wickets": 10,
"overs": "137.2",
"chase_target": null,
"innings_declared": false
},
{
"innings": 2,
"team": "Australia",
"runs": 0,
"wickets": 0,
"overs": "78",
"chase_target": null,
"innings_declared": false
},
"... 2 more"
],
"ball_by_ball": true,
"batting": "Australia",
"winner": null,
"updated_at": "2026-10-12T21:42:06Z"
},
"... 24 more"
]
},
"meta": {
"plan": "plus",
"note": "The call itself answers a stream of events; this is what its first event carries."
}
}A real response from the database for the example request, on a Analyst Pro key. Lists are cut to their first two items.