74.6M 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.
All times Europe/Stockholm. The same day from the API: GET /v1/channels/ch_d89sqk8m/schedule?date=2026-10-14&tz=Europe/Stockholm
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:49 | Eventyrlig oppussing: Episode 507En tradisjonell hytte omkranset av mosegrønt rypeterreng er hva gutta bryner seg på denne gangen. Gustav disker opp med et villmarks-spa, mens Ole ... | S5 E7, Episode 7 | Series, Entertainment | 51m |
| 00:40 | Eventyrlig oppussing: Episode 508Kalde netter i lavvo og et iskaldt bad under isen er noe av hva du kan se fra Skogn i Trøndelag. En gammel folkehøyskolehytte blir omgjort til fami... | Episode 508 | Series, Entertainment | 50m |
| 01:30 | Eventyrlig oppussing: Episode 509Et gammelt gårdstun fra 1800 tallet på Oppdal i Trøndelag pusses opp. Den gamle bygningen moderniseres uten å fjerne den gode sjelen og følelsen. | Episode 509 | Series, Entertainment | 51m |
| 02:21 | Eventyrlig oppussing: Episode 510Ole, Gustav og Halvor pusser opp hver sin rorbu på Træna i Nordland. Her bobler konkurranseinstinktet opp til overflaten, da eierne skal kåre hvilk... | Episode 510 | Series, Entertainment | 51m |
| 03:12 | Eventyrlig oppussing: Episode 601Halvor, Ole og Gustav tar turen til øya Fårnøtt i Skjeberg, hvor de møter Deborah og Nils og resten av familien. Gutta forvandler en malplassert fj... | Episode 601 | News & information, Series | 52m |
| 04:04 | Eventyrlig oppussing: Episode 602Denne gangen går turen til Tannsjøen i Nord-Odal, der søstrene Kristine og Mari har tatt over en gammel tømmerhytte. Her blir gjengen utfordret på ... | Episode 602 | Series, Entertainment | 52m |
| 04:56 | Eventyrlig oppussing: Episode 603I den lille havnebyen Stavern i Larvik møter vi familien Brekke. Her er det uteområdet som står i fokus. En overgrodd og sjelløs hage gjøres om til... | Episode 603 | Series, Entertainment | 50m |
| 05:46 | Eventyrlig oppussing: Episode 604På Arholmen utenfor Kragerø har familien Pettersen funnet sin drømmehytte. Den mørke hytta forvandles til et lyst og fargerikt sommersted – og Ole ... | Episode 604 | Series, Entertainment | 51m |
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_d89sqk8m/schedule?date=2026-10-14&tz=Europe/Stockholm" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_d89sqk8m/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_d89sqk8m/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_d89sqk8m/schedule?date=2026-10-14&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_d89sqk8m/schedule?date=2026-10-14&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_d89sqk8m/schedule", params={"date": "2026-10-14", "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_d89sqk8m/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_w1frgx4d", "channel": "ch_d89sqk8m", "start": "2026-10-13T21:49:52Z", "stop": "2026-10-13T22:40:52Z", "title": "Eventyrlig oppussing: Episode 507", "sub_title": "Episode 507", "description": "En tradisjonell hytte omkranset av mosegrønt rypeterreng er hva gutta bryner ...", "category": [ "series", "entertainment" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 8, "date": "2026-10-14", "tz": "Europe/Stockholm" } }
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.