Where to watch an event
Every TV channel showing a sports event, country by country, and whether each showing is live, delayed or a repeat.
Paid plansLive data
GEThttps://api.tvguideapi.com/v1/events/{id}/broadcasts
Try itRuns the real call with your key
200 OK
Parameters
| Parameter | In | Type | Required | Description | Example |
|---|---|---|---|---|---|
| id | path | string | required | The event id. Ids come from Events. | ev_d2bh99ey |
| country | query | list | optional | Country codes, ISO 3166-1 alpha-2, comma separated. | GB |
kind is live, delayed or repeat. A showing the guide marks as a repeat, or one that starts after the match has ended, is never counted as live.Request
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/events/ev_d2bh99ey/broadcasts"
$ch = curl_init("https://api.tvguideapi.com/v1/events/ev_d2bh99ey/broadcasts");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("TVG_KEY")],
]);
$answer = json_decode(curl_exec($ch), true);
const r = await fetch("https://api.tvguideapi.com/v1/events/ev_d2bh99ey/broadcasts", {
headers: { Authorization: `Bearer ${process.env.TVG_KEY}` },
});
const { data, meta } = await r.json();
import os, requests
r = requests.get(
"https://api.tvguideapi.com/v1/events/ev_d2bh99ey/broadcasts",
headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"},
)
data = r.json()["data"]
Sample response
{
"data": [
{
"country": "GB",
"channel": "ch_3vd81kpz",
"start": "2026-10-18T16:30:00Z",
"kind": "live"
},
{
"country": "TH",
"channel": "ch_b62tq0we",
"start": "2026-10-18T16:30:00Z",
"kind": "live"
},
{
"country": "GB",
"channel": "ch_m0x4hs7r",
"start": "2026-10-18T22:00:00Z",
"kind": "repeat"
}
],
"meta": {
"count": 3,
"next": null,
"took_ms": 41
}
}