90.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. On the Live plan; the free key reads yesterday.
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/Curacao time, what is on now and next, and the same data in your app with one call.
All times America/Curacao. The same day from the API: GET /v1/channels/ch_xpna31dq/schedule?date=2026-10-18&tz=America/Curacao
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 21:00 | Botched HomesS1 E4 — The Ghosts of Exxx-Wives' Past Charlie faces red shaggy carpet and fluted columns in a bedroom that hasn't been touched since the 1980s; he... | S1 E4, The Ghosts of Exxx-Wives' Past | 1h | |
| 22:00 | House Hunters NewS280 E8 — Whiskey Tango Foxtrot A military couple bought their home sight unseen in Savoy, Illinois, and it's not working for her. She wants design... | 30m | ||
| 22:30 | House HuntersS269 E8 — Nesting on Overdrive An expecting couple searches for a home in Minneapolis; she's looking for a unique nest for their first baby and wan... | 30m | ||
| 23:00 | House HuntersS270 — Cursed by Crown Molding After a breakup, a woman sets out to buy a vintage Victorian in Richmond, Va.; she wants a place that finally feels ... | 30m | ||
| 23:30 | House HuntersS271 E6 — New Chapter in Dallas A successful real estate agent is now in the buyer's seat herself as she looks for a home in Dallas; after a recent... | 30m |
Copy, add your key, run. The free key reads yesterday on every channel, 500 calls a day; today and ahead are on Live.
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_xpna31dq/schedule?date=2026-10-18&tz=America/Curacao" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_xpna31dq/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_xpna31dq/history?from=2026-10-13T00:00:00Z&to=2026-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_xpna31dq/schedule?date=2026-10-18&tz=America/Curacao"); 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_xpna31dq/schedule?date=2026-10-18&tz=America/Curacao", { 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_xpna31dq/schedule", params={"date": "2026-10-18", "tz": "America/Curacao"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_xpna31dq/schedule?date=2026-10-18, the first programme { "data": [ { "id": "ls_38m645gj", "channel": "ch_xpna31dq", "start": "2026-10-19T01:00:00Z", "stop": "2026-10-19T02:00:00Z", "title": "Botched Homes", "sub_title": null, "description": "S1 E4 — The Ghosts of Exxx-Wives' Past\nCharlie faces red shaggy carpet and fl...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 5, "date": "2026-10-18", "tz": "America/Curacao" } }
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's listings on every channel in 176 countries.