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 Europe/Paris 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 Europe/Paris. The same day from the API: GET /v1/channels/ch_3rysm4sr/schedule?date=2026-10-17&tz=Europe/Paris
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 22:59 | 舞蹈/《小小祈禱》-Vanemuine芭蕾舞團(普) | 1h 16m | ||
| 00:15 | 音樂會/Adrien Perruchon指揮世紀交響樂團:拉威爾作品(普) | 1h 46m | ||
| 02:01 | InterMezzo 愛樂間奏(普) | 1h 44m | ||
| 03:45 | 歌劇/柏林德意志歌劇院:喬達諾《費朵拉》(普) | 1h 23m | ||
| 05:08 | 音樂會/尚蒂伊城堡:地中海合奏團《愛戀西西里島》(普) | 52m | ||
| 06:00 | 音樂會/Daniel Harding指揮小提琴家Leonidas Kavakos與慕尼黑愛樂:柴可夫斯基與德佛札克作品(普) | 1h 26m | ||
| 07:26 | InterMezzo 愛樂間奏(普) | 1h 42m | ||
| 09:08 | 音樂會/雅妮娜・揚森、麥斯基、阿格麗希等:貝多芬、德布西(普) | 22m | ||
| 09:30 | 音樂會/Michael Sanderling指揮鋼琴家E.Leonskaya、D.Fray和洛桑室內樂團:李斯特、葛利格、舒曼與舒伯特作品(普) | 1h 27m | ||
| 10:57 | InterMezzo 愛樂間奏(普) | 1h 30m | ||
| 12:27 | 歌劇/香榭麗舍劇院:韓德爾《凱撒大帝》(普) | 33m | ||
| 13:00 | 音樂會/Jakub Hrusa指揮鋼琴家Daniil Trifonov與捷克愛樂:史克里亞賓與蘇克作品(普) | 1h 46m | ||
| 14:46 | 音樂會/捷克愛樂:畢契科夫指揮蕭士塔高維契《第7號交響曲「列寧格勒」》(普) | 1h 43m | ||
| 16:29 | InterMezzo 愛樂間奏(普) | 31m | ||
| 17:00 | 音樂會/阿格麗希與琉森交響樂團:貝多芬、達拉皮科拉、蕭邦(普) | 4h | ||
| 21:00 | 音樂會/法國國家管弦樂團與麥凱拉魯:拉赫瑪尼諾夫(普) | 1h 30m | ||
| 22:30 | 爵士樂/約翰・史考菲爾德四重奏:Casa del Jazz夏日音樂節(普) | 1h 30m |
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_3rysm4sr/schedule?date=2026-10-17&tz=Europe/Paris" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_3rysm4sr/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_3rysm4sr/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_3rysm4sr/schedule?date=2026-10-17&tz=Europe/Paris"); 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_3rysm4sr/schedule?date=2026-10-17&tz=Europe/Paris", { 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_3rysm4sr/schedule", params={"date": "2026-10-17", "tz": "Europe/Paris"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_3rysm4sr/schedule?date=2026-10-17, the first programme { "data": [ { "id": "ls_2bag7xe5", "channel": "ch_3rysm4sr", "start": "2026-10-16T20:59:00Z", "stop": "2026-10-16T22:15:00Z", "title": "舞蹈/《小小祈禱》-Vanemuine芭蕾舞團(普)", "sub_title": null, "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 17, "date": "2026-10-17", "tz": "Europe/Paris" } }
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 155 countries.