73.8M 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 America/New_York time, what is on now and next, and the same data in your app with one call.
All times America/New_York. The same day from the API: GET /v1/channels/ch_scr95g67/schedule?date=2026-10-14&tz=America/New_York
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:33 | RogueMarlon's business is in jeopardy and Marty refuses to help. | 56m | ||
| 23:38 | RogueMarlon's business is in jeopardy and Marty refuses to help. | 56m | ||
| 00:29 | RogueHarper keeps Patrick contained. | 1h 4m | ||
| 00:34 | RogueHarper keeps Patrick contained. | 1h 4m | ||
| 01:33 | RogueEthan looks for a missing woman, but soon realizes she's in hiding from someone who's trying to kill her. | 56m | ||
| 01:38 | RogueEthan looks for a missing woman, but soon realizes she's in hiding from someone who's trying to kill her. | 54m | ||
| 02:29 | Nash BridgesNash and the SIU team track down a killer randomly targeting people talking on cellphones. | 57m | ||
| 02:32 | Nash BridgesNash and the SIU team track down a killer randomly targeting people talking on cellphones. | 56m | ||
| 03:26 | Nash BridgesNash tracks a vigilante hunting three murder suspects released on a technicality. | 53m | ||
| 03:28 | Nash BridgesNash tracks a vigilante hunting three murder suspects released on a technicality. | 51m | ||
| 04:19 | Nash BridgesNash and SIU investigate a crew specializing in ripping off other crews after pulling their jobs. | 47m | ||
| 05:06 | Nash BridgesNash puts Caitlin undercover to stop a thug from selling kidnapped Vietnamese women as slaves. | 55m | ||
| 05:09 | Nash BridgesNash puts Caitlin undercover to stop a thug from selling kidnapped Vietnamese women as slaves. | 52m | ||
| 06:01 | RansomWhen a copycat killer takes a teenager hostage, Eric is forced to negotiate with the original serial killer. | 51m | ||
| 06:52 | RansomEric must negotiate the release a politician's daughter – who has taken a stance on never paying ransoms. | 50m | ||
| 06:52 | RansomEric must negotiate the release a politician's daughter – who has taken a stance on never paying ransoms. | 50m | ||
| 07:42 | Rookie BlueAndy and Chris investigate a nightclub beating, but all clues point to a cop. | 48m | ||
| 07:42 | Rookie BlueAndy and Chris investigate a nightclub beating, but all clues point to a cop. | 49m | ||
| 08:30 | Rookie BlueAt a highway accident, Chris and Gail stumble upon a car that has a license plate matched to an Amber Alert. | 49m | ||
| 08:31 | Rookie BlueAt a highway accident, Chris and Gail stumble upon a car that has a license plate matched to an Amber Alert. | 49m | ||
| 09:18 | Rookie BlueA botched prisoner transport has Andy and Swarek in a cat-and-mouse game to catch the fugitive. | 48m | ||
| 09:19 | Rookie BlueA botched prisoner transport has Andy and Swarek in a cat-and-mouse game to catch the fugitive. | 48m | ||
| 10:06 | Saving HopeAlex's spirit shares an emotional journey with Charlie in the spirit world. | 50m | ||
| 10:07 | Saving HopeAlex's spirit shares an emotional journey with Charlie in the spirit world. | 50m | ||
| 10:56 | Saving HopeAlex is out of her coma, but struggles with her memory until a crisis reminds her of who she truly is. | 50m | ||
| 10:57 | Saving HopeAlex is out of her coma, but struggles with her memory until a crisis reminds her of who she truly is. | 50m | ||
| 11:46 | Saving HopeAlex is introduced to her “buddy colleague” on her first day back to work since her stabbing. | 50m | ||
| 11:47 | Saving HopeAlex is introduced to her “buddy colleague” on her first day back to work since her stabbing. | 50m | ||
| 12:36 | Saving HopeAlex and Joel help a young man convince Hope Zion he can save his mother’s life. | 50m | ||
| 12:37 | Saving HopeAlex and Joel help a young man convince Hope Zion he can save his mother’s life. | 50m | ||
| 13:25 | Saving HopeA ‘blood moon’ gives the ER its busiest night of the year and a medical mystery to solve. | 50m | ||
| 13:27 | Saving HopeA ‘blood moon’ gives the ER its busiest night of the year and a medical mystery to solve. | 50m | ||
| 14:15 | Family LawWhen a biased judge rules against Daniel’s petition to have a scam marriage annulled, Abby uses Cecil as bait. | 52m | ||
| 14:17 | Family LawWhen a biased judge rules against Daniel’s petition to have a scam marriage annulled, Abby uses Cecil as bait. | 52m | ||
| 15:07 | Family LawAbby represents an environmental activist whose devotion to the cause might cost him custody of his children. | 52m | ||
| 15:09 | Family LawAbby represents an environmental activist whose devotion to the cause might cost him custody of his children. | 53m | ||
| 15:59 | Family LawAbby plays both lawyer and counsellor as she helps a paranoid and deeply closeted actor avoid being outed. | 52m | ||
| 16:02 | Family LawAbby plays both lawyer and counsellor as she helps a paranoid and deeply closeted actor avoid being outed. | 53m | ||
| 16:51 | Private EyesIn the midst of a film festival, a famous action star hires Shade and Angie to track down a missing heirloom. | 52m | ||
| 16:54 | Private EyesIn the midst of a film festival, a famous action star hires Shade and Angie to track down a missing heirloom. | 52m | ||
| 17:43 | Private EyesBecca’s new documentary is put on hold when the club she’s featuring is set on fire by an unknown arsonist. | 52m | ||
| 17:46 | Private EyesBecca’s new documentary is put on hold when the club she’s featuring is set on fire by an unknown arsonist. | 52m | ||
| 18:35 | Private EyesIt’s the day of Danica and Kate’s wedding, and a sudden storm strands the wedding guests on a Muskoka island. | 52m | ||
| 18:38 | Private EyesIt’s the day of Danica and Kate’s wedding, and a sudden storm strands the wedding guests on a Muskoka island. | 53m | ||
| 19:27 | Private EyesIn the colourful lights of a midway, Shade and Angie stumble upon the body of a carnival worker. | 52m | ||
| 19:31 | Private EyesIn the colourful lights of a midway, Shade and Angie stumble upon the body of a carnival worker. | 52m | ||
| 20:20 | SpartacusSpartacus and his rebels try to increase their numbers by freeing fighters enslaved in foreign wars. | 1h 2m | ||
| 20:23 | SpartacusSpartacus and his rebels try to increase their numbers by freeing fighters enslaved in foreign wars. | 1h 2m | ||
| 21:21 | SpartacusSpartacus gets a chance for vengeance when a prominent Roman is captured. | 1h 2m | ||
| 21:25 | SpartacusSpartacus gets a chance for vengeance when a prominent Roman is captured. | 1h 3m | ||
| 22:24 | SpartacusSpartacus must convince his people to unite against the imminent Roman assault. | 1h 3m | ||
| 22:28 | SpartacusSpartacus must convince his people to unite against the imminent Roman assault. | 1h 3m | ||
| 23:26 | SpartacusDwindling supplies and a superior Roman enemy brings the rebellion to its knees. | 1h 5m | ||
| 23:31 | SpartacusDwindling supplies and a superior Roman enemy brings the rebellion to its knees. | 1h 6m |
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_scr95g67/schedule?date=2026-10-14&tz=America/New_York" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_scr95g67/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_scr95g67/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_scr95g67/schedule?date=2026-10-14&tz=America/New_York"); 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_scr95g67/schedule?date=2026-10-14&tz=America/New_York", { 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_scr95g67/schedule", params={"date": "2026-10-14", "tz": "America/New_York"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_scr95g67/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_erxc2j8w", "channel": "ch_scr95g67", "start": "2026-10-14T03:33:58Z", "stop": "2026-10-14T04:29:40Z", "title": "Rogue", "sub_title": null, "description": "Marlon's business is in jeopardy and Marty refuses to help.", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 54, "date": "2026-10-14", "tz": "America/New_York" } }
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.