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. Search any past day on the Archive plan.
All times Asia/Seoul. The same day from the API: GET /v1/channels/ch_2n2aywz6/schedule?date=2026-10-14&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | 잉글리쉬 페이션트 | 영화, 멜로 | 1h 10m | |
| 01:10 | 만지 : 미츠코의 덫 | 영화, 멜로 | 1h | |
| 02:10 | 만지 : 미츠코의 덫 | 영화, 멜로 | 1h | |
| 03:10 | 야관문 : 욕망의 꽃퇴임한 후 칩거 중인 70대 노인과 그를 간병하기 위해 찾아온 비밀스러운 여인의 위험한 사랑과 숨겨진 비밀을 그린 파격적인 로맨스. 퇴임한 후 칩거 중인 7... | 영화, 멜로 | 50m | |
| 04:00 | 야관문 : 욕망의 꽃퇴임한 후 칩거 중인 70대 노인과 그를 간병하기 위해 찾아온 비밀스러운 여인의 위험한 사랑과 숨겨진 비밀을 그린 파격적인 로맨스. 퇴임한 후 칩거 중인 7... | 영화, 멜로 | 1h | |
| 05:00 | 네 무덤에 침을 뱉어라 2죽음의 문턱에서 그녀의 잔혹한 복수는 시작된다! 죽음의 문턱에서 그녀의 잔혹한 복수는 시작된다! | 영화, 미스터리/스릴러 | 1h | |
| 06:00 | 네 무덤에 침을 뱉어라 2죽음의 문턱에서 그녀의 잔혹한 복수는 시작된다! 죽음의 문턱에서 그녀의 잔혹한 복수는 시작된다! | 영화, 미스터리/스릴러 | 1h | |
| 07:00 | 하이킥 시즌1하이킥으로 쌈질을 잘하고 모토싸이클 마니아며 학업을 혐오하는 동생 이윤호(정일우)와, 프라모델과 싸이를 즐기는 공부1등 형 이민호(김혜성)는 한살 터울... | 드라마, 시트콤 | 30m | |
| 07:30 | 하이킥 시즌1하이킥으로 쌈질을 잘하고 모토싸이클 마니아며 학업을 혐오하는 동생 이윤호(정일우)와, 프라모델과 싸이를 즐기는 공부1등 형 이민호(김혜성)는 한살 터울... | 드라마, 시트콤 | 30m | |
| 08:00 | 사노라면서민들의 소소하지만 위대한 일상을 통해 삶의 비법을 풀어가는 보통 사람들의 특별한 이야기. 서민들의 소소하지만 위대한 일상을 통해 삶의 비법을 풀어가... | 시사/다큐, 라이프/휴먼 | 1h | |
| 09:00 | 인생상담소 | 교양/정보, 일반 | 1h | |
| 10:00 | 나는 자연인이다자신들만의 방식으로 자연속에서 살아가는 자연인을 찾아가서 그들의 삶을 직접 체험해보는 리얼휴먼스토리. 자신들만의 방식으로 자연속에서 살아가는 자연... | 교양/정보, 일반 | 1h | |
| 11:00 | 나는 자연인이다자신들만의 방식으로 자연속에서 살아가는 자연인을 찾아가서 그들의 삶을 직접 체험해보는 리얼휴먼스토리. 자신들만의 방식으로 자연속에서 살아가는 자연... | 교양/정보, 일반 | 1h | |
| 12:00 | 스톨른 | 영화, 액션 | 1h | |
| 13:00 | 스톨른 | 영화, 액션 | 1h | |
| 14:00 | 황야의 들개들 | 영화, 서부 | 50m | |
| 14:50 | 황야의 들개들 | 영화, 서부 | 1h | |
| 15:50 | 특종세상세상곳곳의 놀라운 이야기, 소문 속의 진실, 휴먼 스토리 등 살아 숨쉬는 특종 현장을 보여준다. 세상곳곳의 놀라운 이야기, 소문 속의 진실, 휴먼 스토리 등... | 교양/정보, 일반 | 1h | |
| 16:50 | 특종세상세상곳곳의 놀라운 이야기, 소문 속의 진실, 휴먼 스토리 등 살아 숨쉬는 특종 현장을 보여준다. 세상곳곳의 놀라운 이야기, 소문 속의 진실, 휴먼 스토리 등... | 교양/정보, 일반 | 1h | |
| 17:50 | 드라이브 앵그리 | 영화, 액션 | 1h | |
| 18:50 | 드라이브 앵그리 | 영화, 액션 | 1h | |
| 19:50 | 디스트로이어연인의 죽음, 돌아온 범인, 17년 복수의 시작. 연인의 죽음, 돌아온 범인, 17년 복수의 시작. | 영화, 미스터리/스릴러 | 1h | |
| 20:50 | 디스트로이어연인의 죽음, 돌아온 범인, 17년 복수의 시작. 연인의 죽음, 돌아온 범인, 17년 복수의 시작. | 영화, 미스터리/스릴러 | 1h 10m | |
| 22:00 | 특수요원S | 영화, 액션 | 1h | |
| 23:00 | 특수요원S | 영화, 액션 | 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_2n2aywz6/schedule?date=2026-10-14&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_2n2aywz6/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_2n2aywz6/history?from=2025-10-12T00:00:00Z&to=2025-10-13T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_2n2aywz6/schedule?date=2026-10-14&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_2n2aywz6/schedule?date=2026-10-14&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_2n2aywz6/schedule", params={"date": "2026-10-14", "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_2n2aywz6/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_6ehz33ya", "channel": "ch_2n2aywz6", "start": "2026-10-13T15:00:00Z", "stop": "2026-10-13T16:10:00Z", "title": "잉글리쉬 페이션트", "sub_title": null, "description": null, "category": [ "영화", "멜로" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 25, "date": "2026-10-14", "tz": "Asia/Seoul" } }
What was on, on any date we hold: for research, catch-up, clip finding or proving a broadcast. Any window up to 31 days with /v1/channels/{id}/history on the Archive plan.
| Time | Sunday 12 October 2025 | Category |
|---|---|---|
| Nothing held for that day. Try another date. | ||
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.