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_vg30xwv1/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:51 | 세계 예술가들의 발자취를 따라서! 유럽으로 떠나는 미술 투어#톡파원25시 #해외여행 #이탈리아 #스페인 #프랑스 | 2h 16m | ||
| 01:59 | 도쿄부터 방콕까지! 톡파원이 알려주는 가성비 여행#톡파원25시 #방콕 #도쿄 | 47m | ||
| 02:07 | 겨울에 가장 아름다운♥ 찬 바람 불면 생각나는 여행지 모아보기#톡파원25시 #겨울여행 #해외여행 #유럽 | 1h 14m | ||
| 02:46 | 뉴욕에서 만난 이찬원? 해외에서 만나 더 반가운 K-연예인#톡파원25시 #이찬원 #스트레이키즈 #SM | 1h 24m | ||
| 04:10 | 이찬원 도파민 대폭발! 해외판 사랑과 전쟁#이탈리아 #프랑스 #이찬원 | 1h | ||
| 05:10 | 진짜 싸우는 거 맞습니다..^^ 톡파원 외국인들 또 싸움 On now#톡파원25시 #다니엘 #알베르토 #알파고 | 1h 40m | ||
| 06:50 | 톡파원으로 알아보는 독립 투쟁의 역사#톡파원25시 #광복80주년 #안창호 #김구 #추푸청 | 52m | ||
| 07:42 | 연예인급 인기! 꼭 봐야 하는 ♥스타 동물♥#톡파원25시 #중국 #태국 | 1h 3m |
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_vg30xwv1/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_vg30xwv1/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_vg30xwv1/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_vg30xwv1/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_vg30xwv1/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_vg30xwv1/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_vg30xwv1/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_tedg301p", "channel": "ch_vg30xwv1", "start": "2026-10-12T14:51:43Z", "stop": "2026-10-12T17:07:49Z", "title": "세계 예술가들의 발자취를 따라서! 유럽으로 떠나는 미술 투어", "sub_title": null, "description": "#톡파원25시 #해외여행 #이탈리아 #스페인 #프랑스", "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.