74.3M 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 UTC time, what is on now and next, and the same data in your app with one call.
All times UTC. The same day from the API: GET /v1/channels/ch_emw2gjd2/schedule?date=2026-10-11&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 03:00 | Hometown TragedyDark Family Secrets Unearthed in the Bible Belt: Uncover the truth as siblings confront chilling family stories and a disappearance from 1992 revea... | S5 E3, Dark Family Secrets Unearthed in the Bible Belt | 30m | |
| 03:30 | Hometown TragedyA farmhouse in a quaint, wooded town became one of New Hampshire's most notorious crime scenes. Delusional killings confounded investigators and ap... | S4 E2, Evil In Epping | 30m | |
| 04:00 | Hometown TragedyWhen homesick university student Miya Marcano books a flight to South Florida for the weekend, her family is thrilled. However, when the plane land... | S3 E5, The Miya Marcano Story | 30m | |
| 04:30 | Hometown TragedyThe 2012 disappearance of 16-year-old JaRay Wilson sparks human trafficking rumours in her small town. Investigators find her body and uncover the ... | S4 E7, The Smoking Gun in a Teen's Disappearance | 30m | |
| 05:00 | Hometown TragedyThe Vanishing ff a Promising Wisconsin Teen: Uncover a haunting mystery as a young woman vanishes. Decades later, the truth behind Berit Beck's dea... | S5 E5, The Vanishing of a Promising Wisconsin Teen | 30m | |
| 05:30 | Hometown TragedyThe Massacre That Ravaged a Sleepy Suburb: Unravel a small town horror as six are killed, one survivor claims no memory and a shocking trial tears ... | S5 E6, The Massacre That Ravaged a Sleepy Suburb | 30m | |
| 06:00 | #Dead2MeKatherine Smith met Anthony Lowe on a dating website and thought she'd found the love of her life, but had actually been tricked into starting a re... | Lowe | 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_emw2gjd2/schedule?date=2026-10-11&tz=UTC" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_emw2gjd2/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_emw2gjd2/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_emw2gjd2/schedule?date=2026-10-11&tz=UTC"); 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_emw2gjd2/schedule?date=2026-10-11&tz=UTC", { 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_emw2gjd2/schedule", params={"date": "2026-10-11", "tz": "UTC"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_emw2gjd2/schedule?date=2026-10-11, the first programme { "data": [ { "id": "ls_a7st8709", "channel": "ch_emw2gjd2", "start": "2026-10-11T03:00:00Z", "stop": "2026-10-11T03:30:00Z", "title": "Hometown Tragedy", "sub_title": "Dark Family Secrets Unearthed in the Bible Belt", "description": "Dark Family Secrets Unearthed in the Bible Belt: Uncover the truth as sibling...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 7, "date": "2026-10-11", "tz": "UTC" } }
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.