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_pgptct3s/schedule?date=2026-10-13&tz=America/New_York
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:46 | HeartlandThe family supports Georgie as she decides whether to face a ghost from her past. | Heartland | 50m | |
| 00:36 | HeartlandTim steps up Jade's training regimen when a new competitor shows up. | Heartland | 50m | |
| 01:26 | HeartlandAmy and Ty prepare an unruly wild horse for international transport. | Heartland | 50m | |
| 02:16 | HeartlandUpon her return from New York, Lou discovers that things aren't running smoothly. | Heartland | 51m | |
| 03:07 | HeartlandAmy is asked to work with Lisa's racehorse, but conflict arises. | Heartland | 50m | |
| 03:57 | Heartland On nowAmy tries to teach some old friends about the power of connecting to a horse. | Heartland | 50m | |
| 04:47 | HeartlandTim's behavior becomes concerning. | Heartland | 50m | |
| 05:37 | HeartlandAmy and Ty work to prepare a horse for a transport overseas. | Heartland | 50m | |
| 06:27 | HeartlandBefore joining Ty, Amy tries to get everything organized. | Heartland | 52m | |
| 07:19 | HeartlandAn emergency traps Tim with an unexpected visitor. | Heartland | 50m | |
| 08:09 | HeartlandTim rallies the family to take another memorial ride for Marion. | Heartland | 50m | |
| 08:59 | HeartlandThe family struggles with Tim's news; Lou fully commits to planning her high school reunion. | Heartland | 50m | |
| 09:49 | HeartlandThe whole family is in danger when a threat from Ty's past arrives in Hudson. | Heartland | 52m | |
| 10:41 | HeartlandAmy is convinced to work with a dangerous jumping horse. | Heartland | 52m | |
| 11:33 | HeartlandA training accident results in an injury, and an unlikely ally arrives to show support. | Heartland | 50m | |
| 12:23 | HeartlandGeorgie reconsiders her future in show jumping after a video goes viral. | Heartland | 50m | |
| 13:13 | HeartlandJust days before Lyndy's naming ceremony, the family finds themselves keeping secrets. | Heartland | 50m | |
| 14:03 | HeartlandAmy and Ty care for a wild mare and her foal, which provides a solution to their parenting problems. | Heartland | 51m | |
| 14:54 | HeartlandJack tags along on Amy and Ty's romantic trip to Pike River. | Heartland | 52m | |
| 15:46 | HeartlandTy is asked to mentor a troubled kid, but finding common ground proves harder than he expected. | Heartland | 50m | |
| 16:36 | HeartlandWhile on Lyndy's first camping trip, Amy and Ty find an injured animal. | Heartland | 50m | |
| 17:26 | HeartlandGeorgie asks Wyatt to help him reunite a famous rider and her long-lost horse. | Heartland | 50m | |
| 18:16 | HeartlandAmy and Ty disagree about how to treat a horse when the Fairfield manager has a concern. | Heartland | 52m | |
| 19:08 | HeartlandTim turns a team penning event into a town spectacle. | Heartland | 50m | |
| 19:58 | HeartlandLou returns with an idea to attract guests. | Heartland | 50m | |
| 20:48 | HeartlandThe treatment of a drugged racehorse proves a challenge for Ty and Amy; Jack and Tim are at odds. | Heartland | 50m | |
| 21:38 | HeartlandThe family searches for ways to cope with its grief after getting devastating news. | Heartland | 50m | |
| 22:28 | HeartlandThe family helps Will Vernon round up his wild horses. | Heartland | 50m | |
| 23:18 | HeartlandA disgruntled horse owner causes problems for Ty and Amy's business. | Heartland | 50m |
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_pgptct3s/schedule?date=2026-10-13&tz=America/New_York" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_pgptct3s/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_pgptct3s/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_pgptct3s/schedule?date=2026-10-13&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_pgptct3s/schedule?date=2026-10-13&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_pgptct3s/schedule", params={"date": "2026-10-13", "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_pgptct3s/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_k8g5dbjf", "channel": "ch_pgptct3s", "start": "2026-10-13T03:46:00Z", "stop": "2026-10-13T04:36:00Z", "title": "Heartland", "sub_title": "Heartland", "description": "The family supports Georgie as she decides whether to face a ghost from her p...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 29, "date": "2026-10-13", "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.