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 Australia/Sydney time, what is on now and next, and the same data in your app with one call. Search any past day on the Archive plan.
All times Australia/Sydney. The same day from the API: GET /v1/channels/ch_9ph5rxzf/schedule?date=2026-10-15&tz=Australia/Sydney
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 22:50 | The Crying GameAn unconventional and unpredictable story follows members of an armed group, their hostage, and a mysterious relationship that unfolds in unexpecte... | Thriller | 1h 55m | |
| 00:45 | Re-AnimatorA medical student (Jeffrey Combs) brings his headless professor back from the dead with a special serum. | Horror | 1h 30m | |
| 02:15 | SatorSecluded in a desolate forest, a broken family is observed by the demon Sator who is attempting to claim them. | Horror | 1h 30m | |
| 03:45 | Psycho GoremanAn intergalactic warlord becomes enslaved to a pair of Earth children after they unwittingly resurrect him. | Horror | 1h 35m | |
| 05:20 | The Holy MountainA Mexican master (Alexandro Jodorowsky) leads a Christ figure (Horacio Salinas) and other disciples to a mountain of immortal wise men. | Adventure | 2h | |
| 07:20 | Teenage Mutant Ninja Turtles IIIWhen a magic sceptre accidentally transports April back through time to 17th Century Japan, the boys take off in hot pursuit, cowabungling their wa... | Action | 1h 45m | |
| 09:05 | The Man Who Killed Don QuixoteToby, a cynical advertising director, finds himself trapped in the outrageous delusions of an old Spanish shoe-maker who believes himself to be Don... | N/a | 2h 20m | |
| 11:25 | Good BoyChristian, a millionaire heir, meets Sigrid, a young student, on a dating app. They hit it off, but there's only one problem: Christian lives with ... | Thriller | 1h 25m | |
| 12:50 | Caligula: The Ultimate CutExcess, violence and corruption mark the notorious emperor's reign in first-century Rome. | Drama | 3h 5m | |
| 15:55 | Only God ForgivesA player in Bangkok's underworld faces the ultimate showdown when his brother is killed and his mother orders him to bring her the murderer's head. | Thriller | 1h 35m | |
| 17:30 | FollowingA young London writer follows strangers for inspiration, but his hobby becomes an obsession, leading him further into their lives than he ever inte... | Thriller | 1h 20m | |
| 18:50 | To Catch a Killer - Part IPart I. Based on the true story of an Illinois detective's quest to bring convicted serial killer John Wayne Gacy to justice. | Thriller | 1h 40m | |
| 20:30 | To Catch a Killer - To Catch A Killer: Part 2To Catch A Killer: Part 2. Part 2. After achieving two search warrants, Kozenczak finds a large amount of incriminating evidence, and later 29 bodi... | Thriller | 1h 40m | |
| 22:10 | Dust DevilA woman on the run from her abusive husband encounters a mysterious hitch-hiker. | Horror | 1h 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_9ph5rxzf/schedule?date=2026-10-15&tz=Australia/Sydney" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_9ph5rxzf/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_9ph5rxzf/history?from=2026-07-05T00:00:00Z&to=2026-07-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_9ph5rxzf/schedule?date=2026-10-15&tz=Australia/Sydney"); 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_9ph5rxzf/schedule?date=2026-10-15&tz=Australia/Sydney", { 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_9ph5rxzf/schedule", params={"date": "2026-10-15", "tz": "Australia/Sydney"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_9ph5rxzf/schedule?date=2026-10-15, the first programme { "data": [ { "id": "ls_1dzk4yjb", "channel": "ch_9ph5rxzf", "start": "2026-10-14T11:50:00Z", "stop": "2026-10-14T13:45:00Z", "title": "The Crying Game", "sub_title": null, "description": "An unconventional and unpredictable story follows members of an armed group, ...", "category": [ "thriller" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 14, "date": "2026-10-15", "tz": "Australia/Sydney" } }
What was on, on any date we hold: for research, catch-up, clip finding or proving a broadcast. Any window up to 31 days with /v1/channels/{id}/history on the Archive plan.
| Time | Sunday 5 July 2026 | Category |
|---|---|---|
| Nothing held for that day. Try another date. | ||
8 calls cover a channel from its details to its past. Each one opens in the documentation with Try it.