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/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_32bfzvp2/schedule?date=2026-10-19&tz=Asia/Hong_Kong
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:00 | 監獄風雲II之逃犯[粵]資深囚犯鍾天正當初因為誤殺妻子而入獄,服刑期間母親病逝,兒子良仔被送到孤兒院甚至對父親產生怨恨. 鍾天正一心想申請外出看望兒子,卻遭到監獄保安組主任仇S... | 2h | ||
| 01:00 | 野獸之瞳[粵]賀瞳(古天樂 飾)和賀沖(吳彥祖 飾)是一對關係疏離的孿生兄弟.哥哥阿瞳是一個活潑外向的聰明孩子,而沖則完全相反,害羞內向.在他二十六歲生日那天,沖收到了哥哥... | 1h 55m | ||
| 02:55 | 大上海[粵]故事開始於20世紀10年代,上海浦東長大的小子成大器,在生果店工作,勤懇好學.大器喜歡鄰居的京劇演員葉知秋.知秋自小漂亮出眾,跟父親學刀馬旦,一心在舞台上出人... | 2h 5m | ||
| 05:00 | 算死草[粵/普]清代名咀大狀陳夢吉到香港接辦一宗棘手殺人冤案,在洋人大法官面前扭盡六壬,死都拗番生,以過人才智挑戰西方法理和玩死貪官污吏. | 1h 25m | ||
| 06:25 | 艋舺[普]故事始於1986年的台北商業中心艋舺,此處有三大黑幫勢力,廟口一帶由Geta統領,他的結拜兄弟Masa掌管後壁厝,而灰狼則率領逐漸擴張勢力的外省掛,想從外界進入艋舺... | 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_32bfzvp2/schedule?date=2026-10-19&tz=Asia/Hong_Kong" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_32bfzvp2/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_32bfzvp2/history?from=2025-10-12T00:00:00Z&to=2025-10-13T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_32bfzvp2/schedule?date=2026-10-19&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_32bfzvp2/schedule?date=2026-10-19&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_32bfzvp2/schedule", params={"date": "2026-10-19", "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_32bfzvp2/schedule?date=2026-10-19, the first programme { "data": [ { "id": "ls_fr6jaxj6", "channel": "ch_32bfzvp2", "start": "2026-10-18T15:00:00Z", "stop": "2026-10-18T17:00:00Z", "title": "監獄風雲II之逃犯[粵]", "sub_title": null, "description": "資深囚犯鍾天正當初因為誤殺妻子而入獄,服刑期間母親病逝,兒子良仔被送到孤兒院甚...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 5, "date": "2026-10-19", "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 | Sunday 12 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.