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_epgj7a8q/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:18 | 구필수는 없다치킨집에 손님이 줄어 고민에 빠진 필수. 설상가상으로 성미가 들어선 안 될 이야기가 성미의 귀에 들어가고 만다. 이런 갑갑한 상황에서 필수는 은호에게 위... | 5회 | 1h 14m | |
| 00:32 | 구필수는 없다만금과 새 계약을 체결한 필수. 두 번째 담보 ‘구두' 주인 찾기에 나서는데 아무도 그의 소식을 아는 자가 없고 막막하기만 하다. 필수가 담보 찾느라 정신없... | 6회 | 1h 11m | |
| 01:42 | 구필수는 없다닫힌 앱을 보며 한숨 쉬던 정석은 만금에게 받은 반쪽짜리 수표를 보며 의지를 다지고, 만금이 준 미션을 해결하기 위해 필수와 함께 고군분투한다. 담보를 ... | 7회 | 1h 13m | |
| 02:56 | 구필수는 없다필수 앞에서 서로를 모른 척한 은호와 성미. 은호는 은호대로, 성미는 성미대로 생각이 많아진다. 이 사실을 모르는 필수는 정석과 함께 세중이 엄마 추억 찾... | 8회 | 1h 11m | |
| 04:07 | 구필수는 없다동네친구24의 재탄생과 동시에 큰 미션이 주어진다. VC지니 투자 공모전 도전을 위해 유저 수를 늘려야 하는 상황! 필수는 특별한 일일호프를 하자고 제안하... | 9회 | 1h 18m | |
| 05:25 | 구필수는 없다 On now실패한 줄 알았던 ‘Back to the 2002' 행사가 다시 주목을 받게 되고 덕분에 필수의 치킨집도 대박이 난다. 그렇게 잠시 행복을 누리던 찰나 필수 앞에 또 다... | 10회 | 1h 14m | |
| 06:39 | 구필수는 없다얼떨결에 은호네 집에 가게 된 성미. 두 사람 사이에는 묘한 기류가 흐른다. 한편, VC지니에 면접을 보러 간 동네친구24! 면접관은 다름 아닌 유진이다. 유진... | 11회 | 1h 15m | |
| 07:54 | 구필수는 없다은호와 성미가 대학 동창이라는 사실을 알게 된 필수는 은호를 저택으로 초대한다. 은호의 말실수로 세 사람 사이에 흐르는 긴장감! 연이은 샤론의 말실수로 ... | 12회 | 1h 10m |
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_epgj7a8q/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_epgj7a8q/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_epgj7a8q/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_epgj7a8q/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_epgj7a8q/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_epgj7a8q/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_epgj7a8q/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_0r2aey3v", "channel": "ch_epgj7a8q", "start": "2026-10-12T14:18:55Z", "stop": "2026-10-12T15:32:25Z", "title": "구필수는 없다", "sub_title": "5회", "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.