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_zxhzf022/schedule?date=2026-10-11&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | 오늘 취업 어때 | 교양/정보, 일반 | 30m | |
| 00:30 | 오늘 취업 어때 | 교양/정보, 일반 | 30m | |
| 01:00 | 투데이 JOBS 3.0 | 교양/정보, 일반 | 1h | |
| 02:00 | 라이선스 마스터 | 교양/정보, 일반 | 1h | |
| 03:00 | 라이선스 마스터 | 교양/정보, 일반 | 1h | |
| 04:00 | 라이선스 마스터 | 교양/정보, 일반 | 1h | |
| 05:00 | 강의쇼 청산유수 | 교양/정보, 일반 | 30m | |
| 05:30 | 강의쇼 청산유수 | 교양/정보, 일반 | 30m | |
| 06:00 | 생존특강 | 교양/정보, 일반 | 30m | |
| 06:30 | 취업비사 | 교양/정보, 일반 | 30m | |
| 07:00 | 다큐스페셜 | 시사/다큐, 일반 | 30m | |
| 07:30 | 스케치뷰 | 교양/정보, 일반 | 15m | |
| 07:45 | 미니다큐 아름다운 사람들우리 사는 세상을 좀 더 아름 답게 만들어 주는 우리 주변에 숨어 있는 선행을 하는 소중한 이웃들을 찾아 소개하는 프로그램 | 시사/다큐, 라이프/휴먼 | 15m | |
| 08:00 | 꼬리공탕 | 교양/정보, 일반 | 30m | |
| 08:30 | 다쓰배이더 | 교양/정보, 일반 | 30m | |
| 09:00 | 호모디지쿠스 | 교양/정보, 일반 | 30m | |
| 09:30 | 리부팅 지방시대 | 교양/정보, 일반 | 15m | |
| 09:45 | 생존특강 시즌2 | 교양/정보, 일반 | 15m | |
| 10:00 | 하모니 | 교양/정보, 일반 | 30m | |
| 10:30 | 북큐 어떤작가동네책방 | 교양/정보, 일반 | 15m | |
| 10:45 | 행복한일 시즌3 | 교양/정보, 일반 | 15m | |
| 11:00 | 대신맨 | 교양/정보, 일반 | 30m | |
| 11:30 | 레드존 리뷰실제 안전사고 사례를 토크와 스토리텔링 형식으로 풀어내는 프로그램 | 교양/정보, 일반 | 30m | |
| 12:00 | 취미로 먹고 산다 시즌2 | 교양/정보, 일반 | 30m | |
| 12:30 | 명물인생 시즌9 | 교양/정보, 일반 | 30m | |
| 13:00 | 아트온에어 | 교양/정보, 일반 | 30m | |
| 13:30 | 아트온에어 | 교양/정보, 일반 | 30m | |
| 14:00 | 스케치뷰 | 교양/정보, 일반 | 15m | |
| 14:15 | 풍경여지도 | 교양/정보, 일반 | 15m | |
| 14:30 | 김수진의 잡인뉴욕뉴욕에 사는 직장인 밀착인터뷰 | 교양/정보, 일반 | 30m | |
| 15:00 | 위대한 삼촌 로컬 히어로의 탄생 | 연예/오락, 라이프·휴먼 | 30m | |
| 15:30 | 위대한 삼촌 로컬 히어로의 탄생 | 연예/오락, 라이프·휴먼 | 30m | |
| 16:00 | 위대한 삼촌 로컬 히어로의 탄생 | 연예/오락, 라이프·휴먼 | 30m | |
| 16:30 | 위대한 삼촌 로컬 히어로의 탄생 | 연예/오락, 라이프·휴먼 | 30m | |
| 17:00 | 위대한 삼촌 로컬 히어로의 탄생 | 연예/오락, 라이프·휴먼 | 30m | |
| 17:30 | 취미로 먹고 산다 시즌2 | 교양/정보, 일반 | 30m | |
| 18:00 | 취미로 먹고 산다 시즌2 | 교양/정보, 일반 | 30m | |
| 18:30 | 취미로 먹고 산다 시즌2 | 교양/정보, 일반 | 30m | |
| 19:00 | 취미로 먹고 산다 시즌2 | 교양/정보, 일반 | 30m | |
| 19:30 | 취미로 먹고 산다 시즌2 | 교양/정보, 일반 | 30m | |
| 20:00 | 라이선스 마스터 | 교양/정보, 일반 | 1h | |
| 21:00 | 2026 국제기후 포럼 | 교양/정보, 일반 | 1h | |
| 22:00 | 2026 국제기후 포럼 | 교양/정보, 일반 | 1h | |
| 23:00 | 2026 국제기후 포럼 | 교양/정보, 일반 | 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_zxhzf022/schedule?date=2026-10-11&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_zxhzf022/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_zxhzf022/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_zxhzf022/schedule?date=2026-10-11&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_zxhzf022/schedule?date=2026-10-11&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_zxhzf022/schedule", params={"date": "2026-10-11", "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_zxhzf022/schedule?date=2026-10-11, the first programme { "data": [ { "id": "ls_67crcb4g", "channel": "ch_zxhzf022", "start": "2026-10-10T15:00:00Z", "stop": "2026-10-10T15:30:00Z", "title": "오늘 취업 어때", "sub_title": null, "description": null, "category": [ "교양/정보", "일반" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 44, "date": "2026-10-11", "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 | Monday 13 October 2025 | Category |
|---|---|---|
| 00:00 | 공인자격증 완전정복 | 교양/정보, 일반 |
| 01:00 | 투데이 JOBS 3.0 | 교양/정보, 일반 |
| 02:00 | 라이선스 마스터 | 교양/정보, 일반 |
| 35 more programmes that day, on Archive | ||
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.