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_199ncxq3/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:40 | 남북의 창북한의 일방적인 선전.선동 전달 대신 그 이면의 배경과 의도를 분석하고 천안함.금강산.개성.북핵 등 변화하는 남북관계에 능동적으로 대처하며, 남북 간(In... | 40m | ||
| 00:20 | 일요진단 라이브역동적인 정치토크와 품격있는 시사대담! 이슈의 친절한 안내자! | 1h | ||
| 01:20 | KBS 네트워크우리나라 지도를 펼쳐보면 아직 가보지 못한 곳 만나지 못한 사람들 많으시죠? KBS 부산, 창원, 대구, 광주, 청주, 춘천, 제주 싸릿문 활짝 열어두고 여전히 ... | 50m | ||
| 02:10 | 머니올라코로나 사태 후폭풍으로 경제 위기가 진행되는 상황에서 국제 경제, 금융, 환율, 증시, 부동산, 유가 등 경제 핵심 이슈들을 분석해 시청자들의 궁금증을 풀... | 1h | ||
| 03:10 | 크랩KBS가 만드는 젊고 신박한 뉴스 | 10m | ||
| 03:20 | KBS 네트워크전국 곳곳의 사람 사는 향기, 지역 곳곳의 사는 이야기를 전해드립니다.네트워크 강력추천 여행정보, 지역의 맛있는 먹을거리 정보, KBS 부산, 창원, 대구, ... | 40m | ||
| 04:00 | KBS 재난방송센터국민의 생명과 재산을 지키기 위한 재난과 안전 관련 정보를 제공한다. 한 주간의 재난안전 관련 주요 이슈를 분석하는 '재난안전 이슈', 방송되는 시기에 발... | 10m | ||
| 04:10 | KBS 네트워크전국 곳곳의 사람 사는 향기, 지역 곳곳의 사는 이야기를 전해드립니다.네트워크 강력추천 여행정보, 지역의 맛있는 먹을거리 정보, KBS 부산, 창원, 대구, ... | 50m | ||
| 05:00 | 시사기획 창기존 뉴스프로의 한계를 뛰어넘어 저널리즘이 살아있고 우리 사회의 어젠다를 설정할 수 있는 시사다큐멘터리의 새 영역을 개척함. | 50m | ||
| 05:50 | 크랩KBS가 만드는 젊고 신박한 뉴스 | 10m | ||
| 06:00 | KBS 뉴스광장 On now다양한 시청자 요구를 충족하기 위해 대중문화, 디지털 등 뉴스 콘텐츠 강화현장성 높이기 위해 중계차, 화상연결, 뉴스 브리핑 등 내용 다양화 | 1h 50m | ||
| 07:50 | KBS 뉴스광장(재방송)다양한 시청자 요구를 충족하기 위해 대중문화, 디지털 등 뉴스 콘텐츠 강화 현장성 높이기 위해 중계차, 화상연결, 뉴스 브리핑 등 내용 다양화 | 1h 40m |
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_199ncxq3/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_199ncxq3/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_199ncxq3/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_199ncxq3/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_199ncxq3/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_199ncxq3/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_199ncxq3/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_2t0nmxqb", "channel": "ch_199ncxq3", "start": "2026-10-12T14:40:00Z", "stop": "2026-10-12T15:20:00Z", "title": "남북의 창", "sub_title": null, "description": "북한의 일방적인 선전.선동 전달 대신 그 이면의 배경과 의도를 분석하고 천안함....", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 12, "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.