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_qen7eb19/schedule?date=2026-10-13&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:57 | Poundisford Lodge On nowThe cleaners head to Poundisford Lodge, home to Josephine, 83, an acclaimed writer of ghost stories. Can the cleaners manage to persuade Josephine ... | 54m | ||
| 00:51 | Obsessive compulsive cleanersRichard Searle meets Christopher Sylvester, a retired antiques dealer whose stone Victorian cottage has been overwhelmed by 15 years' worth of coll... | S1 E01 | 53m | |
| 01:44 | Obsessive compulsive cleanersDenise is taking four days out of her own cleaning regime to help 82-year-old retired British Aerospace engineer Frank from Chipping Sodbury. | S1 E02 | 53m | |
| 02:37 | Obsessive compulsive cleanersMark visits Julie to help with her hoarding while Cheyza helps Oxfordshire shopaholic Amanda | S1 E03 | 53m | |
| 03:31 | Obsessive compulsive cleanersOCD sufferer Hayley helps library assistant Shereen, who last cleaned her flat a year ago. | S1 E04 | 53m | |
| 04:24 | Obsessive compulsive cleanersFormer opera singer Cynthia, who has a life-long fear of germs, helps 75 year old Daphne, while Claire helps Suzie and Phil from Surrey | S1 E05 | 53m | |
| 05:17 | Obsessive compulsive cleanersJames goes to Nantwich to help Jodi and her husband Roger, while self procclaimed Dettol queen Kirsty is off to Kettering to help Kay and Dilip | S1 E06 | 53m |
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_qen7eb19/schedule?date=2026-10-13&tz=UTC" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_qen7eb19/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_qen7eb19/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_qen7eb19/schedule?date=2026-10-13&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_qen7eb19/schedule?date=2026-10-13&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_qen7eb19/schedule", params={"date": "2026-10-13", "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_qen7eb19/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_tea96pts", "channel": "ch_qen7eb19", "start": "2026-10-12T23:57:59Z", "stop": "2026-10-13T00:51:31Z", "title": "Poundisford Lodge", "sub_title": null, "description": "The cleaners head to Poundisford Lodge, home to Josephine, 83, an acclaimed w...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 7, "date": "2026-10-13", "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.