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/Amsterdam 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/Amsterdam. The same day from the API: GET /v1/channels/ch_5a3dt7t2/schedule?date=2026-10-15&tz=Europe/Amsterdam
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | Flikken MaastrichtDe financial controller van een goededoelenorganisatie raakt met haar auto van de weg en sterft op weg naar het ziekenhuis. Een eenvoudig ongeluk, ... | S9 E8, Bedrog | Dramaseries, Misdaad | 47m |
| 00:47 | Per Seconde WijzerTwee kandidaten testen onder hoge druk hun kennis in verschillende categorieën. Ze hebben tweehonderd seconden de tijd om vier vragen te beantwoord... | Aflevering 47 | Spelshow, Entertainment | 28m |
| 01:15 | BinnensteBuitenIn Amsterdam woont Coen op de plek waar hij is opgegroeid; een prachtig oud schip. Coen heeft zelf de plek verbouwd en verduurzaamd. Hij deelt het ... | Aflevering 122 | Bouwen en verbouwen, Culinair | 33m |
| 01:48 | Ik VertrekSportleraar Sjors (41) en ambtenaar Sofie (41) verhuizen met hun zoons Billy (11) en Flynn (8) naar het Franse Ambert. Ze nemen een bestaande campi... | Familie Spanbroek | Reality, Reizen | 46m |
| 02:34 | Noord-Zuid-Oost-WestMaarten van Rossem duikt in de vondst van de grootste muntschat ooit opgegraven in de regio Utrecht. In ROEG! bewondert boswachter Bart Zwiers de v... | Van Rossem Vertelt - Roeg! | Samenleving, Documentaire | 13m |
| 02:47 | De slimste mensUitdager: Adriaan ter Braak. | S28 E12, Laurens van Dam | Spelshow | 58m |
| 03:45 | Daten in het Dorp op TexelEr worden knopen doorgehakt en er moeten harde keuzes gemaakt worden. Mike loopt een blauwtje bij een live radio-uitzending. Larissa wil alle 'date... | Aflevering 8 | Reality | 50m |
| 04:35 | Mensen zoals jij en ikKorte televisiespelen waarin Kees Brusse in de huid kruipt van gewone Nederlanders. Elk verhaal kenmerkt zich door een onverwachte wending. | Bang in het donker | Dramaseries, Komedie | 25m |
| 05:00 | Vroeg!Stephan Komduur en Merel Wielaert nodigen elke werkdag een studiogast uit die met de luisteraars vooruitblikt op een actueel onderwerp. Luisteraars... | Aflevering 206 | Talkshow | 1h |
| 06:00 | NOS Radio 1 JournaalHet laatste nieuws uit binnen- en buitenland, achtergronden, reacties, analyses en sport. | Nieuws | 1h | |
| 07:00 | De Nederlandstalige Top 1000Vanuit het Huis van de Nederlandse Muziek wordt de Nederlandstalige Top 1000 uitgezonden. | Aflevering 24 | Muziek | 2h |
| 09:00 | De Nederlandstalige Top 1000Vanuit het Huis van de Nederlandse Muziek wordt de Nederlandstalige Top 1000 uitgezonden. | Aflevering 25 | Muziek | 2h |
| 11:00 | De Nederlandstalige Top 1000Vanuit het Huis van de Nederlandse Muziek wordt de Nederlandstalige Top 1000 uitgezonden. | Aflevering 26 | Muziek | 2h |
| 13:00 | De Nederlandstalige Top 1000Vanuit het Huis van de Nederlandse Muziek wordt de Nederlandstalige Top 1000 uitgezonden. | Aflevering 27 | Muziek | 2h |
| 15:00 | De Nederlandstalige Top 1000Vanuit het Huis van de Nederlandse Muziek wordt de Nederlandstalige Top 1000 uitgezonden. | Aflevering 28 | Muziek | 2h |
| 17:00 | De Nederlandstalige Top 1000Vanuit het Huis van de Nederlandse Muziek wordt de Nederlandstalige Top 1000 uitgezonden. | Aflevering 29 | Muziek | 2h |
| 19:00 | NOS Jeugdjournaal met gebarentaalNieuwsprogramma voor de Nederlandse jeugd. Geschikt voor kinderen van negen tot twaalf. Met gebarentolk. | Nieuws | 20m | |
| 19:20 | Noord-Zuid-Oost-WestHistoricus Maarten van Rossem vertelt over opmerkelijke gebeurtenissen uit andere tijden. Al drie generaties maakt de Italiaanse familie De Lorenzo... | Van Rossem Vertelt - Natuurlijk Zoëy | Samenleving, Documentaire | 30m |
| 19:50 | Andere Tijden KortEen eindeloze stroom vluchtelingen trekt in de herfst van 1944, tijdens de Slag om Arnhem, vanuit die stad richting het noorden. Ze hebben gehoor g... | S27 E3, Arnhem op de vlucht | Documentaire, Geschiedenis | 10m |
| 20:00 | NOS Journaal met gebarentaalHet laatste binnenlandse en buitenlandse nieuws met een gebarentolk. | Nieuws | 25m | |
| 20:25 | Flikken MaastrichtAls Wolfs en Eva horen dat er een man verdwenen is uit een dorpje in de buurt van Maastricht, koppelen ze dat al snel aan een cold case onderzoek. ... | S9 E9, DNA | Dramaseries, Misdaad | 50m |
| 21:15 | Black SnowWanneer een tijdcapsule wordt geopend en een geheim aan het licht komt, wordt rechercheur James Cormack op het spoor gezet van een moordenaar uit e... | S1 E1, Unfinished Business | Misdaad, Mysterie | 45m |
| 22:00 | ProtectionInspecteur Liz Nyles werkt in de geheime wereld van getuigenbescherming, terwijl ze ook haar complexe gezinsleven probeert te beheren. Vermoedens v... | Misdaad | 1h | |
| 23:00 | Met het oog op morgen | Aflevering 288 | Documentaire | 1h |
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_5a3dt7t2/schedule?date=2026-10-15&tz=Europe/Amsterdam" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_5a3dt7t2/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_5a3dt7t2/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_5a3dt7t2/schedule?date=2026-10-15&tz=Europe/Amsterdam"); 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_5a3dt7t2/schedule?date=2026-10-15&tz=Europe/Amsterdam", { 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_5a3dt7t2/schedule", params={"date": "2026-10-15", "tz": "Europe/Amsterdam"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_5a3dt7t2/schedule?date=2026-10-15, the first programme { "data": [ { "id": "ls_0g82pg8d", "channel": "ch_5a3dt7t2", "start": "2026-10-14T22:00:00Z", "stop": "2026-10-14T22:47:00Z", "title": "Flikken Maastricht", "sub_title": "Bedrog", "description": "De financial controller van een goededoelenorganisatie raakt met haar auto va...", "category": [ "dramaseries", "misdaad" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 24, "date": "2026-10-15", "tz": "Europe/Amsterdam" } }
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.