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_hkhm8f5c/schedule?date=2026-10-11&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:03 | 21세기 대군부인 HOT CLIP 모아보기 1회 ~ 12회21세기 입헌군주제 대한민국을 배경으로 모든 걸 가진 재벌이지만 신분은 고작 평민이라 짜증스러운 여자와 왕의 아들이지만 아무것도 가질 수 없어 슬픈 남... | 1h 59m | ||
| 01:02 | 유부녀 킬러 HOT CLIP 모아보기 1회 ~ 14회세상에서 가장 살벌한 직업을 가진, 어느 워킹맘의 고군분투 워라밸(work & life balance) 사수기를 그린 드라마 | 3h 23m | ||
| 04:25 | 오십프로 HOT CLIP 모아보기 1회 ~ 12회평범해 보여도 끗발 좀 날리던 세 남자가 운명에 의해 다시 움직인다! 세상에 치이고 몸은 녹슬었을지언정 의리와 본능만은 여전한 인생의 50%를 달려온 진짜... | 3h 14m | ||
| 07:39 | 21세기 대군부인 HOT CLIP 모아보기 1회 ~ 12회21세기 입헌군주제 대한민국을 배경으로 모든 걸 가진 재벌이지만 신분은 고작 평민이라 짜증스러운 여자와 왕의 아들이지만 아무것도 가질 수 없어 슬픈 남... | 1h 59m | ||
| 09:38 | 유부녀 킬러 HOT CLIP 모아보기 1회 ~ 14회세상에서 가장 살벌한 직업을 가진, 어느 워킹맘의 고군분투 워라밸(work & life balance) 사수기를 그린 드라마 | 3h 23m | ||
| 13:01 | 오십프로 HOT CLIP 모아보기 1회 ~ 12회평범해 보여도 끗발 좀 날리던 세 남자가 운명에 의해 다시 움직인다! 세상에 치이고 몸은 녹슬었을지언정 의리와 본능만은 여전한 인생의 50%를 달려온 진짜... | 3h 14m | ||
| 16:15 | 21세기 대군부인 HOT CLIP 모아보기 1회 ~ 12회21세기 입헌군주제 대한민국을 배경으로 모든 걸 가진 재벌이지만 신분은 고작 평민이라 짜증스러운 여자와 왕의 아들이지만 아무것도 가질 수 없어 슬픈 남... | 1h 59m | ||
| 18:14 | 유부녀 킬러 HOT CLIP 모아보기 1회 ~ 14회세상에서 가장 살벌한 직업을 가진, 어느 워킹맘의 고군분투 워라밸(work & life balance) 사수기를 그린 드라마 | 3h 23m | ||
| 21:37 | 오십프로 HOT CLIP 모아보기 1회 ~ 12회평범해 보여도 끗발 좀 날리던 세 남자가 운명에 의해 다시 움직인다! 세상에 치이고 몸은 녹슬었을지언정 의리와 본능만은 여전한 인생의 50%를 달려온 진짜... | 3h 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_hkhm8f5c/schedule?date=2026-10-11&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_hkhm8f5c/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_hkhm8f5c/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_hkhm8f5c/schedule?date=2026-10-11&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_hkhm8f5c/schedule?date=2026-10-11&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_hkhm8f5c/schedule", params={"date": "2026-10-11", "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_hkhm8f5c/schedule?date=2026-10-11, the first programme { "data": [ { "id": "ls_w41j4zpn", "channel": "ch_hkhm8f5c", "start": "2026-10-10T14:03:19Z", "stop": "2026-10-10T16:02:20Z", "title": "21세기 대군부인 HOT CLIP 모아보기 1회 ~ 12회", "sub_title": null, "description": "21세기 입헌군주제 대한민국을 배경으로 모든 걸 가진 재벌이지만 신분은 고작 평...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 9, "date": "2026-10-11", "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.