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 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_be07vwr2/schedule?date=2026-10-12&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:08 | Murder By The SeaTerry Clifton, Morecombe, 1997 | S1 E102 | 55m | |
| 00:03 | Murder By The SeaMatthew Hardman, Anglesey, 2001 | S1 E103 | 55m | |
| 00:59 | Murder By The SeaColin Gunn: Trusthope, Lincolnshire, 2004 | S1 E104 | 55m | |
| 01:54 | Murder By The SeaPaul Longworth, 1997 | S1 E105 | 55m | |
| 02:49 | Murder By The SeaSteven Grieveson, Sunderland, 2013 | S1 E106 | 55m | |
| 03:45 | See No EvilJulissa Brisman | S5 E02 | 54m | |
| 04:39 | See No EvilTerry Porter | S5 E03 | 55m | |
| 05:34 | See No EvilCarl Starke | S5 E06 | 55m | |
| 06:29 | Millionaire MurdersThe Earl and the Playboy Model | S1 E01 | 55m | |
| 07:24 | Millionaire MurdersMoney Means Motive | S1 E03 | 55m | |
| 08:19 | Millionaire MurdersRags to Riches: The Missing Millionaire | S1 E04 | 56m | |
| 09:14 | Millionaire MurdersThe Reclusive Millionaire | S1 E05 | 55m | |
| 10:09 | Murder By The SeaPercy Mapleton | S8 E08 | 56m | |
| 11:05 | Murder By The SeaThe Skull in the Woods | S10 E01 | 55m | |
| 12:00 | Murder By The SeaBefriended and Crumbled | S10 E02 | 55m | |
| 12:55 | Murder By The SeaBlood on the Backseat | S10 E03 | 55m | |
| 13:50 | Murder By The SeaThe Goatfell Murder | S10 E04 | 54m | |
| 14:44 | Medical DetectivesPersonal Penmanship | S16 E10 | 25m | |
| 15:09 | Medical DetectivesFull Circle | S16 E11 | 25m | |
| 15:34 | Medical DetectivesIncendiary | S16 E12 | 25m | |
| 15:59 | Medical DetectivesSmoking Gun | S16 E13 | 25m | |
| 16:24 | Medical DetectivesMatching Palms | S16 E14 | 25m | |
| 16:49 | Medical DetectivesPulp Friction | S16 E15 | 25m | |
| 17:15 | Medical DetectivesSole Mate | S16 E16 | 25m | |
| 17:40 | Medical DetectivesMarked For Murder | S17 E01 | 24m | |
| 18:04 | Medical DetectivesWords Matter | S17 E02 | 24m | |
| 18:28 | Storm of SuspicionSold out by the Snow | S4 E20 | 50m | |
| 19:18 | Storm of SuspicionHardened by Heat | S4 E21 | 49m | |
| 20:07 | Killers: Caught on CameraJulia and Emma | S1 E01 | 55m | |
| 21:02 | Killers: Caught on CameraRiley and Phoenix | S1 E02 | 55m | |
| 21:57 | Killers: Caught on CameraGretchen and Kerry | S1 E03 | 56m | |
| 22:53 | Killers: Caught on CameraBrandi and Michelle | S1 E04 | 55m | |
| 23:48 | Killers: Caught on CameraPiqui and the Chapples | S1 E05 | 55m |
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_be07vwr2/schedule?date=2026-10-12&tz=UTC" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_be07vwr2/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_be07vwr2/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_be07vwr2/schedule?date=2026-10-12&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_be07vwr2/schedule?date=2026-10-12&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_be07vwr2/schedule", params={"date": "2026-10-12", "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_be07vwr2/schedule?date=2026-10-12, the first programme { "data": [ { "id": "ls_waym3195", "channel": "ch_be07vwr2", "start": "2026-10-11T23:08:45Z", "stop": "2026-10-12T00:03:51Z", "title": "Murder By The Sea", "sub_title": "S1 E102", "description": "Terry Clifton, Morecombe, 1997", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 33, "date": "2026-10-12", "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 155 countries.