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-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:21 | 야한사진관 6회대형 트럭 사고가 발생한 현장을 목격하게 된 봄. 현장에서 죽은 귀신들이 동시다발적으로 깨어나는 끔찍한 광경에 놀란 봄을 기주가 달랜다. 봄을 쉬게 하는... | 1h 18m | ||
| 00:39 | 야한사진관 7회세이프존을 하기로 약속한 후로 한 걸음 더 가까워진 봄과 기주. 그러나 서로 할 일에만 충실하자며 선 긋는 기주의 태도에 봄은 섭섭함을 감출 수가 없다. ... | 1h 18m | ||
| 01:57 | 야한사진관 8회악귀가 된 귀객에게 빙의되었던 봄을 가까스로 구한 기주. 백남구가 귀객을 내쫓는 사이 기주는 봄을 안정시킨다. 기주는 봄을 구하기 위해 억지로 망자의 문... | 1h 18m | ||
| 03:15 | 야한사진관 9회봄과 미래를 함께하기로 결심한 기주는 비밀연애를 시작한다. 한편, 나래의 외도 사실을 알게 된 백남구가 민현을 찾아간다. 그를 해치려는 찰나, 이를 눈치 ... | 1h 19m | ||
| 04:34 | 야한사진관 10회자신은 기주와의 미래를 생각했지만, 기주는 끝을 생각하고 있었다는 사실에 배신감을 느낀 봄은 크게 상처받는다. 하지만 2019년 별장 살인사건의 용의자이... | 1h 17m | ||
| 05:51 | 야한사진관 11회죽음의 위기를 겪고 다시 한 번 의지를 다지는 기주. 그 시각, 이현오의 인터뷰를 본 윤철이 이현오를 찾아간다. 이현오를 해치려는 찰나 서사장을 믿으라며 ... | 1h 17m | ||
| 07:09 | 야한사진관 12회 On now봄은 사고 당시의 기억을 되찾는다. 기주는 자신 때문에 기원이 사고를 당했다고 생각하는 봄을 위로하고, 봄은 그에 힘입어 별장 살인사건과 장진터널사건의... | 1h 19m |
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-13&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-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_d74tk0jw/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_d74tk0jw/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_d74tk0jw/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_d74tk0jw/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_x4aqvk7y", "channel": "ch_d74tk0jw", "start": "2026-10-12T14:21:48Z", "stop": "2026-10-12T15:39:30Z", "title": "야한사진관 6회", "sub_title": null, "description": "대형 트럭 사고가 발생한 현장을 목격하게 된 봄. 현장에서 죽은 귀신들이 동시다...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 7, "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.