90.1M listings
Every country's schedule under one key, one shape and one set of ids.
GET /v1/now
What every channel in a country is showing this minute, with the next programme after it. On the Live plan; the free key reads yesterday.
MIT, no lock-in
Every lab tool reads only the public API with your own key, so it runs on the free key.
Working normally
Checked every minute from outside our own servers.
The full schedule in Africa/Harare time, what is on now and next, and the same data in your app with one call.
All times Africa/Harare. The same day from the API: GET /v1/channels/ch_5ah6xt9s/schedule?date=2026-10-23&tz=Africa/Harare
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:55 | INSIDE Ducati Lenovo TeamS26 E17 — Episode 17: Indonesia The behind-the-scenes series, chronicling the life of the Ducati Lenovo team through travel, events, and the track.... | Sport, All sport | 15m | |
| 00:10 | F1 - Paddock Uncut: United States LiveUnited States. LIVE From Circuit of the Americas - Austin, USA. | Sport, All sport | 30m | |
| 00:40 | SBK HL '26: Spanish SBK Race 2From Circuito de Jerez - Jerez de la Frontera, Spain. | Sport, Motorsport | 5m | |
| 00:45 | MotoGP '26: Australia Moto2 Practice 1 LiveLIVE From Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 55m | |
| 01:40 | MotoGP '26: Australia Practice 1 LiveLIVE From Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 1h 20m | |
| 03:00 | Pushing the LimitsThe show covers Toyota Gazoo Racing's motorsport action, including rallies, the World Endurance Championship (WEC) and other events. | Sport, All sport | 30m | |
| 03:30 | GP ConfidentialS26 E19 F1 secrets, insider news, and technical details analysis. Complemented by historical milestones as well as race previews. | Sport, All sport | 30m | |
| 04:00 | SBK HL '26: Spanish SBK Race 1From Circuito de Jerez - Jerez de la Frontera, Spain. | Sport, All sport | 5m | |
| 04:05 | SBK HL '26: Spanish SBK Race 2From Circuito de Jerez - Jerez de la Frontera, Spain. | Sport, All sport | 5m | |
| 04:10 | MotoGP '26: Australia Moto3 Practice LiveLIVE From Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 50m | |
| 05:00 | MotoGP '26: Australia Moto2 Practice LiveLIVE From Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 55m | |
| 05:55 | MotoGP '26: Australia MotoGP Practice LiveLIVE From Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 1h 20m | |
| 07:15 | INSIDE Ducati Lenovo TeamS26 E17 — Episode 17: Indonesia The behind-the-scenes series, chronicling the life of the Ducati Lenovo team through travel, events, and the track.... | Sport, All sport | 15m | |
| 07:30 | ADAC GT Masters '26: Rnd 6 Race 1Round 6 Race 1. From Hockenheimring - Hockenheim, Germany. | Sport, All sport | 1h 15m | |
| 08:45 | ADAC GT Masters '26: Rnd 6 Race 2Round 6 Race 2. From Hockenheimring - Hockenheim, Germany. | Sport, All sport | 1h 15m | |
| 10:00 | Supercars HL '26: Repco Bathurst 1000From Mount Panorama Motor Racing Circuit - Bathhurst, Australia. | Sport, All sport | 2h | |
| 12:00 | F1 - Paddock Uncut: United StatesUnited States. From Circuit of the Americas - Austin, USA. | Sport, All sport | 30m | |
| 12:30 | F1 Driver Presser: United StatesUnited States. From Circuit of the Americas - Austin, USA. | Sport, All sport | 1h | |
| 13:30 | MotoGP '26: Australia Moto2 Practice 1From Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 1h | |
| 14:30 | MotoGP '26: Australia Moto2 PracticeFrom Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 1h | |
| 15:30 | MotoGP '26: Australia Practice 1From Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 1h | |
| 16:30 | MotoGP '26: Australia MotoGP PracticeFrom Phillip Island Grand Prix Circuit - Phillip Island, Australia. | Sport, All sport | 1h | |
| 17:30 | F1 - Paddock Uncut: United StatesUnited States. From Circuit of the Americas - Austin, USA. | Sport, All sport | 30m | |
| 18:00 | F1 Driver Presser: United StatesUnited States. From Circuit of the Americas - Austin, USA. | Sport, All sport | 1h | |
| 19:00 | F1 Build Up LiveLIVE From Circuit of the Americas - Austin, USA. | Sport, All sport | 25m | |
| 19:25 | F1 '26: United States GP Practice 1 LiveLIVE From Circuit of the Americas - Austin, USA. | Sport, All sport | 1h 35m | |
| 21:00 | The F1 Show: United States LiveUnited States. LIVE From Circuit of the Americas - Austin, USA. | Sport, All sport | 1h | |
| 22:00 | F1 - Paddock Uncut: United StatesUnited States. From Circuit of the Americas - Austin, USA. | Sport, All sport | 30m | |
| 22:30 | F1 '26: United States GP Practice 2 LiveLIVE From Circuit of the Americas - Austin, USA. | Sport, All sport | 2h 15m |
Copy, add your key, run. The free key reads yesterday on every channel, 500 calls a day; today and ahead are on Live.
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_5ah6xt9s/schedule?date=2026-10-23&tz=Africa/Harare" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_5ah6xt9s/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_5ah6xt9s/history?from=2026-10-13T00:00:00Z&to=2026-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_5ah6xt9s/schedule?date=2026-10-23&tz=Africa/Harare"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("TVG_KEY")], ]); foreach (json_decode(curl_exec($ch), true)["data"] as $slot) { echo $slot["start"], " ", $slot["title"], "\n"; }
const r = await fetch("https://api.tvguideapi.com/v1/channels/ch_5ah6xt9s/schedule?date=2026-10-23&tz=Africa/Harare", { headers: { Authorization: `Bearer ${process.env.TVG_KEY}` }, }); const { data } = await r.json(); data.forEach(s => console.log(s.start, s.title, s.flags.live ? "LIVE" : ""));
import os, requests r = requests.get( "https://api.tvguideapi.com/v1/channels/ch_5ah6xt9s/schedule", params={"date": "2026-10-23", "tz": "Africa/Harare"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_5ah6xt9s/schedule?date=2026-10-23, the first programme { "data": [ { "id": "ls_xjhs8gf6", "channel": "ch_5ah6xt9s", "start": "2026-10-22T21:55:00Z", "stop": "2026-10-22T22:10:00Z", "title": "INSIDE Ducati Lenovo Team", "sub_title": null, "description": "S26 E17 — Episode 17: Indonesia\nThe behind-the-scenes series, chronicling the...", "category": [ "sport", "all sport", "motorcycling", "sports" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 29, "date": "2026-10-23", "tz": "Africa/Harare" } }
8 calls cover a channel from its details to its past. Each one opens in the documentation with Try it.
A free key in a minute, with Google. No card. Yesterday's listings on every channel in 176 countries.