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_kpp5071k/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:48 | 행복배틀나영의 집을 찾아간 미호는 목맨 나영을 빨리 발견해 목숨을 구해준다. 나영이 자살을 기도했다는 소문이 퍼지자, 정아는 겁을 먹고 이를 미호 탓으로 돌리는... | 6회 | 1h 6m | |
| 00:54 | 행복배틀미호는 USB를 찾지 못한 채 거래 장소로 향하지만, 문자 보낸 사람을 만나지 못한다. 대신 바닥에 떨어져 있던 정아의 립스틱을 발견하며 정아를 의심하게 되... | 7회 | 1h 6m | |
| 02:00 | 행복배틀정아가 보낸 투서로 회사가 시끄러워지고. 창현의 위협이 날로 거세지는 와중, 미호는 자신의 과거사를 악의적으로 폭로한 SNS 게시글이 정아의 조작이었다는... | 8회 | 1h 6m | |
| 03:06 | 행복배틀도준은 유진과 미호가 자신을 죽이려 모의했다고 주장하고. 경찰 조사를 받게 된 미호. 다행히 나영과 태호의 도움으로 조사를 마친 뒤 집으로 돌아가지만, ... | 9회 | 1h 8m | |
| 04:15 | 행복배틀충격적인 내용의 맘카페 익명글을 유진이 작성했다고 확신하는 미호. 전문 업체를 찾아가 은색 USB에 걸린 비밀번호를 해제하고, 판도라의 상자 속 도준의 동... | 10회 | 1h 7m | |
| 05:22 | 행복배틀 On now미호는 열쇠의 정체를 알아내기 위해 택배 발신자의 주소로 찾아가 혜정을 만난다. 하지만 혜정은 미호에게 적대적이기만 하고. 여러 번의 추궁 끝에 미호는 ... | 11회 | 1h 10m | |
| 06:31 | 행복배틀미호는 공용 사물함에서 찢겨진 그림 조각을 발견한다. 또한 사건 당일 누군가 택배를 가져갔다가 되돌려놓았다는 사실을 확인한 뒤 그날 유진의 집에 다른 ... | 12회 | 1h 11m | |
| 07:42 | 행복배틀미호는 정식을 만나 수빈과 유진의 관계에 대해 물어보려 하지만. 약속 장소에 정아가 나타나 훼방 놓는 바람에 별다른 이야기를 듣지 못한다. 이후 정아는 ... | 13회 | 1h 10m |
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_kpp5071k/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_kpp5071k/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_kpp5071k/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_kpp5071k/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_kpp5071k/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_kpp5071k/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_kpp5071k/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_7f19dp04", "channel": "ch_kpp5071k", "start": "2026-10-12T14:48:19Z", "stop": "2026-10-12T15:54:30Z", "title": "행복배틀", "sub_title": "6회", "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.