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 Asia/Seoul time, what is on now and next, and the same data in your app with one call.
All times Asia/Seoul. The same day from the API: GET /v1/channels/ch_x1jzb6ph/schedule?date=2026-10-14&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:43 | 유어아너 5회자신의 아들을 지키기 위해 돌이킬 수 없는 일을 저지른 송판호. 대연항 총격 사건의 용의자로 김강헌의 장남 김상혁이 붙잡히고, 장채림은 송판호와 검사 강... | 1h 12m | ||
| 00:55 | 유어아너 6회 On now송판호는 김강헌에게서 살아남기 위해 정이화와 조미연을 끌어들여 끝없이 발버둥 친다. 강소영은 마지영을 잡아 김강헌을 압박한다. 마지영의 불구속수사로 ... | 1h 13m | ||
| 02:08 | 유어아너 7회티랍의 시체가 발견되고, 김강헌은 송판호에게 동영상을 보내 그를 더욱 옥죄여 온다. 김상혁의 재판을 진행하며 송판호는 청와대와의 접촉을 시도하고, 조미... | 1h 12m |
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_x1jzb6ph/schedule?date=2026-10-14&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_x1jzb6ph/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_x1jzb6ph/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_x1jzb6ph/schedule?date=2026-10-14&tz=Asia/Seoul"); 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_x1jzb6ph/schedule?date=2026-10-14&tz=Asia/Seoul", { 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_x1jzb6ph/schedule", params={"date": "2026-10-14", "tz": "Asia/Seoul"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_x1jzb6ph/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_093rncfp", "channel": "ch_x1jzb6ph", "start": "2026-10-13T14:43:43Z", "stop": "2026-10-13T15:55:42Z", "title": "유어아너 5회", "sub_title": null, "description": "자신의 아들을 지키기 위해 돌이킬 수 없는 일을 저지른 송판호. 대연항 총격 사건...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 3, "date": "2026-10-14", "tz": "Asia/Seoul" } }
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.