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_qgkj5gcw/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:39 | TV 동물농장 957회목에 의문의 물체가 꽉 낀 채 떠도는 고양이와, 심각한 상처로 고통받는 길냥이 <까망이>! 구조조차 쉽지 않은 두 녀석에게 동물농장이 찾아간다.맨바닥은 절... | 마을을 공포에 빠트린.. 들개들 | 1h 9m | |
| 00:49 | TV 동물농장 951회▶ 에너자이저犬 <초롱이> : 지치지 않는 에너자이저 견이 있다?! 깨방정 100% <초롱이>! 처음 본 사람에게도 달려들고, 주인만 졸졸 따라다니며 깨방정을 떠... | 영월이 | 1h 8m | |
| 01:56 | TV 동물농장 952회제주도에서 펼쳐지는 염치불구 개犬난장판! 맥줏집을 운영하는 남홍 씨는 매일 담을 넘어 도망가는 일곱 마리 견공들을 쫓느라 정신이 없다는데~! 그런데 알... | 나는 수의사와 산다 2 | 1h 8m | |
| 03:04 | TV 동물농장 953회▶ 장롱위에사냥 : 24시간 장롱 위에서 내려오지 않는 고양이 <루루>!엄마 <모찌>가 유독 새끼 <구찌>만 괴롭힌다?! 다른 새끼들에게는 한없이 다정하면서도 <... | 개집보고서–당신의 반려견 하우스는 안녕하십니까? | 1h 9m | |
| 04:13 | TV 동물농장 954회외출을 요구하며 밤낮없이 1냥 시위를 펼치는 외출중독냥 <밤톨이>! 엘리베이터 소리와 안내방송까지 알아듣고 문 앞에서 외출을 재촉한다는데~ !▶ 밤톨이의 ... | 아강이와 아지-그만 싸우개 | 1h 11m | |
| 05:24 | TV 동물농장 955회 On now미용실의 열혈 매니저를 자처하는 <순심이>는 손님을 맞이하고 물건까지 알아서 가져다주는 일등 직원이라는데~! 하지만 시키지도 않은 일을 계속하며 사고까... | 이상한 천재견 <순심이> | 1h 9m | |
| 06:32 | TV 동물농장 956회대동물 수의사 권환흥 수의사의 곁에는 6년째 함께하는 반려견 <토미>가 있다. 어디든 따라다니는 공식 껌딱지 <토미>에게는 분리불안이 있어 혼자 남겨지면 ... | 한의원 띨띨이 | 1h 11m | |
| 07:43 | TV 동물농장 957회▶ 마을을 공포에 빠트린.. 들개들 마을을 발칵 뒤집은 연이은 습격 사건, 범인으로 지목된 것은 무리 지어 다니는 다섯 마리의 개였는데,,! 마을을 발칵 뒤집... | 마을을 공포에 빠트린.. 들개들 | 1h 9m |
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_qgkj5gcw/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_qgkj5gcw/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_qgkj5gcw/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_qgkj5gcw/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_qgkj5gcw/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_qgkj5gcw/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_qgkj5gcw/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_mw7m080h", "channel": "ch_qgkj5gcw", "start": "2026-10-12T14:39:33Z", "stop": "2026-10-12T15:49:02Z", "title": "TV 동물농장 957회", "sub_title": "마을을 공포에 빠트린.. 들개들", "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.