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_0bjy9tfv/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:58 | 협상어떠한 상황에서도 냉철함을 잃지 않던 최고의 협상가 ‘하채윤'은 긴급 투입된 현장에서 인질과 인질범 모두 사망하는 사건을 겪고 충격에 휩싸인다. 그로부... | 2h | ||
| 01:57 | 오싹한 연애남다른 ‘촉'때문에 평범한 생활은 물론 제대로 된 연애 한번 못해본 여자 여리(손예진)와 그녀에게 꽂혀버린 비실한 ‘깡'의 호러 마술사 조구(이민기). 달콤... | 2h | ||
| 03:58 | 비밀은 없다국회입성을 노리는 신예 정치인 ‘종찬'(김주혁)과 그의 아내 ‘연홍'(손예진) 선거를 보름 앞둔 어느 날, 그들의 딸이 실종 된다. 갑작스럽게 사라진 딸의 행... | 1h 49m | ||
| 05:46 | 내 머리 속의 지우개 On now사랑을 믿지 않는 남자 철수와 유달리 건망증이 심한 여자 수진. 건설현장에서 일하던 철수는 그곳의 사장 딸 수진와 우연히 운명 같은 사랑에 빠진다. 대수... | 2h 4m | ||
| 07:51 | 박쥐병원에서 근무하는 신부 ‘상현'은 죽어가는 환자들을 보고만 있어야 하는 자신의 무기력함에 괴로워 하다가 해외에서 비밀리에 진행되는 백신개발 실험에 자... | 2h 22m |
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_0bjy9tfv/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_0bjy9tfv/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_0bjy9tfv/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_0bjy9tfv/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_0bjy9tfv/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_0bjy9tfv/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_0bjy9tfv/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_8xh2asjf", "channel": "ch_0bjy9tfv", "start": "2026-10-12T14:58:00Z", "stop": "2026-10-12T16:57:57Z", "title": "협상", "sub_title": null, "description": "어떠한 상황에서도 냉철함을 잃지 않던 최고의 협상가 ‘하채윤'은 긴급 투입된 현...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 5, "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.