72.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.
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/Vienna time, what is on now and next, and the same data in your app with one call.
All times Europe/Vienna. The same day from the API: GET /v1/channels/ch_2fv62cxs/schedule?date=2026-10-11&tz=Europe/Vienna
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:21 | Der gemeine HubschrauberwelsJeremy Wade travels to the Himalayas to investigate river attacks. | 53m | ||
| 00:14 | Der Atlantische TarpunExtreme angler Jeremy Wade ventures deep into Central America in search of a killer fish. | 53m | ||
| 01:07 | Eiskalter KillerIm Eis und Sturm jagt Jeremy Wade ein Seeungeheuer bis in extreme Tiefen. | 1h 1m | ||
| 02:08 | Der BullenhaiJeremy Wade goes to South Africa, where the biggest bull shark ever recorded was caught. | 51m | ||
| 02:59 | Killer aus dem AbgrundJeremy Wade untersucht die Tragödie der RMS Laconia auf Ascension Island. | Teil 1 | 1h 39m | |
| 04:38 | Das Grauen der VulkaninselEin Wesen terrorisiert ein Fischerdorf. Jeremy Wade sucht den Angreifer. | 59m | ||
| 05:38 | Der Amerikanische Killer-WelsJeremy Wade visits tourist hotspots in the USA in search of river monsters. | 52m | ||
| 06:30 | Der RiesenwelsBiologist and extreme angler Jeremy Wade investigates tales of a man-eating catfish. | 54m | ||
| 07:24 | Der kolumbianische SüßwasserstechrochenJeremy Wade heads to Colombia to investigate a creature blamed for killing a new bride. | 53m | ||
| 09:16 | Das malaysische SeemonsterZwei Vermisste in Malaysia: Jeremy Wade jagt sein letztes entkommenes Monster. | 59m | ||
| 10:16 | Die Killerfische des SüdpazifikAttacks from unseen assailants in the remote mountains and jungles of Fiji's interior. | 53m | ||
| 11:09 | Tödlicher Angriff am Rio YataJeremy Wade investigates the story of a man who had his face ripped off in Bolivia. | 53m | ||
| 12:02 | RazorheadJeremy Wade sucht in Florida nach dem Brutalen Angreifer über und unter Wasser. | 59m | ||
| 13:01 | Rückkehr des Killer-WelsesZehn Jahre nach dem Unfall jagt Jeremy Wade den Goonch-Wels erneut in Nepal. | 59m | ||
| 14:01 | Der australische SüßwassersägerochenJeremy Wade is in the Australian outback trying to catch the rare freshwater sawfish. | 53m | ||
| 14:54 | Der japanische Riesen-SalamanderJeremy Wade is in Japan on the trail of the kappa, a fish about which legends abound. | 51m | ||
| 15:45 | Der AlligatorhechtExtreme angler Jeremy Wade heads to Texas on the trail of the vicious alligator gar. | 55m | ||
| 16:39 | Der weiße StörJeremy Wade goes into the forbidding Alaskan wilderness to visit two large lakes. | 53m | ||
| 17:32 | Der ArapaimaIn the depths of the Amazon, legends tell of an evil spirit in a great fish. | 53m | ||
| 18:26 | Teufel der TiefeSpurensuche in Mexiko: Jeremy Wade jagt einen gefürchteten Tiefsee-Teufel. | 59m | ||
| 19:25 | Der australische FlusshaiJeremy Wade returns to Australia's Fitzroy River on his toughest quest yet. | 53m | ||
| 20:18 | Der sambische WunduwelsExtreme angler Jeremy Wade travels to the Zambezi River in Africa. | 53m | ||
| 21:11 | Der rote PacuExtreme angler Jeremy Wade travels to Papua New Guinea. | 51m | ||
| 22:02 | Der russische Kaluga-HausenThe disappearance of three men in Russia proves to be a baffling case for Jeremy Wade. | 53m | ||
| 22:55 | Auf der Suche nach dem Killer-WelsJeremy Wade is on the hunt for the notorious killer catfish. | 54m | ||
| 23:49 | MeeresgeheimnisseJeremy Wade zeigt, wie das Flussmonster-Team vom Fluss auf das Meer gelangte. | 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_2fv62cxs/schedule?date=2026-10-11&tz=Europe/Vienna" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_2fv62cxs/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_2fv62cxs/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_2fv62cxs/schedule?date=2026-10-11&tz=Europe/Vienna"); 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_2fv62cxs/schedule?date=2026-10-11&tz=Europe/Vienna", { 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_2fv62cxs/schedule", params={"date": "2026-10-11", "tz": "Europe/Vienna"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_2fv62cxs/schedule?date=2026-10-11, the first programme { "data": [ { "id": "ls_q8vbpba0", "channel": "ch_2fv62cxs", "start": "2026-10-10T21:21:39Z", "stop": "2026-10-10T22:14:47Z", "title": "Der gemeine Hubschrauberwels", "sub_title": null, "description": "Jeremy Wade travels to the Himalayas to investigate river attacks.", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 26, "date": "2026-10-11", "tz": "Europe/Vienna" } }
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.