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 Europe/Berlin time, what is on now and next, and the same data in your app with one call.
All times Europe/Berlin. The same day from the API: GET /v1/channels/ch_8yy4gxaz/schedule?date=2026-10-14&tz=Europe/Berlin
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:28 | The End Of A Superpower - The Collapse Of The Soviet UnionOnce upon a time there was a country, gigantic confederation of states, one of the largest dominions in histor. | 1h 2m | ||
| 23:53 | Empire BuildersAfter the war Berlin is divided and becomes a symbol of global tension, where borders harden and lives split. | 58m | ||
| 00:30 | Berlin - Fateful Years Of A Metropolis\u201Csocialism or capitalism\u201D? Berlin is right in the middle of a competition between systems.:. | 1h 45m | ||
| 00:51 | The End Of Red OctoberIn The End of Red October, a team takes on the challenge of cleaning up this nuclear mess. | 51m | ||
| 01:42 | Fake WarA documentary series that tells the story of modern war propaganda. | 50m | ||
| 02:15 | Berlin - Fateful Years Of A MetropolisIn Berlin the 60s are marked by the building of the Wall and everyday life in the shadow of the Wall. | 1h 41m | ||
| 02:32 | Fake WarA documentary series that tells the story of modern war propaganda. | 56m | ||
| 03:28 | The End Of A Superpower - The Collapse Of The Soviet UnionOnce upon a time there was a country, gigantic confederation of states, one of the largest dominions in histor. | 1h 2m | ||
| 03:56 | Berlin - Fateful Years Of A MetropolisThe 1970s are a special decade in Berlin as well. The euphoria and revolutionary mood of the sixties changed. | 1h 43m | ||
| 04:30 | Berlin - Fateful Years Of A Metropolis\u201Csocialism or capitalism\u201D? Berlin is right in the middle of a competition between systems.:. | 1h 45m | ||
| 05:39 | The Siege Of LeningradThe Siege of Leningrad began on 8 SEP 1941. For 872 days the city was surrounded by the German Armed Forces. | 59m | ||
| 06:15 | Berlin - Fateful Years Of A MetropolisIn Berlin the 60s are marked by the building of the Wall and everyday life in the shadow of the Wall. | 1h 41m | ||
| 06:38 | Black EaglesThe ME 262, WWII\u2019s best fighter, was the first mass-produced jet, unmatched in speed and power. | 1h 2m | ||
| 07:56 | Berlin - Fateful Years Of A MetropolisThe 1970s are a special decade in Berlin as well. The euphoria and revolutionary mood of the sixties changed. | 1h 43m | ||
| 09:39 | The Siege Of LeningradThe Siege of Leningrad began on 8 SEP 1941. For 872 days the city was surrounded by the German Armed Forces. | 59m | ||
| 10:38 | Black EaglesThe ME 262, WWII\u2019s best fighter, was the first mass-produced jet, unmatched in speed and power. | 1h 2m | ||
| 11:40 | Black EaglesA stroke of engineering genius with speed, firepower and reliability. | 1h | ||
| 12:40 | Black EaglesThe fastest and lightest all-metal monoplane fighter of WWII. It was Germany\u2019s most iconic warplane. | 1h 1m | ||
| 13:41 | Between Hitler And Stalin: Europe’s Darkest YearsFrom 1930 to 1945, Eastern Europe became the stage of mass violence on an unprecedented scale. | 1h 47m | ||
| 15:28 | Mafia QueensWe are in the area of Acerra, in the middle of \u201Cthe Land of Fire\u201D. | 58m | ||
| 16:26 | Mafia QueensThis story starts with a bloodbath: it\u2019s 1999 and we are in a club. | 57m | ||
| 17:23 | Mafia QueensAfter the earthquake of 1980, the rebuilding process offered Camorra organizations a helping hand to relaunch. | 55m | ||
| 18:18 | The Hitler-Stalin-PactThe film shows what far-reaching consequences the Hitler-Stalin Pact had for millions of people in Europe. | 55m | ||
| 19:13 | TerrorAn enormous explosion brings down the hotel. Ninety-one people die. | 49m | ||
| 20:02 | TerrorThree people are killed and many more are injured. | 52m | ||
| 20:54 | TerrorEight Palestinians attack the apartments of the Israeli delegation and kill two athletes. | 50m | ||
| 21:44 | Back To ChernobylChernobyl nuclear disaster was the biggest technological accident in human history. | 1h 3m | ||
| 22:47 | The End Of The War In ColourWhen US troops conquer Nazi Germany, they are followed by camera teams that document the defeated country. | 51m | ||
| 23:38 | The End Of The War In ColourWhen US troops conquer Nazi Germany, they are followed by camera teams that document the defeated country. | 54m |
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_8yy4gxaz/schedule?date=2026-10-14&tz=Europe/Berlin" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_8yy4gxaz/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_8yy4gxaz/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_8yy4gxaz/schedule?date=2026-10-14&tz=Europe/Berlin"); 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_8yy4gxaz/schedule?date=2026-10-14&tz=Europe/Berlin", { 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_8yy4gxaz/schedule", params={"date": "2026-10-14", "tz": "Europe/Berlin"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_8yy4gxaz/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_fw22k617", "channel": "ch_8yy4gxaz", "start": "2026-10-13T21:28:00Z", "stop": "2026-10-13T22:30:00Z", "title": "The End Of A Superpower - The Collapse Of The Soviet Union", "sub_title": null, "description": "Once upon a time there was a country, gigantic confederation of states, one o...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 29, "date": "2026-10-14", "tz": "Europe/Berlin" } }
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.