73.8M 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/Hong_Kong 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/Hong_Kong. The same day from the API: GET /v1/channels/ch_y4a6a431/schedule?date=2026-10-17&tz=Asia/Hong_Kong
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 22:15 | 非常嫌疑犯一名倖存者向警方講述一宗錯綜複雜的犯罪陰謀,而幕後似乎與神秘犯罪首腦Keyser Söze有關。 | 2h | ||
| 00:15 | 參孫與大利拉聖經中的大力士參孫愛上美艷迷人的大利拉,卻因她的背叛而走向毀滅,最終以犧牲尋求救贖。 | 2h 30m | ||
| 02:45 | 桃色血案一名前檢察官受命為一名被控殺害妻子強姦犯的陸軍軍官辯護,卻發現真相始終撲朔迷離。 | 3h | ||
| 05:45 | 硫磺島浴血戰一名強悍的海軍陸戰隊中士嚴格訓練新兵,為迎接二戰其中一場最慘烈的戰役做好準備。 | 2h 15m | ||
| 08:00 | 非常嫌疑犯一名倖存者向警方講述一宗錯綜複雜的犯罪陰謀,而幕後似乎與神秘犯罪首腦Keyser Söze有關。 | 2h | ||
| 10:00 | 黑湖妖潭在影史上最經典、最受喜愛的科幻恐怖電影之一中,一隻神秘的兩棲怪物逃離囚禁,只為追隨牠所鍾情的美麗女科學助手。 | 1h 30m | ||
| 11:30 | 捉鬼特攻隊在寧靜的小鎮費爾沃特,一股邪惡力量甦醒了——它的力量之強,甚至能從陰間伸出魔爪! | 2h 15m | ||
| 13:45 | 硫磺島浴血戰一名強悍的海軍陸戰隊中士嚴格訓練新兵,為迎接二戰其中一場最慘烈的戰役做好準備。 | 2h 15m | ||
| 16:00 | 非常嫌疑犯一名倖存者向警方講述一宗錯綜複雜的犯罪陰謀,而幕後似乎與神秘犯罪首腦Keyser Söze有關。 | 2h | ||
| 18:00 | 尖峰時刻3:巴黎打通關故事移師巴黎,基斯·德加與成龍這對來自東西方的怪拍檔,再度聯手對抗華人黑幫三合會的一個分支,在連場精彩動作與連串爆笑場面中,展開新一輪冒險。 | 2h | ||
| 20:00 | 七夜冤靈一名記者調查一盒受到詛咒的錄影帶,傳聞任何看過影片的人都會在七日後死亡。 | 2h 15m | ||
| 22:15 | 卡特教頭一名高中籃球教練因球員學業成績欠佳,不惜暫停這支保持不敗紀錄的球隊參賽,要求他們先改善學業。 | 2h 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_y4a6a431/schedule?date=2026-10-17&tz=Asia/Hong_Kong" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_y4a6a431/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_y4a6a431/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_y4a6a431/schedule?date=2026-10-17&tz=Asia/Hong_Kong"); 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_y4a6a431/schedule?date=2026-10-17&tz=Asia/Hong_Kong", { 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_y4a6a431/schedule", params={"date": "2026-10-17", "tz": "Asia/Hong_Kong"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_y4a6a431/schedule?date=2026-10-17, the first programme { "data": [ { "id": "ls_hsy9cx9h", "channel": "ch_y4a6a431", "start": "2026-10-16T14:15:00Z", "stop": "2026-10-16T16:15:00Z", "title": "非常嫌疑犯", "sub_title": null, "description": "一名倖存者向警方講述一宗錯綜複雜的犯罪陰謀,而幕後似乎與神秘犯罪首腦Keyser Sö...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 12, "date": "2026-10-17", "tz": "Asia/Hong_Kong" } }
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.