73.8M 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 America/Mexico_City 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 America/Mexico_City. The same day from the API: GET /v1/channels/ch_qbzpm02g/schedule?date=2026-10-13&tz=America/Mexico_City
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:03 | To Catch a Smuggler | Contrabando por mar | 1h | |
| 00:03 | Gordon Ramsay: Uncharted | Aventuras extremas: Costa jurásica de Inglaterra | 1h | |
| 01:03 | Salvajemente famosos el desafío On now | Natalie Portman en el desierto de Escalante | 59m | |
| 02:02 | Air Crash Investigation | S25 E1, Deadly Charter | 48m | |
| 02:50 | Drain the Oceans | S4 E6, Venice's Lost Empire | 47m | |
| 03:37 | Primal Survivor: Extreme African Safari | S1 E6, Serengeti | 44m | |
| 04:21 | Alerta aeropuerto 6 | Blancas aventuras | 47m | |
| 05:08 | Alerta Aeropuerto Madrid | Escápate si puedes | 47m | |
| 05:55 | Drain the Oceans | S2 E15, Rise of the Roman Empire | 1h 5m | |
| 07:00 | Lost Treasures of Egypt | S5 E4, The Legend of Cleopatra | 1h 2m | |
| 08:02 | Drain the Oceans | S4 E8, Hurricane Apocalypse | 59m | |
| 09:01 | Ciudades encontradas con Albert Lin | La cuna de los Mayas | 1h | |
| 10:01 | Air Crash Investigation | S20 E8, Caught in a Jam | 59m | |
| 11:00 | Alerta aeropuerto Sao Paulo | Oculto en la piel | 1h | |
| 12:00 | Gordon Ramsay sabores extremos | Puerto Rico | 1h | |
| 13:00 | Salvajemente famosos el desafío | Natalie Portman en el desierto de Escalante | 1h | |
| 14:00 | Primal Survivor | S2 E3, Outback Inferno | 59m | |
| 14:59 | Air Crash Investigation | S24 E10, Running on Empty | 1h | |
| 15:59 | Drain the Oceans | S4 E9, The Great Barrier Reef | 1h 1m | |
| 17:00 | Ciudades perdidas con Albert Lin | La fortaleza de los templarios | 59m | |
| 17:59 | Tesoros perdidos de Roma | Los gladiadores del coliseo perdido | 1h | |
| 18:59 | Alerta aeropuerto 3 Perú | Falso informante | 59m | |
| 19:58 | Alerta aeropuerto Sao Paulo | Luna de miel en prisión | 1h 1m | |
| 20:59 | Naming the Dead | S1 E1, The Hitchhiker | 54m | |
| 21:53 | Tesoros perdidos de Egipto | S6 E6, The Last Pharaohs | 59m | |
| 22:52 | Lost Treasures of the Bible | S1 E2, Noah's Great Flood | 1h 2m | |
| 23:54 | Gordon Ramsay: Uncharted Showdown | S1 E2, Wales Tales | 59m |
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_qbzpm02g/schedule?date=2026-10-13&tz=America/Mexico_City" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_qbzpm02g/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_qbzpm02g/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_qbzpm02g/schedule?date=2026-10-13&tz=America/Mexico_City"); 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_qbzpm02g/schedule?date=2026-10-13&tz=America/Mexico_City", { 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_qbzpm02g/schedule", params={"date": "2026-10-13", "tz": "America/Mexico_City"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_qbzpm02g/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_f5graw8e", "channel": "ch_qbzpm02g", "start": "2026-10-13T05:03:00Z", "stop": "2026-10-13T06:03:00Z", "title": "To Catch a Smuggler", "sub_title": "Contrabando por mar", "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 27, "date": "2026-10-13", "tz": "America/Mexico_City" } }
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 | Saturday 10 October 2026 | Category |
|---|---|---|
| 23:02 | Primal Survivor: Mighty Mekong | |
| 23:03 | Primal Survivor: Mighty Mekong | |
| 00:02 | Gordon Ramsay sabores extremos | |
| 31 more programmes that day, on Archive | ||
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.