73.8M 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/Brussels time, what is on now and next, and the same data in your app with one call.
All times Europe/Brussels. The same day from the API: GET /v1/channels/ch_3yywszw3/schedule?date=2026-10-16&tz=Europe/Brussels
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:19 | Angels on WheelsJill tente d'intégrer une équipe de roller afin de prouver qu'une patineuse tuée par une coéquipière lors d'une compétition n'est pas morte par acc... | S1:E12 Angels On Wheels | 59m | |
| 00:17 | Angel TrapLes drôles de dames sont chargées d'arrêter un assassin qui s'est mis en tête d'éliminer les membres d'une équipe d'anciens combattants. | S1:E13 Angel Trap | 59m | |
| 01:16 | The Big Tap OutLa police de Los Angeles engage les Drôles de dames pour faire tourner la chance d'un joueur compulsif qui joue avec 40 000 $ en espèces qu'il a vo... | S1:E14 The Big Tap Out | 59m | |
| 02:15 | Angels on a StringDans "Un week-end mouvementé. | S1:E15 Angels On A String | 59m | |
| 03:14 | Lady KillerUn empire de l'exploitation sexuelle est menacé après l'assassinat mystérieux de ses mannequins de charme. | 58m | ||
| 04:12 | Dirty BusinessLe propriétaire d'une entreprise de tournage engage les Drôles de dames pour découvrir qui tente de ruiner ses affaires. | S1:E16 Dirty Business (EN-ES) | 59m |
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_3yywszw3/schedule?date=2026-10-16&tz=Europe/Brussels" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_3yywszw3/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_3yywszw3/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_3yywszw3/schedule?date=2026-10-16&tz=Europe/Brussels"); 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_3yywszw3/schedule?date=2026-10-16&tz=Europe/Brussels", { 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_3yywszw3/schedule", params={"date": "2026-10-16", "tz": "Europe/Brussels"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_3yywszw3/schedule?date=2026-10-16, the first programme { "data": [ { "id": "ls_tfxe7qjf", "channel": "ch_3yywszw3", "start": "2026-10-15T21:19:18Z", "stop": "2026-10-15T22:17:55Z", "title": "Angels on Wheels", "sub_title": "S1:E12 Angels On Wheels", "description": "Jill tente d'intégrer une équipe de roller afin de prouver qu'une patineuse t...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 6, "date": "2026-10-16", "tz": "Europe/Brussels" } }
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.