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.
All times Europe/Stockholm. The same day from the API: GET /v1/channels/ch_s7cqt1yc/schedule?date=2026-10-13&tz=Europe/Stockholm
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:36 | Frusna vägar: Avsnitt 1304Anders har fått larm om två bilar som kolliderat i morgonrusningen på riksväg 97. Fordonen har fått stora skador, något som försvårar arbetet. | Avsnitt 1304 | Entertainment, Series | 52m |
| 00:28 | Frusna vägar: Avsnitt 1305Markus och Martin tar sig 20 mil från Gällivare där en lastbil med släp vält ner i diket längs en smal skogsväg. Hogan jobbar i 30 minus i Sälen dä... | Avsnitt 1305 | Entertainment, Series | 52m |
| 01:20 | Frusna vägar: Avsnitt 1306En snöstorm härjar vid Norrlandskusten och Stefan har fått in ett larm om en traktor som fastnat i en myr. Markus ger sig av på ett uppdrag i Sveri... | Avsnitt 1306 | Entertainment, Series | 52m |
| 02:12 | Frusna vägar On nowI Gällivare hjälper Markus två lastbilar som kört fast i en kraftig snöstorm. Stefan har fått larm om en lastbil som tappat greppet och glidit i di... | Avsnitt 1307 | Entertainment, Series | 51m |
| 03:03 | Frusna vägar: Avsnitt 1308Markus får in ett larm från en lastbilschaufför som glidit i diket med en timmerbil som blockerar enda vägen in till en by. Stefan åker ut till en ... | Avsnitt 1308 | Entertainment, Series | 52m |
| 03:55 | Frusna vägarBröderna Markus och Martin får larm om en godsbil som vält ner i ett dike. Det blir en minst sagt utmanande bärgning. I Luleå åker stationens nya b... | S14 E1, Episode 1 | Entertainment, Series | 52m |
| 04:47 | Frusna vägarMarkus och Martin kämpar på med lastbilen som vält utanför Överkalix, och problemen fortsätter att hopa sig. Det råder hala vägförhållanden kring Å... | S14 E2, Episode 2 | Entertainment, Series | 52m |
| 05:39 | Frusna vägarStefan är utanför Örnsköldsvik där en lastbil kört av vägen, och han blir tvungen att ringa in förstärkning. Efter en snöstorm i Luleå är både Jose... | Avsnitt 1403 | Entertainment, Series | 52m |
| 06:31 | Frusna vägarDen kraftiga snöstormen i Luleå skapar kaos i trafiken. Josefine ger sig ut för att försöka beta av en lång jobblista. Hogan och kollegan Robin är ... | Avsnitt 1404 | Entertainment, Series | 52m |
| 07:22 | Frusna vägarStefan och hans kollega beger sig till Sollefteå där en tungt lastad mjölkbil kört av vägen och ligger på sidan. Hogan är i Lima där han är den ans... | Avsnitt 1405 | Entertainment, Series | 51m |
| 08:14 | Frusna vägarFrusna vägar är tillbaka med en ny säsong där vi äntligen får återse några familjära ansikten – men vi får även lära känna en helt ny bärgare. | S15 E1, Vägarnas hjältar är tillbaka | Reality, Series | 52m |
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_s7cqt1yc/schedule?date=2026-10-13&tz=Europe/Stockholm" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_s7cqt1yc/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_s7cqt1yc/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_s7cqt1yc/schedule?date=2026-10-13&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_s7cqt1yc/schedule?date=2026-10-13&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_s7cqt1yc/schedule", params={"date": "2026-10-13", "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_s7cqt1yc/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_6jg2dm18", "channel": "ch_s7cqt1yc", "start": "2026-10-12T21:36:59Z", "stop": "2026-10-12T22:28:42Z", "title": "Frusna vägar: Avsnitt 1304", "sub_title": "Avsnitt 1304", "description": "Anders har fått larm om två bilar som kolliderat i morgonrusningen på riksväg...", "category": [ "entertainment", "series" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 11, "date": "2026-10-13", "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 155 countries.