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/Berlin 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/Berlin. The same day from the API: GET /v1/channels/ch_0nppmkam/schedule?date=2026-10-14&tz=Europe/Berlin
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | RTL Nachtjournal | 25m | ||
| 00:25 | RTL Nachtjournal Spezial | 20m | ||
| 00:45 | Les experts : MiamiUn homme est retrouvé mort dans un bungalow. Les experts découvrent qu'il était escort boy et qu'il recevait ici ses clientes, des femmes en mal d'... | S10 E2, Stiff | 50m | |
| 01:35 | Les experts : MiamiAlors qu'ils enquêtent sur un meurtre à Miami, deux agents se retrouvent pris au coeur d'une tornade, qui détruit entièrement la scène de crime. | S10 E3, Blown Away | 45m | |
| 02:20 | Les experts : MiamiL'équipe prend en chasse un tueur en série qui s'attaque à des prostituées. Le temps presse, sa dernière victime est peut-être encore en vie. | 45m | ||
| 03:05 | Les expertsDeux meurtres mobilisent les experts : un homme a succombé devant un casino, un pieu dans la tête, et le fils d'une star de la NBA a été assassiné. | 45m | ||
| 03:50 | Les expertsAu volant de sa voiture, une octogénaire fonce dans la vitrine d'un restaurant. S'agit-il d'un acte désespéré ou d'une perte de contrôle du véhicule ? | 45m | ||
| 04:35 | Les expertsCatherine, Nick et Sara enquêtent sur la mort d'un homme retrouvé dans une barrique de déchets toxiques. Greg assiste Warrick et Grissom sur une au... | 45m | ||
| 05:20 | Les expertsLes agents de la police scientifique enquêtent sur l'assassinat d'un homme, retrouvé dans une salle de cinéma avec un tournevis planté dans la nuque. | 40m | ||
| 06:00 | Deutschland am Morgen | 3h | ||
| 09:00 | Au rythme de la vie | 30m | ||
| 09:30 | Verklag mich doch! | 30m | ||
| 10:00 | Ulrich Wetzel - Das Strafgericht | 1h | ||
| 11:00 | Barbara Salesch - Das Strafgericht | 1h | ||
| 12:00 | Punkt 12 | 3h | ||
| 15:00 | Barbara Salesch - Das Strafgericht | 55m | ||
| 15:55 | Ulrich Wetzel - Das Strafgericht | 1h 5m | ||
| 17:00 | Ulrich Wetzel - Das Jugendgericht | 30m | ||
| 17:30 | Unter uns | 30m | ||
| 18:00 | Explosiv - Das Magazin | 30m | ||
| 18:30 | Exclusiv - Das Star-Magazin | 15m | ||
| 18:45 | RTL aktuell | 20m | ||
| 19:05 | Le rêve de Diana | S2026 E199, Folge 5053 | 35m | |
| 19:40 | Au rythme de la vie | 35m | ||
| 20:15 | Mario Barth deckt auf | 2h 15m | ||
| 22:30 | stern TV | 1h 30m |
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_0nppmkam/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_0nppmkam/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_0nppmkam/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_0nppmkam/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_0nppmkam/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_0nppmkam/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_0nppmkam/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_tmnm9d57", "channel": "ch_0nppmkam", "start": "2026-10-13T22:00:00Z", "stop": "2026-10-13T22:25:00Z", "title": "RTL Nachtjournal", "sub_title": null, "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 26, "date": "2026-10-14", "tz": "Europe/Berlin" } }
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 155 countries.