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 America/Toronto time, what is on now and next, and the same data in your app with one call.
All times America/Toronto. The same day from the API: GET /v1/channels/ch_b1f653zk/schedule?date=2026-10-10&tz=America/Toronto
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 22:16 | Bellator Legend Series: Bellators Best RivalriesRespect was optional. Victory was everything. Relive the rivalries that defined eras and the battles where legacies were forged inside the cage. | 2h 38m | ||
| 00:54 | PFLThe most action-packed rounds of PFL 4 2024 | Cutdowns | 59m | |
| 01:53 | Fighter Compilation"Smooth" Benson Henderson has always been a force in the cage. Here are some of his most memorable fights | 3h 8m | ||
| 05:02 | FAST SpecialsThese fights all had something extra behind them... here are our favorite Grudge matches | 3h 34m | ||
| 08:36 | PFLThe most action-packed rounds of PFL 1 2024 | Cutdowns | 59m | |
| 09:35 | Full Fights: Justin GaethjeIn the peoples main event, undefeated contedner and fan favorite Justin Gaethje (12-0) takes on Melvin Guillard (32-13-2) in a catchweight bout at ... | 28m | ||
| 10:03 | PFLThe most action-packed rounds of PFL 5 2024 | Cutdowns | 59m | |
| 11:02 | Full Fights: Justin GaethjeIn the lightweight championship main event, undefeated champ Justin Gaethje (15-0) attempts to defend his throne against Brian Foster (26-8) at WSO... | 28m | ||
| 11:30 | PFLPFL in 60 - 2025 World Tournament 7 | in 60 | 59m | |
| 12:30 | Fighter CompilationCris Cyborg Battle of the Giants Compilation | 1h 45m | ||
| 14:15 | World Series of FightingArlovski vs. Cole | 2h 47m | ||
| 17:02 | Fighter CompilationScary - Horrifying - Bloody - some of the things that describe these fights we thought you should see. | 1h 58m | ||
| 19:00 | 2026 Halloween Special: Scariest Opponents CompilationWhen the cage door shuts, fear takes over. Relive the most brutal knockouts and chilling moments in PFL and Bellator history. | 1h 26m | ||
| 20:25 | PFLPFL in 60 - 2025 World Tournament 1 | in 60 | 56m | |
| 21:22 | 2026 Gym Tour SeriesFights featuring Team Khabib athletes, showcasing dominant performances, grappling mastery, and championship-level competition. | Team Khabib | 2h 7m | |
| 23:29 | PFLPFL in 60 - 2025 World Tournament 6 | in 60 | 59m |
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_b1f653zk/schedule?date=2026-10-10&tz=America/Toronto" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_b1f653zk/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_b1f653zk/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_b1f653zk/schedule?date=2026-10-10&tz=America/Toronto"); 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_b1f653zk/schedule?date=2026-10-10&tz=America/Toronto", { 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_b1f653zk/schedule", params={"date": "2026-10-10", "tz": "America/Toronto"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_b1f653zk/schedule?date=2026-10-10, the first programme { "data": [ { "id": "ls_ncxqyjtg", "channel": "ch_b1f653zk", "start": "2026-10-10T02:16:49Z", "stop": "2026-10-10T04:54:46Z", "title": "Bellator Legend Series: Bellators Best Rivalries", "sub_title": null, "description": "Respect was optional. Victory was everything. Relive the rivalries that defin...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 16, "date": "2026-10-10", "tz": "America/Toronto" } }
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.