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_fj2yb675/schedule?date=2026-10-10&tz=America/Toronto
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:00 | Jesus Made (MLB #1 Prospect) Drives in Four RunsJesus Made (MLB #1/Brewers #1 prospect) goes 2-4 with four RBIs. | 2h | ||
| 01:00 | Jesus Made (MLB #1 Prospect) Hits a Home RunJesus Made (MLB #1/Brewers #1 prospect) goes 2-3 with a home run and three RBIs. | 2h | ||
| 03:00 | Jesus Made (MLB #1 Prospect) With a Three-Hit GameJesus Made (MLB #1/Brewers #1 prospect) goes 3-4, scoring three runs and stealing a base. From June 27, 2026. | 2h | ||
| 05:00 | The Akron RubberDucks Throw a Combined No-HitterFive pitchers for the Akron RubberDucks throw for a combined no-hitter. From April 19, 2026. | 2h | ||
| 07:00 | The Beloit Sky Carp Throw a Combined No-HitterMarlins prospects Aiden May and Justin Storm throw for a combined no-hitter for the Beloit Sky Carp. From April 19, 2026. | 2h | ||
| 09:00 | Fort Myers Mighty Mussels Throw a Combined a No-HitterFive pitchers for Fort Myers combine for a no-hitter. From April 26, 2026. | 2h | ||
| 11:00 | The New Hampshire Fisher Cats Throw a Combined No-HitterFour pitchers combine to throw a no-hitter for New Hampshire. From April 28, 2026. | 2h | ||
| 13:00 | Aidan Cremarosa Throws a Solo No-HitterAidan Cremarosa (Rays) throws a no-hitter. From May 8, 2026. | 2h | ||
| 15:00 | Scranton/Wilkes-Barre Throw a Combined No-HitterTwo pitchers for Scranton/Wilkes-Barre (Brendan Beck, Carson Coleman) combine for a no-hitter. From June 5, 2026. | 2h | ||
| 17:00 | Syracuse Throw Combined No-HitterSix Syracuse pitchers combine to throw a no-hitter. From Aug. 30, 2026. | 2h | ||
| 19:00 | Thomas Pannone Perfect GameThomas Pannone throws a solo perfect game. The first in Minor League Baseball since 2017. From Sept. 7, 2026. | 2h | ||
| 21:00 | Aidan Cremarosa Throws a Solo No-HitterAidan Cremarosa (Rays) throws a no-hitter. From May 8, 2026. | 2h | ||
| 23:00 | The Akron RubberDucks Throw a Combined No-HitterFive pitchers for the Akron RubberDucks throw for a combined no-hitter. From April 19, 2026. | 2h |
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_fj2yb675/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_fj2yb675/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_fj2yb675/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_fj2yb675/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_fj2yb675/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_fj2yb675/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_fj2yb675/schedule?date=2026-10-10, the first programme { "data": [ { "id": "ls_ycraya2e", "channel": "ch_fj2yb675", "start": "2026-10-10T03:00:00Z", "stop": "2026-10-10T05:00:00Z", "title": "Jesus Made (MLB #1 Prospect) Drives in Four Runs", "sub_title": null, "description": "Jesus Made (MLB #1/Brewers #1 prospect) goes 2-4 with four RBIs.", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 13, "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 152 countries.