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/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-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:30 | 유어아너 5회자신의 아들을 지키기 위해 돌이킬 수 없는 일을 저지른 송판호. 대연항 총격 사건의 용의자로 김강헌의 장남 김상혁이 붙잡히고, 장채림은 송판호와 검사 강... | 1h 12m | ||
| 00:42 | 유어아너 6회송판호는 김강헌에게서 살아남기 위해 정이화와 조미연을 끌어들여 끝없이 발버둥 친다. 강소영은 마지영을 잡아 김강헌을 압박한다. 마지영의 불구속수사로 ... | 1h 13m | ||
| 01:55 | 유어아너 7회티랍의 시체가 발견되고, 김강헌은 송판호에게 동영상을 보내 그를 더욱 옥죄여 온다. 김상혁의 재판을 진행하며 송판호는 청와대와의 접촉을 시도하고, 조미... | 1h 12m | ||
| 03:06 | 유어아너 8회김강헌에게서 벗어나기 위해 송판호는 청와대와 접촉을 서두르지만, 뜻대로 되지 않자 조미연과 김강헌을 없앨 음모를 꾸민다. 뺑소니 사건의 진범이 송판호... | 1h 14m | ||
| 04:20 | 유어아너 9회장채림은 뺑소니 사고가 우연이 아닌 의도적인 범죄임을 알게 되고, 송판호를 만나 마지막 기회를 준다. 이에 송판호는 장채림을 잠시 감금해 줄 것을 박창혁... | 1h 11m | ||
| 05:31 | 유어아너 10회김상혁에 대한 최종공판을 내리는 판호. 아들을 지키기 위한 은닉과 조작의 마지막 행보는 결국 파국으로 이어진다. 부두파 조미연과 장채림 형사의 죽음. 총... | 1h 13m | ||
| 06:44 | 유어아너 1회송판호는 존경받는 우원시 판사이다. 어느 날 아들 호영이 낸 뺑소니 사고에 그의 신념대로 자수를 권유하지만, 이내 호영이 죽인 소년이 우원시를 장악하고 ... | 1h 15m | ||
| 07:59 | 유어아너 2회 On now송판호는 호영이 찍힌 주유소 CCTV를 지우고 호영의 차를 없애는 등 증거인멸 시작한다. 출소한 김강헌은 상현이 죽음의 진실을 쫓는데, 비밀리에 호영이 차... | 1h 14m |
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-13&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-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_x1jzb6ph/schedule?date=2026-10-13&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-13&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-13", "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-13, the first programme { "data": [ { "id": "ls_7efyrqt5", "channel": "ch_x1jzb6ph", "start": "2026-10-12T14:30:23Z", "stop": "2026-10-12T15:42:22Z", "title": "유어아너 5회", "sub_title": null, "description": "자신의 아들을 지키기 위해 돌이킬 수 없는 일을 저지른 송판호. 대연항 총격 사건...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 8, "date": "2026-10-13", "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 155 countries.