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_zstb5fx1/schedule?date=2026-10-12&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 02:40 | Rock Island MysteriesWhen an inexplicable noise shocks Rock Island, Taylor and the gang search for its source. In their investigation, they come across a girl claiming ... | S2 E13, Mystery Hunter | 25m | |
| 03:05 | Rock Island MysteriesDuring Gillian and Faraz's party on Rock Island, Taylor and their friends realise that everyone else is frozen in time, leaving only them unaffected. | S2 E14, Frozen In Time | 25m | |
| 03:30 | The MarsupilamisMica's Marsup journal ends up in Acu's bag, so he has to get it back before his friend finds it. Twister is fed up with Hope and Punch's pranks, so... | Houbi Houba Heist / Twister's Treehouse | 25m | |
| 03:55 | The MarsupilamisThree energetic Marsupilamis leave their jungle world for the city where mystery and excitement await as they bond with twins eager to protect thei... | Mar-Snoop / Canteen Carnage | 25m | |
| 04:20 | The SmurfsWhen Storm gets close to beating him in a waffle-eating contest, Greedy takes the competition too far. | Waffles and Punishment | 10m | |
| 04:30 | The SmurfsWhen Gargamel sleepwalks into the Smurfs' village, the Smurfs make the most of the situation. | Never Wake a Sleeping Sorcerer! | 10m | |
| 04:40 | The SmurfsPapa Smurf accidentally gives Baby Smurf a growth potion in 'Big Baby', then in 'Don't Smurf a Sound', Gargamel gives Azrael supersonic ears. | Big Baby; Don't Smurf a Sound | 20m | |
| 05:00 | SpongeBob SquarePantsPankton wins the cutest baby contest and becomes the face of a baby food brand; when Squidward's one-off portrait of SpongeBob takes the art world ... | Pablum Plankton; MuseBob ModelPants | 30m |
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_zstb5fx1/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_zstb5fx1/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_zstb5fx1/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_zstb5fx1/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_zstb5fx1/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_zstb5fx1/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_zstb5fx1/schedule?date=2026-10-12, the first programme { "data": [ { "id": "ls_dj15jxme", "channel": "ch_zstb5fx1", "start": "2026-10-12T02:40:00Z", "stop": "2026-10-12T03:05:00Z", "title": "Rock Island Mysteries", "sub_title": "Mystery Hunter", "description": "When an inexplicable noise shocks Rock Island, Taylor and the gang search for...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 8, "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 150 countries.