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_d74tk0jw/schedule?date=2026-10-12&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:47 | 야한사진관 4회금순의 죽음으로 인해 괴로워하는 봄을 곁에서 지켜주는 기주. 금순은 사진관의 귀객이 되어 기주를 찾아온다. 그러나 자신이 찾아왔다는 걸 비밀로 해달라고... | 1h 18m | ||
| 01:05 | 야한사진관 5회아주 간혹 발생하는 사진관 손님이 된 부작용으로 귀신들을 보게 된 봄. 고대리 백남구와도 처음으로 얼굴을 마주보고 인사한다. 기주는 봄의 눈을 고쳐주기 ... | 1h 19m | ||
| 02:23 | 야한사진관 6회대형 트럭 사고가 발생한 현장을 목격하게 된 봄. 현장에서 죽은 귀신들이 동시다발적으로 깨어나는 끔찍한 광경에 놀란 봄을 기주가 달랜다. 봄을 쉬게 하는... | 1h 18m | ||
| 03:41 | 야한사진관 7회세이프존을 하기로 약속한 후로 한 걸음 더 가까워진 봄과 기주. 그러나 서로 할 일에만 충실하자며 선 긋는 기주의 태도에 봄은 섭섭함을 감출 수가 없다. ... | 1h 18m | ||
| 04:59 | 야한사진관 8회악귀가 된 귀객에게 빙의되었던 봄을 가까스로 구한 기주. 백남구가 귀객을 내쫓는 사이 기주는 봄을 안정시킨다. 기주는 봄을 구하기 위해 억지로 망자의 문... | 1h 18m | ||
| 06:17 | 야한사진관 9회봄과 미래를 함께하기로 결심한 기주는 비밀연애를 시작한다. 한편, 나래의 외도 사실을 알게 된 백남구가 민현을 찾아간다. 그를 해치려는 찰나, 이를 눈치 ... | 1h 19m | ||
| 07:36 | 야한사진관 10회자신은 기주와의 미래를 생각했지만, 기주는 끝을 생각하고 있었다는 사실에 배신감을 느낀 봄은 크게 상처받는다. 하지만 2019년 별장 살인사건의 용의자이... | 1h 17m | ||
| 08:54 | 야한사진관 11회죽음의 위기를 겪고 다시 한 번 의지를 다지는 기주. 그 시각, 이현오의 인터뷰를 본 윤철이 이현오를 찾아간다. 이현오를 해치려는 찰나 서사장을 믿으라며 ... | 1h 17m | ||
| 10:11 | 야한사진관 12회봄은 사고 당시의 기억을 되찾는다. 기주는 자신 때문에 기원이 사고를 당했다고 생각하는 봄을 위로하고, 봄은 그에 힘입어 별장 살인사건과 장진터널사건의... | 1h 19m | ||
| 11:30 | 야한사진관 13회그동안 감춰져 있던 장진터널 사고와 별장 살인사건의 내막과 진범이 밝혀진다! 그 모든 일은 20년 전, 이선호가 자기가 낸 사고를 덮으려고 한 것에서 시작... | 1h 22m | ||
| 12:53 | 야한사진관 14회기주는 의식을 되찾고, 이선호는 옥상에서 떨어져 부상을 입은 채 체포된다. 사진관도 돌아오고, 무사히 35번째 생일파티를 하는 기주. 하지만 이제 더 이상 ... | 1h 22m | ||
| 14:14 | 야한사진관 15회백남구가 악귀와 함께 소멸되고, 사진관이 닫힌다. 이제 저주가 다 끝났다고 생각하는 기주. 민현에게 말을 전해들은 나래가 사진관을 찾아오고, 기주는 백남... | 1h 21m | ||
| 15:35 | 야한사진관 16회검은 달이 뜰 때 저승문이 열리고, 기회는 이번 한 번 뿐이라는 걸 알게 된 기주. 하지만 봄은 자신 때문에 기주를 저승에 보낼 수 없다. 둘의 언쟁은 지원이... | 1h 20m | ||
| 16:55 | 야한사진관 1회조상의 업으로 평생을 귀신에게 시달리며 35살까지 밖에 살지 못하는 저주에 걸린 서기주. 그는 100년간 이어져 온 밤에만 열리는 조금 특별한 ‘야한 사진관'... | 1h 17m | ||
| 18:12 | 야한사진관 2회죽은 사람이 아닌데 어떻게 사진관에 들어왔지? 여태껏 망자가 아닌 살아있는 사람이 사진관에 들어온 적은 없었는데! 봄의 갑작스러운 등장에 기주가 당황하... | 1h 13m | ||
| 19:25 | 야한사진관 3회봄에게 특별한 능력이 있다는 걸 확신하게 된 기주. 봄과 함께 있으면 봄과 기주 주변으로 원이 생기며 귀신들이 가까이 다가오지 못한다는 걸 깨닫고 봄과 ... | 1h 20m | ||
| 20:45 | 야한사진관 4회금순의 죽음으로 인해 괴로워하는 봄을 곁에서 지켜주는 기주. 금순은 사진관의 귀객이 되어 기주를 찾아온다. 그러나 자신이 찾아왔다는 걸 비밀로 해달라고... | 1h 18m | ||
| 22:03 | 야한사진관 5회아주 간혹 발생하는 사진관 손님이 된 부작용으로 귀신들을 보게 된 봄. 고대리 백남구와도 처음으로 얼굴을 마주보고 인사한다. 기주는 봄의 눈을 고쳐주기 ... | 1h 19m | ||
| 23:21 | 야한사진관 6회대형 트럭 사고가 발생한 현장을 목격하게 된 봄. 현장에서 죽은 귀신들이 동시다발적으로 깨어나는 끔찍한 광경에 놀란 봄을 기주가 달랜다. 봄을 쉬게 하는... | 1h 18m |
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_d74tk0jw/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_d74tk0jw/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_d74tk0jw/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_d74tk0jw/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_d74tk0jw/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_d74tk0jw/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_d74tk0jw/schedule?date=2026-10-12, the first programme { "data": [ { "id": "ls_ja346pwh", "channel": "ch_d74tk0jw", "start": "2026-10-11T14:47:51Z", "stop": "2026-10-11T16:05:23Z", "title": "야한사진관 4회", "sub_title": null, "description": "금순의 죽음으로 인해 괴로워하는 봄을 곁에서 지켜주는 기주. 금순은 사진관의 귀...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 19, "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 152 countries.