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/Stockholm 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/Stockholm. The same day from the API: GET /v1/channels/ch_b8112507/schedule?date=2026-10-16&tz=Europe/Stockholm
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:20 | SommerdahlDan og Flemming kommer ikke videre i sagen efter afhøringen af modelkollegaen, Thomas. Det viser sig dog, at det videoudstyr, som han har stjålet, ... | S5 E4, Det spinkle håb - del 2 | Series, Crime | 55m |
| 00:15 | 24 timer på skadestuenDokumentarserie om en af de travleste skadestueafdelinger i Storbritannien. Patienternes og deres familiers glæder og sorger er indfanget, og det s... | En teenagedrøm | Series, Medical | 50m |
| 01:05 | AlarmcentralenDøgnet rundt står brandmænd og ambulance-reddere klar til at rykke ud, når folk ringer til alarmcentralen for at få hjælp. Blot et enkelt telefonop... | Documentary, Crime | 55m | |
| 02:00 | GrænsepatruljenFølg med Australiens grænsevagter, når de er på arbejde. Tolderne kommer ud for lidt af hvert, når de forskellige fly ankommer til lufthavne i Aust... | Documentary, Public affairs | 30m | |
| 02:30 | GrænsepatruljenFølg med Australiens grænsevagter, når de er på arbejde. Tolderne kommer ud for lidt af hvert, når de forskellige fly ankommer til lufthavne i Aust... | Documentary, Public affairs | 30m | |
| 03:00 | CPH LufthavnenBirgit og Frede skal tilse en gruppe pingviner, der har rejst på en særtransport helt fra Australien til Danmark. Pingvinerne er vant til kulde og ... | Series, Reality | 25m | |
| 03:25 | CPH LufthavnenLufthavnen sover aldrig, det kan Jan og Martin fra Brand og Redning tale med om, for de får en travl nat. En mand er faldet ned ad en rulletrappe o... | Series, Documentary | 35m | |
| 04:00 | Nyhederne og vejretFå seneste nyt fra ind- og udland samt vejret. | Series, News | 2h | |
| 06:00 | Nyhederne, Sporten og VejretFå de seneste opdateringer på nyheder, vejr og sport. | Series, Weather | 30m | |
| 06:30 | Go' morgen DanmarkVi stiller skarpt på hverdagens aktuelle emner i selskab med interessante gæster i studiet i Tivoli. | Series, Talk | 5h 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_b8112507/schedule?date=2026-10-16&tz=Europe/Stockholm" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_b8112507/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_b8112507/history?from=2026-02-07T00:00:00Z&to=2026-02-08T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_b8112507/schedule?date=2026-10-16&tz=Europe/Stockholm"); 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_b8112507/schedule?date=2026-10-16&tz=Europe/Stockholm", { 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_b8112507/schedule", params={"date": "2026-10-16", "tz": "Europe/Stockholm"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_b8112507/schedule?date=2026-10-16, the first programme { "data": [ { "id": "ls_zkf0dmep", "channel": "ch_b8112507", "start": "2026-10-15T21:20:00Z", "stop": "2026-10-15T22:15:00Z", "title": "Sommerdahl", "sub_title": "Det spinkle håb - del 2", "description": "Dan og Flemming kommer ikke videre i sagen efter afhøringen af modelkollegaen...", "category": [ "series", "crime", "drama" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 10, "date": "2026-10-16", "tz": "Europe/Stockholm" } }
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 | Saturday 7 February 2026 | Category |
|---|---|---|
| 07:00 | Nyhederne og vejret | Series, News |
| 08:00 | Go' morgen Danmark | Series, News |
| 11:25 | Live: Vinter OL 2026 | Sport, Olympics |
| 14 more programmes that day, on Archive | ||
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.