73.8M 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. Search any past day on the Archive plan.
All times Asia/Seoul. The same day from the API: GET /v1/channels/ch_dz9q6dj1/schedule?date=2026-10-14&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:05 | 어영차 바다야바다와 함께 살아가는 사람들의 생생한 이야기를 아름다운 소리꾼이 풀어낸다. | 교양/정보, 일반 | 1h 4m | |
| 00:00 | 향란이의 뻐니뻐니 | 취미/레저, 낚시 | 30m | |
| 00:09 | 향란이의 뻐니뻐니 | 취미/레저, 낚시 | 30m | |
| 00:30 | DRAG2 | 취미/레저, 낚시 | 30m | |
| 00:39 | DRAG2 | 취미/레저, 낚시 | 28m | |
| 01:00 | 드론으로 보는 세상 | 취미/레저, 일반 | 30m | |
| 01:07 | 드론으로 보는 세상 | 취미/레저, 일반 | 31m | |
| 01:30 | 자이언트 랍스터 헌터 | 시사/다큐, 일반 | 30m | |
| 01:38 | 자이언트 랍스터 헌터 | 시사/다큐, 일반 | 26m | |
| 02:00 | 와노와2 | 취미/레저, 낚시 | 30m | |
| 02:04 | 와노와2 | 취미/레저, 낚시 | 31m | |
| 02:30 | 낚시터 근처 맛집 | 교양/정보, 일반 | 30m | |
| 02:35 | 낚시터 근처 맛집 | 교양/정보, 일반 | 33m | |
| 03:00 | GotCha T.N.L | 취미/레저, 낚시 | 30m | |
| 03:08 | GotCha T.N.L | 취미/레저, 낚시 | 29m | |
| 03:30 | 수초와 수초 사이 | 취미/레저, 낚시 | 30m | |
| 03:37 | 수초와 수초 사이 | 취미/레저, 낚시 | 35m | |
| 04:00 | 민물낚시실록 | 취미/레저, 낚시 | 1h | |
| 04:12 | 민물낚시실록 | 취미/레저, 낚시 | 56m | |
| 05:00 | 바다포커스 | 취미/레저, 낚시 | 1h | |
| 05:08 | 바다포커스 | 취미/레저, 낚시 | 52m | |
| 06:00 | 풍경이 있는 낚시터 | 취미/레저, 낚시 | 30m | |
| 06:30 | 낚시 ON | 취미/레저, 낚시 | 1h | |
| 07:30 | NEW대물낚시 300일 | 취미/레저, 낚시 | 30m | |
| 08:00 | 교감 | 취미/레저, 낚시 | 30m | |
| 08:30 | 낚시 왔구나2 | 취미/레저, 낚시 | 30m | |
| 09:00 | 어영차 바다야바다와 함께 살아가는 사람들의 생생한 이야기를 아름다운 소리꾼이 풀어낸다. | 교양/정보, 일반 | 1h | |
| 10:00 | 붕어낚시의 미야 | 취미/레저, 낚시 | 30m | |
| 10:30 | 에깅로드 | 취미/레저, 낚시 | 30m | |
| 11:00 | THE FACT | 취미/레저, 낚시 | 30m | |
| 11:30 | 수초와 수초 사이 | 취미/레저, 낚시 | 30m | |
| 12:00 | 어장관리 | 취미/레저, 낚시 | 30m | |
| 12:30 | 오늘의 한판승부 | 취미/레저, 낚시 | 30m | |
| 13:00 | 월척수배25시 the Live | 취미/레저, 낚시 | 30m | |
| 13:30 | 붕어낚시의 월야 | 취미/레저, 낚시 | 30m | |
| 14:00 | 시그널 2 | 취미/레저, 낚시 | 30m | |
| 14:30 | DRAG2 | 취미/레저, 낚시 | 30m | |
| 15:00 | 어영차 바다야바다와 함께 살아가는 사람들의 생생한 이야기를 아름다운 소리꾼이 풀어낸다. | 교양/정보, 일반 | 1h | |
| 16:00 | 오늘의 키포인트 | 취미/레저, 낚시 | 1h | |
| 17:00 | 일격 나이트호크 | 취미/레저, 낚시 | 30m | |
| 17:30 | 마이티조2 in 대마도 | 취미/레저, 낚시 | 30m | |
| 18:00 | 조신 | 취미/레저, 낚시 | 30m | |
| 18:30 | 외바늘 시즌2 | 취미/레저, 낚시 | 30m | |
| 19:00 | 선 굵은 낚시 | 취미/레저, 낚시 | 30m | |
| 19:30 | 나만 믿고 따라와, 도시어부연예계 대표 낚시꾼인 이경규, 이덕화가 보여주는 낚시 여행 프로그램 | 연예/오락, 버라이어티 | 1h 30m | |
| 21:00 | 어나더 | 취미/레저, 낚시 | 30m | |
| 21:30 | 체이서 더 포인트맨 | 취미/레저, 낚시 | 30m | |
| 22:00 | 동행기 | 취미/레저, 낚시 | 30m | |
| 22:30 | 테크니션즈 | 취미/레저, 낚시 | 30m | |
| 23:00 | 생활의 달인수십년간 한 분야에 종사하며 부단한 열정과 노력으로 달인의 경지에 이르게 된 사람들. 삶의 스토리와 리얼리티가 담겨 있는 ‘생활 달인’은 그 자체가 다큐... | 교양/정보, 일반 | 1h |
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_dz9q6dj1/schedule?date=2026-10-14&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_dz9q6dj1/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_dz9q6dj1/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_dz9q6dj1/schedule?date=2026-10-14&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_dz9q6dj1/schedule?date=2026-10-14&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_dz9q6dj1/schedule", params={"date": "2026-10-14", "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_dz9q6dj1/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_g6prpt6n", "channel": "ch_dz9q6dj1", "start": "2026-10-13T14:05:00Z", "stop": "2026-10-13T15:09:00Z", "title": "어영차 바다야", "sub_title": null, "description": "바다와 함께 살아가는 사람들의 생생한 이야기를 아름다운 소리꾼이 풀어낸다.", "category": [ "교양/정보", "일반" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 50, "date": "2026-10-14", "tz": "Asia/Seoul" } }
What was on, on any date we hold: for research, catch-up, clip finding or proving a broadcast. Any window up to 31 days with /v1/channels/{id}/history on the Archive plan.
| Time | Monday 13 October 2025 | Category |
|---|---|---|
| 23:49 | 타이밍 | 취미/레저, 낚시 |
| 00:15 | 수초와 수초 사이 | 취미/레저, 낚시 |
| 00:43 | 수초 사이로 | 취미/레저, 낚시 |
| 34 more programmes that day, on Archive | ||
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 150 countries.