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 Asia/Kolkata time, what is on now and next, and the same data in your app with one call.
All times Asia/Kolkata. The same day from the API: GET /v1/channels/ch_j7bpekt1/schedule?date=2026-10-13&tz=Asia/Kolkata
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:24 | Dr. Jeff: Rocky Mountain Vet: Wild at HeartDr. Baier suspects a ferret suffers from a spinal injury after being attacked by the family canine Dr. Jeff travels to a wolf sanctuary to spay an... | 53m | ||
| 00:17 | Bear vs. SharkPutting his wits and survival skills to the test, adventurer Bear Grylls faces off with the ocean's apex predator he goes chumming from a helicopt... | 54m | ||
| 01:11 | Wild Frank in Australia: London To AustraliaFrank Cuesta travels to the tropical forests of Queensland to study the different Australian species. For his research he should make use of Darwin... | 53m | ||
| 02:04 | Crikey! It's the Irwins: Bosco the Croc's Big MoveRobert takes on the challenging task of relocating Bosco, the most aggressive croc at the zoo Bindi must investigate Forest the giraffe's bad knee... | 54m | ||
| 02:58 | The Zoo: A Sea Lion Pup Grows UpZoo staff face unexpected setbacks weaning a bright sea lion pup off its mother's milk the bird team steps in to support a rejected curassow chick... | 53m | ||
| 03:51 | I Was Prey: Feeding Frenzy On nowAndrea Schlake volunteers at an animal sanctuary when a chimpanzee escapes its enclosure and chases her down a great white shark knocks surfer Tod... | 53m | ||
| 04:44 | Treetop Cat Rescue: Kitty, Can You Hear Me?Hostile repeat offender Mow Mow is stuck in yet another tree in Eatonville Shaun is called to rescue his first-ever deaf cat, Snow, in Seattle. | 1h 16m |
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_j7bpekt1/schedule?date=2026-10-13&tz=Asia/Kolkata" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_j7bpekt1/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_j7bpekt1/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_j7bpekt1/schedule?date=2026-10-13&tz=Asia/Kolkata"); 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_j7bpekt1/schedule?date=2026-10-13&tz=Asia/Kolkata", { 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_j7bpekt1/schedule", params={"date": "2026-10-13", "tz": "Asia/Kolkata"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_j7bpekt1/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_psagkrxg", "channel": "ch_j7bpekt1", "start": "2026-10-12T17:54:00Z", "stop": "2026-10-12T18:47:00Z", "title": "Dr. Jeff: Rocky Mountain Vet: Wild at Heart", "sub_title": null, "description": "Dr. Baier suspects a ferret suffers from a spinal injury after being attacked...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 7, "date": "2026-10-13", "tz": "Asia/Kolkata" } }
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.