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 UTC time, what is on now and next, and the same data in your app with one call.
All times UTC. The same day from the API: GET /v1/channels/ch_4h2jqvp8/schedule?date=2026-10-13&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:36 | JAG: Ghosts On nowHarm and Mac investigate an attempt on Admiral Chedwiggen's life and uncover the fact that all the members of his former SEAL team have died under ... | S2 E7, Ghosts | Series, Drama | 53m |
| 00:29 | JAG: Full EngagementWhile on their day off, Harm takes Mac for a flight in his vintage airplane, only to be forced to make an emergency landing in a mountain clearing ... | S2 E8, Full Engagement | Series, Drama | 54m |
| 01:24 | JAG: Cowboys and CossaksHarm, Mac, and Bud are assigned sea duty to monitor a joint war games exercise between U.S. and Russian naval forces. | S2 E14, Cowboys and Cossacks | Series, Drama | 55m |
| 02:18 | JAG: The GuardianHarm and Mac defend Bauwer, a former Navy Seal, now a homeless man, who's accused of using excessive force when he killed three men who tried to ho... | S2 E12, The Guardian | Series, Drama | 54m |
| 03:12 | JAG: RendevousMac and Harm once again find themselves courtroom adversaries as Mac is assigned the difficult task of defending CPO Holst, an admitted wife abuser... | S2 E15, Rendezvous | Series, Drama | 55m |
| 04:07 | JAG: Ghost ShipHarm and Mac investigate the discovery of a skeleton found hidden aboard a decommissioned aircraft carrier that is being cut up for scrap, and lear... | S3 E1, Ghost Ship | Series, Drama | 54m |
| 05:01 | JAG: The Court Martial of Sandra GilbertThe top female gunship pilot at the Yuma Marine Base is charged with disobeying an order to stop "fraternizing" with her crew chief, a married, enl... | S3 E2, The Court-Martial of Sandra Gilbert | Series, Drama | 54m |
| 05:56 | JAG: VanishedConcerns regarding the mysterious disappearance of a fully armed Navy F-14 during a storm lead Harm's investigation to consider such diverse scenar... | S3 E6, Vanished | Series, Drama | 53m |
| 06:49 | JAG: King of the FleasHaving just stabbed a man on a street-corner, Willie, a wheelchair-bound former Vietnam POW arrives at JAG headquarters to report "a 30-year-old mu... | S3 E5, King of the Fleas | Series, Drama | 54m |
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_4h2jqvp8/schedule?date=2026-10-13&tz=UTC" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_4h2jqvp8/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_4h2jqvp8/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_4h2jqvp8/schedule?date=2026-10-13&tz=UTC"); 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_4h2jqvp8/schedule?date=2026-10-13&tz=UTC", { 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_4h2jqvp8/schedule", params={"date": "2026-10-13", "tz": "UTC"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_4h2jqvp8/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_hg9k75f9", "channel": "ch_4h2jqvp8", "start": "2026-10-12T23:36:32Z", "stop": "2026-10-13T00:29:59Z", "title": "JAG: Ghosts", "sub_title": "Ghosts", "description": "Harm and Mac investigate an attempt on Admiral Chedwiggen's life and uncover ...", "category": [ "series", "drama", "crime", "thriller", "crime drama" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 9, "date": "2026-10-13", "tz": "UTC" } }
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 155 countries.