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_f4jyrvdn/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:41 | 낮에 뜨는 달꿈으로 인해 과거의 모든 사연을 알게 된 영화, 준오를 피해 집 밖으로 나가버리고. 준오는 영화를 따라가 자신의 마음을 솔직하게 고백한다. 영화는 잠시 흔... | 12회 | 1h 6m | |
| 00:47 | 낮에 뜨는 달함께 저주를 이겨내기로 하는 준오와 영화. 나연을 찾아가 정식으로 허락(?)을 받으려 하고. 준오는 큰스님을 찾아가 악귀를 소멸시킬 방법을 묻는다. 큰스님... | 13회 | 1h 7m | |
| 01:54 | 낮에 뜨는 달별장을 찾아온 철환과 마지막 결전을 펼치는 준오. 하지만 철환에 의해 크게 다치게 되고. 영화는 철환을 피해 숲으로 도망친다. 깜깜한 숲속에서 철환으로부... | 14회 | 1h 8m | |
| 03:02 | 낮에 뜨는 달출동한 현장에서 사망자가 나오지 않아 기적의 소방관이라 불리우는 영화. 종종 천오백년 전 과거의 악몽에 시달리지만 깨어나면 기억을 하지 못한다. 한편, ... | 1회 | 1h 6m | |
| 04:09 | 낮에 뜨는 달영화의 지박령인 영혼 도하가 빙의돼 되살아난 준오. 병실에서 영화를 바로 죽이려 하지만, 알 수 없는 힘으로 인해 실패하고. 무언가가 영화를 지키고 있음... | 2회 | 1h 10m | |
| 05:19 | 낮에 뜨는 달준오를 구한 일로 이달의 소방관으로 선정되는 영화. 남극파견을 앞두고 아빠의 수목장에 갔다가 한 암자에 들르게 되고. 그곳에서 만난 큰스님에게 팔찌를 ... | 3회 | 1h 9m | |
| 06:28 | 낮에 뜨는 달준오를 구하다 의식을 잃은 영화는 과거 전생의 일들을 꿈으로 꾸기 시작한다. (과거) 자신의 부모를 죽인 도하를 죽이기 위해 그의 저택에 침입한 한리타. ... | 4회 | 1h 9m | |
| 07:37 | 낮에 뜨는 달 On now준오(도하 빙의)는 영화가 진짜 자신을 알아본 것인지에 대한 혼란스러움을 느끼고. 또다시 전생의 꿈을 꾼 영화는 설마 자신이 준오를 좋아해서 그를 닮은 ... | 5회 | 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_f4jyrvdn/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_f4jyrvdn/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_f4jyrvdn/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_f4jyrvdn/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_f4jyrvdn/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_f4jyrvdn/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_f4jyrvdn/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_6538813y", "channel": "ch_f4jyrvdn", "start": "2026-10-12T14:41:38Z", "stop": "2026-10-12T15:47:46Z", "title": "낮에 뜨는 달", "sub_title": "12회", "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.