74.3M 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.
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 Europe/Zurich time, what is on now and next, and the same data in your app with one call. Search any past day on the Archive plan.
All times Europe/Zurich. The same day from the API: GET /v1/channels/ch_cy7wv431/schedule?date=2026-10-11&tz=Europe/Zurich
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | British Open SnookerAction from the British Open at The Centaur, Cheltenham Racecourse. | Mark Selby - Jak Jones | 1h 30m | |
| 01:30 | Tour of Lombardy CyclingAction from the 120th Il Lombardia, the final monument race of the season, which will see a new winner for the first time since 2020. | 2026 | 1h 30m | |
| 03:00 | British Open SnookerAction from the British Open at The Centaur, Cheltenham Racecourse. | Mark Selby - Jak Jones | 2h | |
| 05:00 | Tour of Lombardy CyclingAction from the 120th Il Lombardia, the final monument race of the season, which will see a new winner for the first time since 2020. | 2026 | 1h 30m | |
| 06:30 | British Open SnookerAction from the British Open final between Mark Selby and Jak Jones at The Centaur, Cheltenham Racecourse. | Mark Selby - Jak Jones | 3h | |
| 08:30 | UCI Gravel World Championships: 2026 WomenA look back at the UCI Gravel World Championships. | 1h | ||
| 09:30 | Tour of Lombardy CyclingAction from the 120th Il Lombardia, the final monument race of the season, which will see a new winner for the first time since 2020. | 2026 | 1h 30m | |
| 11:00 | Shenzhen OpenAction from the Shenzhen Open at the Bao'an Sports Centre in China. | Final - Yuan Sijun vs Wu Yize | 2h | |
| 13:00 | Tour of Lombardy CyclingAction from the 120th Il Lombardia, the final monument race of the season, which will see a new winner for the first time since 2020. | 2026 | 1h | |
| 14:00 | UCI Gravel World Championships: 2026 MenAction from the UCI Gravel World Championship, taking place in Nannup, Western Australia. | 1h | ||
| 15:00 | Live: Paris-Tours Cycling: 2026Coverage from the French one-day classic cycling race held every October. | 2h 15m | ||
| 17:15 | Tour of Lombardy CyclingAction from the 120th Il Lombardia, the final monument race of the season, which will see a new winner for the first time since 2020. | 2026 | 1h | |
| 18:15 | Shenzhen OpenAction from the Shenzhen Open at the Bao'an Sports Centre in China. | Final - Yuan Sijun vs Wu Yize | 1h 45m | |
| 20:00 | Paris-Tours CyclingFollow some of the greatest cycling action. | 2026 | 1h | |
| 21:00 | UCI Gravel World Championships: 2026 MenAction from the UCI Gravel World Championship, taking place in Nannup, Western Australia. | 1h | ||
| 22:00 | Chicago MarathonAction from the 2026 Bank of America Chicago Marathon, as elite runners and competitors take on a course to and from Grant Park in the heart of the... | 2026 | 2h |
Copy, add your key, run. The free key reads yesterday and today on every channel, 500 calls a day.
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_cy7wv431/schedule?date=2026-10-11&tz=Europe/Zurich" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_cy7wv431/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_cy7wv431/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_cy7wv431/schedule?date=2026-10-11&tz=Europe/Zurich"); 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_cy7wv431/schedule?date=2026-10-11&tz=Europe/Zurich", { 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_cy7wv431/schedule", params={"date": "2026-10-11", "tz": "Europe/Zurich"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_cy7wv431/schedule?date=2026-10-11, the first programme { "data": [ { "id": "ls_kahmxbxm", "channel": "ch_cy7wv431", "start": "2026-10-10T22:00:00Z", "stop": "2026-10-10T23:30:00Z", "title": "British Open Snooker", "sub_title": "Mark Selby - Jak Jones", "description": "Action from the British Open at The Centaur, Cheltenham Racecourse.", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 16, "date": "2026-10-11", "tz": "Europe/Zurich" } }
What was on, on any date we hold: for research, catch-up, clip finding or proving a broadcast. Any window up to 31 days with /v1/channels/{id}/history on the Archive plan.
| Time | Monday 13 October 2025 | Category |
|---|---|---|
| Nothing held for that day. Try another date. | ||
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 and today on every channel in 150 countries.