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 UTC 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 UTC. The same day from the API: GET /v1/channels/ch_zccyfvrh/schedule?date=2026-10-18&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:00 | Waco: the Longest SiegeThe 1993 Waco siege begun as a raid, turned into a 51-day standoff, and ended with the destruction of a five-storey building and 75 people dead. (S) | 1h 10m | ||
| 00:10 | Weathered: Earth's ExtremesNot 'Business as Usual': Maiya May goes to Cheyenne to visit a supercomputer. In Michigan, she observes the explosive end of a coal plant. (Part 5 ... | S1 E5, Why are Winters Worse if the Planet is Getting Warmer? | 50m | |
| 01:00 | TeleshoppingTeleshopping | 4h | ||
| 05:00 | TeleshoppingTeleshopping | 2h | ||
| 07:00 | Weathered: Earth's ExtremesClimate Crossroads: Maiya May returns to Florida to learn how climate change is impacting ocean currents. She then goes to Georgia to learn about a... | S1 E6, Disaster Preparedness 101 | 35m | |
| 07:35 | Besieged Fortresses......Legendary Battles: An architectural adventure and gripping account of war, The Daunting Fortress of Richard the Lionheart is the story of a feat... | 1h 5m | ||
| 08:40 | Besieged Fortresses......Legendary Battles: La Rochelle was the largest Protestant base in France and for Catholic King, Louis XIII, it was the last stronghold needing t... | S1 E2, La Rochelle : Ville Fortifiée | 1h 10m | |
| 09:50 | Besieged FortressesLegendary Battles: How did the city of Orleans manage to resist for 7 months before being delivered from the English in just a few days by Joan of ... | S1 E3, Orléans : une Ville Fortifiée | 1h 5m | |
| 10:55 | Besieged Fortresses......Legendary Battles: The Gallic wars were coming to an end beneath the fortifications of Alesia. After six years of fighting, almost 200 000 warri... | S1 E4, Alésia, Romains contre Gaulois : la Bataille décisive | 1h 5m | |
| 12:00 | Weathered: Earth's ExtremesClimate Crossroads: Maiya May returns to Florida to learn how climate change is impacting ocean currents. She then goes to Georgia to learn about a... | S1 E6, Disaster Preparedness 101 | 35m | |
| 12:35 | Besieged Fortresses......Legendary Battles: An architectural adventure and gripping account of war, The Daunting Fortress of Richard the Lionheart is the story of a feat... | 1h 10m | ||
| 13:45 | Besieged Fortresses......Legendary Battles: La Rochelle was the largest Protestant base in France and for Catholic King, Louis XIII, it was the last stronghold needing t... | S1 E2, La Rochelle : Ville Fortifiée | 1h 10m | |
| 14:55 | Besieged FortressesLegendary Battles: How did the city of Orleans manage to resist for 7 months before being delivered from the English in just a few days by Joan of ... | S1 E3, Orléans : une Ville Fortifiée | 1h 5m | |
| 16:00 | Besieged Fortresses......Legendary Battles: The Gallic wars were coming to an end beneath the fortifications of Alesia. After six years of fighting, almost 200 000 warri... | S1 E4, Alésia, Romains contre Gaulois : la Bataille décisive | 1h 10m | |
| 17:10 | Silent War: the Shadow of......Atomic Bombs: Dawn of the Apocalypse: Hiroshima to Kazakhstan - how nuclear powers turned remote lands and marginalised peoples into laboratorie... | S1 E1, Know Your Enemy | 1h 10m | |
| 18:20 | Silent War: the Shadow of......Atomic Bombs: Atomic Mirror World: Today, Russia uses nuclear threats to redraw borders and China builds its arsenal unchecked. (Part 2 of 2) (Ep2) | S1 E2, The Russians Are Coming! | 1h 10m | |
| 19:30 | The Rosenbergs: Atomic SpiesThough the Rosenbergs maintain their innocence from the start, the media and public opinion seems to have condemned them from day one. (S) | 1h 10m | ||
| 20:40 | New: Declarations: Black......Americans and the Revolutionary War: Trace the heroic stories of the enslaved and freed Black Americans who fought to define democracy and their... | 1h 10m | ||
| 21:50 | The Rosenbergs: Atomic SpiesThough the Rosenbergs maintain their innocence from the start, the media and public opinion seems to have condemned them from day one. (S) | 1h 10m | ||
| 23:00 | Declarations: Black......Americans and the Revolutionary War: Trace the heroic stories of the enslaved and freed Black Americans who fought to define democracy and their... | 1h 10m |
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_zccyfvrh/schedule?date=2026-10-18&tz=UTC" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_zccyfvrh/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_zccyfvrh/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_zccyfvrh/schedule?date=2026-10-18&tz=UTC"); 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_zccyfvrh/schedule?date=2026-10-18&tz=UTC", { 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_zccyfvrh/schedule", params={"date": "2026-10-18", "tz": "UTC"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_zccyfvrh/schedule?date=2026-10-18, the first programme { "data": [ { "id": "ls_mdhwjwh6", "channel": "ch_zccyfvrh", "start": "2026-10-17T23:00:00Z", "stop": "2026-10-18T00:10:00Z", "title": "Waco: the Longest Siege", "sub_title": null, "description": "The 1993 Waco siege begun as a raid, turned into a 51-day standoff, and ended...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 20, "date": "2026-10-18", "tz": "UTC" } }
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.