74.3M 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. Search any past day on the Archive plan.
All times UTC. The same day from the API: GET /v1/channels/ch_9ypn7ste/schedule?date=2026-10-17&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:00 | 100% Euphoria! 1995-1999The latter part of the 90s witnessed the euphoric revolution. With massive 'hands in the air' anthems from Energy 52, Chicane, PVD, Ayla and loads ... | 1h 45m | ||
| 00:45 | I Can't Get No Sleep!Fancy a mash up after midnight? Only massive, ad free anthems to help with your insomnia! More beats, less sleep! | 2h 15m | ||
| 03:00 | Legendary Dance No.1sMassive tunes and huge anthems. Each track a chart topping No.1 dance hit! This is the best of the best, these are the legends. | 2h | ||
| 05:00 | Every No.1 Beat of the 90s!From Beats International in 1990 to the Wamdue Project in 1999 - Bam Bam presents 65 big party number 1s of the 1990s, back to back and in order. | 5h 5m | ||
| 10:05 | Essential 90s: The Club Classics!Need a fix of 90s club classics? Lock in for a marathon of memories as we take you back to the greatest decade of dance! The 90s! | 55m | ||
| 11:00 | When Love Takes Over! Top 60Lessons in love - dancefloor style. Sixty tunes that are all about love, but you'll not find any slushy ballads here! | 4h 25m | ||
| 15:25 | Legendary Clubland Classics!The sound that started it all! Join us for the ultimate selection of legendary Clubland classics, high-energy beats and the biggest party anthems o... | 35m | ||
| 16:00 | The Proper Clubland 50!Join Stephanie Hirst as she chooses her 50 most iconic but very proper clubland classics of all time! Banger after banger, this will not disappoint. | 3h 40m | ||
| 19:40 | Legendary Clubland Classics!The sound that started it all! Join us for the ultimate selection of legendary Clubland classics, high-energy beats and the biggest party anthems o... | 20m | ||
| 20:00 | Where Did THAT Come From?! 85-15Flashing back to a 30 year period when dance had its fair share of silly songs and novelty hits. Stupidity rules with 50 of the most bizarre tunes ... | 3h 40m | ||
| 23:40 | Legendary Clubland Classics!The sound that started it all! Join us for the ultimate selection of legendary Clubland classics, high-energy beats and the biggest party anthems o... | 1h 20m |
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_9ypn7ste/schedule?date=2026-10-17&tz=UTC" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_9ypn7ste/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_9ypn7ste/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_9ypn7ste/schedule?date=2026-10-17&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_9ypn7ste/schedule?date=2026-10-17&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_9ypn7ste/schedule", params={"date": "2026-10-17", "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_9ypn7ste/schedule?date=2026-10-17, the first programme { "data": [ { "id": "ls_c387c41j", "channel": "ch_9ypn7ste", "start": "2026-10-16T23:00:00Z", "stop": "2026-10-17T00:45:00Z", "title": "100% Euphoria! 1995-1999", "sub_title": null, "description": "The latter part of the 90s witnessed the euphoric revolution. With massive 'h...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 11, "date": "2026-10-17", "tz": "UTC" } }
What was on, on any date we hold: for research, catch-up, clip finding or proving a broadcast. Any window up to 31 days with /v1/channels/{id}/history on the Archive plan.
| Time | Monday 13 October 2025 | Category |
|---|---|---|
| Nothing held for that day. Try another date. | ||
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.