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 Asia/Taipei 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 Asia/Taipei. The same day from the API: GET /v1/channels/ch_qzn533b9/schedule?date=2026-10-17&tz=Asia/Taipei
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:30 | 出外人生(台文字幕版)(1)(普) | 1h | ||
| 00:30 | 新聞世界通(202)(普) | 30m | ||
| 01:00 | 文化相放伴(207)(普) | 1h | ||
| 02:00 | 收播(普) | 4h | ||
| 06:00 | 東京地震8.0(5)(普) | 30m | ||
| 06:30 | 櫻桃小丸子 第七季 (台語版)(25)(普) | 30m | ||
| 07:00 | 文化相放伴(207)(普) | 1h | ||
| 08:00 | 文化新台灣(4)(普) | 1h | ||
| 09:00 | 六郎告御狀(1)(普) | 2h 30m | ||
| 11:30 | 台灣路一號(4)(普) | 30m | ||
| 12:00 | 新聞看南方(207)(普) | 1h | ||
| 13:00 | 成功路上(3)(護) | 1h | ||
| 14:00 | 成功路上(4)(護) | 1h | ||
| 15:00 | 下晡新聞(290)(普) | 30m | ||
| 15:30 | 台灣記事簿(366)(普) | 30m | ||
| 16:00 | 咱的城 咱的市 咱台灣的味(6)(普) | 1h | ||
| 17:00 | 東京地震8.0(6)(普) | 30m | ||
| 17:30 | 趖來趖去3隻蟲(5)(普) | 15m | ||
| 17:45 | 趖來趖去3隻蟲(6)(普) | 15m | ||
| 18:00 | 下半場練習生(8)(普) | 1h | ||
| 19:00 | 下暗新聞(290)(普) | 30m | ||
| 19:30 | 青春 咱的夢(330)(普) | 30m | ||
| 20:00 | 台灣體能王 叫我第一名(2)(普) | 2h | ||
| 22:00 | 間諜家家酒(9)(護) | 30m | ||
| 22:30 | 間諜家家酒(10)(護) | 30m | ||
| 23:00 | 再會啦 白宮(1)(普) | 1h 35m |
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_qzn533b9/schedule?date=2026-10-17&tz=Asia/Taipei" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_qzn533b9/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_qzn533b9/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_qzn533b9/schedule?date=2026-10-17&tz=Asia/Taipei"); 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_qzn533b9/schedule?date=2026-10-17&tz=Asia/Taipei", { 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_qzn533b9/schedule", params={"date": "2026-10-17", "tz": "Asia/Taipei"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_qzn533b9/schedule?date=2026-10-17, the first programme { "data": [ { "id": "ls_dc9peafk", "channel": "ch_qzn533b9", "start": "2026-10-16T15:30:00Z", "stop": "2026-10-16T16:30:00Z", "title": "出外人生(台文字幕版)(1)(普)", "sub_title": null, "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 26, "date": "2026-10-17", "tz": "Asia/Taipei" } }
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.