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_1sfx1a2h/schedule?date=2026-10-12&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:00 | 태군 노래자랑태군 노래자랑 | 1h 20m | ||
| 00:20 | 당골집3대에 걸쳐 상인들을 위로해온 동네의 국밥집을 찾아간다. 밤새 고아낸 육수에 전통 토렴 방식으로 온기를 담은 소머리국밥을 만나본다. | 30m | ||
| 00:50 | 조동아리다양한 드라마에서 좋은 연기를 보여주는 배우, 손병호가 등장한다. 유머 감각이 뛰어난 그와 함께 유쾌한 대화를 나눈다. | 50m | ||
| 01:40 | 명물인생각자만의 분야에서 오랜 시간과 노력을 기울여 달인의 경지에 오른 우리네 이웃들을 만나 이들의 땀방울과 삶을 들여다본다. | 20m |
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_1sfx1a2h/schedule?date=2026-10-12&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_1sfx1a2h/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_1sfx1a2h/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_1sfx1a2h/schedule?date=2026-10-12&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_1sfx1a2h/schedule?date=2026-10-12&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_1sfx1a2h/schedule", params={"date": "2026-10-12", "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_1sfx1a2h/schedule?date=2026-10-12, the first programme { "data": [ { "id": "ls_r3x35ess", "channel": "ch_1sfx1a2h", "start": "2026-10-11T14:00:00Z", "stop": "2026-10-11T15:20:00Z", "title": "태군 노래자랑", "sub_title": null, "description": "태군 노래자랑", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 4, "date": "2026-10-12", "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.