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. 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-15&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | 낚시가 좋다 | 취미/레저, 낚시 | 30m | |
| 00:30 | 파인드 | 취미/레저, 낚시 | 30m | |
| 01:00 | 줍낚 원정대 | 취미/레저, 낚시 | 30m | |
| 01:30 | GotCha T.N.L | 취미/레저, 낚시 | 30m | |
| 02:00 | 조우 | 취미/레저, 낚시 | 30m | |
| 02:30 | 귀리2 | 취미/레저, 낚시 | 30m | |
| 03:00 | 음악속의 선율 | 음악, 일반 | 1h | |
| 04:00 | 체이서 더 포인트맨 | 취미/레저, 낚시 | 30m | |
| 04:30 | 장어 사냥꾼 | 취미/레저, 낚시 | 30m | |
| 05:00 | 바다포커스 | 취미/레저, 낚시 | 1h | |
| 06:00 | 풍경이 있는 낚시터 | 취미/레저, 낚시 | 30m | |
| 06:30 | 낚시한마당 | 취미/레저, 낚시 | 1h | |
| 07:30 | 블랙캐스트 | 취미/레저, 낚시 | 30m | |
| 08:00 | 장어 사냥꾼 | 취미/레저, 낚시 | 30m | |
| 08:30 | 붕어낚시의 미야 | 취미/레저, 낚시 | 30m | |
| 09:00 | 생활의 달인수십년간 한 분야에 종사하며 부단한 열정과 노력으로 달인의 경지에 이르게 된 사람들. 삶의 스토리와 리얼리티가 담겨 있는 ‘생활 달인’은 그 자체가 다큐... | 교양/정보, 일반 | 1h | |
| 10:00 | 타이밍 | 취미/레저, 낚시 | 30m | |
| 10:30 | 체이서 더 포인트맨 | 취미/레저, 낚시 | 30m | |
| 11:00 | 어장관리 | 취미/레저, 낚시 | 30m | |
| 11:30 | 피싱데이즈 | 취미/레저, 낚시 | 30m | |
| 12:00 | 대포붕어 | 취미/레저, 낚시 | 30m | |
| 12:30 | 오늘의 한판승부 | 취미/레저, 낚시 | 30m | |
| 13:00 | 붕어낚시의 월야 | 취미/레저, 낚시 | 30m | |
| 13:30 | 어나더 | 취미/레저, 낚시 | 30m | |
| 14:00 | 나만 믿고 따라와, 도시어부연예계 대표 낚시꾼인 이경규, 이덕화가 보여주는 낚시 여행 프로그램 | 연예/오락, 버라이어티 | 1h 30m | |
| 14:30 | 팀뻐니피싱 | 취미/레저, 낚시 | 30m | |
| 15:00 | 어영차 바다야바다와 함께 살아가는 사람들의 생생한 이야기를 아름다운 소리꾼이 풀어낸다. | 교양/정보, 일반 | 1h | |
| 15:30 | 팀뻐니피싱 | 취미/레저, 낚시 | 30m | |
| 16:00 | 오늘의 키포인트 | 취미/레저, 낚시 | 1h | |
| 17:00 | 생활의 달인수십년간 한 분야에 종사하며 부단한 열정과 노력으로 달인의 경지에 이르게 된 사람들. 삶의 스토리와 리얼리티가 담겨 있는 ‘생활 달인’은 그 자체가 다큐... | 교양/정보, 일반 | 1h | |
| 18:00 | 줍낚 원정대 | 취미/레저, 낚시 | 30m | |
| 18:30 | 선 굵은 낚시 | 취미/레저, 낚시 | 30m | |
| 19:00 | 외바늘 시즌2 | 취미/레저, 낚시 | 30m | |
| 19:30 | 나만 믿고 따라와, 도시어부연예계 대표 낚시꾼인 이경규, 이덕화가 보여주는 낚시 여행 프로그램 | 연예/오락, 버라이어티 | 1h 30m | |
| 20:00 | 어영차 바다야바다와 함께 살아가는 사람들의 생생한 이야기를 아름다운 소리꾼이 풀어낸다. | 교양/정보, 일반 | 1h | |
| 21:00 | 붕어낚시의 저력 | 취미/레저, 낚시 | 30m | |
| 21:30 | 대마도에 산다 3 | 취미/레저, 낚시 | 30m | |
| 22:00 | 월척수배25시 the Live | 취미/레저, 낚시 | 30m | |
| 22:30 | 조신 | 취미/레저, 낚시 | 30m | |
| 23:00 | 테크니션즈 | 취미/레저, 낚시 | 30m | |
| 23:30 | 대마도에 산다 3 | 취미/레저, 낚시 | 30m |
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-15&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-15&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-15&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-15", "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-15, the first programme { "data": [ { "id": "ls_t5p6ntq1", "channel": "ch_dz9q6dj1", "start": "2026-10-14T15:00:00Z", "stop": "2026-10-14T15:30:00Z", "title": "낚시가 좋다", "sub_title": null, "description": null, "category": [ "취미/레저", "낚시" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 41, "date": "2026-10-15", "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 155 countries.