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_38fh7zg1/schedule?date=2026-10-12&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:37 | <화질좋지!> SKY프로리그2006전기리그이승훈 VS 이재호 | 42m | ||
| 00:19 | <화질좋지!> SKY프로리그2006전기리그김윤환 VS 박성균 | 34m | ||
| 00:53 | <화질좋지!> SKY프로리그2006전기리그조용호 VS 이윤열 | 30m | ||
| 01:23 | <화질좋지!> SKY프로리그2006전기리그박정석,홍진호 VS 안기효,심소명 | 21m | ||
| 01:44 | <화질좋지!> SKY프로리그2006전기리그강민 VS 안석열 | 31m | ||
| 02:15 | <화질좋지!> SKY프로리그2006전기리그이병민 VS 나도현 | 31m | ||
| 02:46 | <화질좋지!> SKY프로리그2006전기리그박성훈,이창훈 VS 신정민,주진철 | 28m | ||
| 03:14 | <화질좋지!> SKY프로리그2006전기리그박정석 VS 이제동 | 19m | ||
| 03:33 | <화질좋지!> SKY프로리그2006전기리그김세현 VS 오영종 | 42m | ||
| 04:15 | <화질좋지!> SKY프로리그2006전기리그강민,홍진호 VS 김성곤,김민제 | 22m | ||
| 04:37 | <화질좋지!> SKY프로리그2006전기리그이병민 VS 이학주 | 24m | ||
| 05:01 | <화질좋지!> SKY프로리그2006전기리그손영훈 VS 서기수 | 23m | ||
| 05:48 | <화질좋지!> SKY프로리그2006전기리그김재춘,한동훈 VS 김강호,정영주 | 28m | ||
| 06:15 | <화질좋지!> SKY프로리그2006전기리그이윤열 VS 김원기 | 50m | ||
| 07:05 | <화질좋지!> SKY프로리그2006전기리그김윤환 VS 염보성 | 16m | ||
| 07:21 | <화질좋지!> SKY프로리그2006전기리그방성진,김선묵 VS 정영철,김택용 | 33m | ||
| 07:54 | <화질좋지!> SKY프로리그2006전기리그한승엽 VS 박성준 | 1h 1m | ||
| 08:55 | <화질좋지!> SKY프로리그2006전기리그한승엽 VS 박지호 | 55m | ||
| 09:49 | <화질좋지!> SKY프로리그2006전기리그박용욱 VS 설현호 | 35m | ||
| 10:25 | <화질좋지!> SKY프로리그2006전기리그김성제 VS 박경락 | 31m | ||
| 10:56 | <화질좋지!> SKY프로리그2006전기리그성학승,전상욱 VS 김준영,박대만 | 36m | ||
| 11:32 | <화질좋지!> SKY프로리그2006전기리그최연성 VS 윤용태 | 27m | ||
| 11:59 | <화질좋지!> SKY프로리그2006전기리그박태민 VS 채지훈 | 38m | ||
| 12:37 | <화질좋지!> SKY프로리그2006전기리그김원기 VS 이재호 | 49m | ||
| 13:26 | <화질좋지!> SKY프로리그2006전기리그김동진 VS 박성준 | 30m | ||
| 13:56 | <화질좋지!> SKY프로리그2006전기리그정영주,김강호 VS 김동현,문준희 | 21m | ||
| 14:17 | <화질좋지!> SKY프로리그2006전기리그서기수 VS 정영철 | 31m | ||
| 14:48 | <화질좋지!> SKY프로리그2006전기리그김윤환 VS 박영민 | 19m | ||
| 15:07 | <화질좋지!> SKY프로리그2006전기리그강민,홍진호 VS 이주영,김환중 | 42m | ||
| 15:49 | <화질좋지!> SKY프로리그2006전기리그조용호 VS 서지훈 | 45m | ||
| 16:35 | <화질좋지!> SKY프로리그2006전기리그이재항 VS 박성훈 | 30m | ||
| 17:05 | <화질좋지!> SKY프로리그2006전기리그심소명 VS 변은종 | 18m | ||
| 17:23 | <화질좋지!> SKY프로리그2006전기리그안기효,나도현 VS 이창훈,이재황 | 25m | ||
| 17:48 | <화질좋지!> SKY프로리그2006전기리그이윤열 VS 송병구 | 41m | ||
| 18:28 | <화질좋지!> SKY프로리그2006전기리그이윤열 VS 이현승 | 38m | ||
| 19:06 | <화질좋지!> SKY프로리그2006전기리그안상원 VS 오영종 | 53m | ||
| 19:59 | <화질좋지!> SKY프로리그2006전기리그한동욱 VS 이제동 | 26m | ||
| 20:25 | <화질좋지!> SKY프로리그2006전기리그박정길,이진성 VS 김민제,김성곤 | 20m | ||
| 20:46 | <화질좋지!> SKY프로리그2006전기리그이제동 VS 이윤열 | 34m | ||
| 21:19 | <화질좋지!> SKY프로리그2006전기리그김성곤,오영종 VS 심소명,안기효 | 36m | ||
| 21:55 | <화질좋지!> SKY프로리그2006전기리그김정환 VS 김재춘 | 24m | ||
| 22:19 | <화질좋지!> SKY프로리그2006전기리그이학주 VS 이윤열 | 43m | ||
| 23:02 | <화질좋지!> SKY프로리그2006전기리그고인규 VS 차재욱 | 52m | ||
| 23:54 | <화질좋지!> SKY프로리그2006전기리그최연성 VS 전태규 | 1h |
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_38fh7zg1/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_38fh7zg1/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_38fh7zg1/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_38fh7zg1/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_38fh7zg1/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_38fh7zg1/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_38fh7zg1/schedule?date=2026-10-12, the first programme { "data": [ { "id": "ls_v0j6xr3h", "channel": "ch_38fh7zg1", "start": "2026-10-11T14:37:40Z", "stop": "2026-10-11T15:19:37Z", "title": "<화질좋지!> SKY프로리그2006전기리그", "sub_title": null, "description": "이승훈 VS 이재호", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 44, "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 155 countries.