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-18&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 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 | ||
| 01:00 | 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 | ||
| 03:00 | Dance Anthems: 2000 - 2009No excuses, stop what you are doing, turn it up and party hard with the biggest anthems and classic tracks of the noughties! | 2h | ||
| 05:00 | Chilled Euphoria - RemixedSometimes you just need to slow things down, relax and decompress. 20 Euphoric classics remixed, deconstructed and blended to chilled perfection. | 1h 35m | ||
| 06:35 | 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! | 25m | ||
| 07:00 | Chilled Beats of the 90sChill as we take a less frantic journey into the 90s dance scene. Kick back with a bit of Moby, Enigma, 808 State, Chicane and more! | 2h | ||
| 09:00 | Bam Bam's 50 Bonkers Videos!Kiss FM legend Bam Bam with 50 mad, crazy and totally bonkers videos of the last three decades! Cheesy grins, wacky dancing and too much hastily ap... | 3h 50m | ||
| 12:50 | 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... | 10m | ||
| 13:00 | Old Skool Clubland Party Bangers!10 hours of Clubland party anthems. No mess, no fuss just an awesome hand picked collection of proper banging old skool tunes - 90s,00s and early 1... | 10h | ||
| 23:00 | The Party Zone!Massive anthems, classic floorfillers and upfront hits. Anything goes cos this is The Party Zone! | 1h |
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-18&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-18&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-18&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-18", "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-18, the first programme { "data": [ { "id": "ls_410zthbh", "channel": "ch_9ypn7ste", "start": "2026-10-17T23:40:00Z", "stop": "2026-10-18T01:00:00Z", "title": "Legendary Clubland Classics!", "sub_title": null, "description": "The sound that started it all! Join us for the ultimate selection of legendar...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 10, "date": "2026-10-18", "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.