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/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_zx8nt348/schedule?date=2026-10-13&tz=America/New_York
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:45 | Beyond the GatesA crucial piece of evidence comes to light in Kat's investigation of Leslie, Ted struggles with how to repair his relationship with Nicole, and Ani... | S2025 E63, Episode 63 | Drama, Series | 45m |
| 00:30 | Beyond the GatesTed and Eva discuss Leslie's manipulations and Sharon confronts Anita with the painful truth of their past. | S2025 E64, Episode 64 | Drama, Series | 45m |
| 01:15 | Beyond the GatesLeslie turns to an unlikely source for help; Naomi and Hayley find themselves in a life-changing situation; and Dani struggles with her insecuritie... | S2025 E65, Episode 65 | Drama, Series | 45m |
| 02:00 | Beyond the GatesJacob catches a break in Leslie's case; Doug has unexpected news for Bill; and Chelsea makes a mysterious connection | S2025 E66, Episode 66 | Drama, Series | 45m |
| 02:45 | Beyond the GatesKat receives unexpected news; Laura turns to an unlikely source for help, and Sharon's bitterness threatens to derail the reunion with Anita. Meanw... | S2025 E67, Episode 67 | Drama, Series | 45m |
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_zx8nt348/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_zx8nt348/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_zx8nt348/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_zx8nt348/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_zx8nt348/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_zx8nt348/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_zx8nt348/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_36rphsgn", "channel": "ch_zx8nt348", "start": "2026-10-13T03:45:00Z", "stop": "2026-10-13T04:30:00Z", "title": "Beyond the Gates", "sub_title": "Episode 63", "description": "A crucial piece of evidence comes to light in Kat's investigation of Leslie, ...", "category": [ "drama", "series" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 5, "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 155 countries.