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_793s68fg/schedule?date=2026-10-15&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | 메카드볼 | 만화, 모험(adventure) | 15m | |
| 00:15 | 메카드볼 | 만화, 모험(adventure) | 15m | |
| 00:30 | 메카드볼 | 만화, 모험(adventure) | 15m | |
| 00:45 | 메카드볼 | 만화, 모험(adventure) | 15m | |
| 01:00 | 너랑 아이돌 프리큐어 | 만화, 명랑 | 30m | |
| 01:30 | 너랑 아이돌 프리큐어 | 만화, 명랑 | 30m | |
| 02:00 | 너랑 아이돌 프리큐어 | 만화, 명랑 | 30m | |
| 02:30 | 차징탑스피너BX | 만화, 명랑 | 15m | |
| 02:45 | 차징탑스피너BX | 만화, 명랑 | 15m | |
| 03:00 | 차징탑스피너BX | 만화, 명랑 | 15m | |
| 03:15 | 차징탑스피너BX | 만화, 명랑 | 15m | |
| 03:30 | 차징탑스피너BX | 만화, 명랑 | 15m | |
| 03:45 | 차징탑스피너BX | 만화, 명랑 | 15m | |
| 04:00 | 캐리야 학교가자 | 연예/오락, 일반 | 15m | |
| 04:15 | 캐리야 학교가자 | 연예/오락, 일반 | 15m | |
| 04:30 | 캐리야 학교가자 | 연예/오락, 일반 | 15m | |
| 04:45 | 캐리야 학교가자 | 연예/오락, 일반 | 15m | |
| 05:00 | 베이블레이드X | 만화, 액션/무협 | 30m | |
| 05:30 | 2026년 딜라이브기 초등학교 야구대회 | 스포츠, 야구 | 1h 30m | |
| 07:00 | 뚜식이 시즌6 | 만화, 코믹 | 30m | |
| 07:30 | 뚜식이 시즌6 | 만화, 코믹 | 30m | |
| 08:00 | 뚜식이 시즌6 | 만화, 코믹 | 30m | |
| 08:30 | 떴다! 버섯도리 챌린지 시즌2 | 연예/오락, 버라이어티 | 30m | |
| 09:00 | 시크릿 쥬쥬 별의 보석 | 만화, 명랑 | 15m | |
| 09:15 | 시크릿 쥬쥬 별의 보석 | 만화, 명랑 | 15m | |
| 09:30 | 시크릿 쥬쥬 별의 보석 | 만화, 명랑 | 15m | |
| 09:45 | 시크릿 쥬쥬 별의 보석 | 만화, 명랑 | 15m | |
| 10:00 | 2026년 딜라이브기 초등학교 야구대회 | 스포츠, 야구 | 2h | |
| 12:00 | 아이 Quiz 시즌2 | 교육, 영어 | 15m | |
| 12:15 | 아이 Quiz 시즌2 | 교육, 영어 | 15m | |
| 12:30 | 아이 Quiz 시즌2 | 교육, 영어 | 15m | |
| 12:45 | 아이 Quiz 시즌2 | 교육, 영어 | 15m | |
| 13:00 | 지구의 주인은 고양이다 | 만화, 명랑 | 15m | |
| 13:15 | 지구의 주인은 고양이다 | 만화, 명랑 | 15m | |
| 13:30 | 지구의 주인은 고양이다 | 만화, 명랑 | 15m | |
| 13:45 | 지구의 주인은 고양이다 | 만화, 명랑 | 15m | |
| 14:00 | 헬로카봇 시즌6 | 만화, 모험(adventure) | 15m | |
| 14:15 | 헬로카봇 시즌6 | 만화, 모험(adventure) | 15m | |
| 14:30 | 헬로카봇 시즌6 | 만화, 모험(adventure) | 15m | |
| 14:45 | 헬로카봇 시즌6 | 만화, 모험(adventure) | 15m | |
| 15:00 | 삼색&리리 멍냥연구소 시즌3 | 만화, 코믹 | 15m | |
| 15:15 | 삼색&리리 멍냥연구소 시즌3 | 만화, 코믹 | 15m | |
| 15:30 | 삼색&리리 멍냥연구소 시즌3 | 만화, 코믹 | 15m | |
| 15:45 | 삼색&리리 멍냥연구소 시즌3 | 만화, 코믹 | 15m | |
| 16:00 | 베이블레이드X 시즌3 | 만화, 액션/무협 | 30m | |
| 16:30 | 베이블레이드X 시즌3 | 만화, 액션/무협 | 30m | |
| 17:00 | 백앤아 남매튜브 시즌3 | 연예/오락, 일반 | 30m | |
| 17:30 | 백앤아 남매튜브 시즌3 | 연예/오락, 일반 | 30m | |
| 18:00 | 파워레인저 애니멀포스 | 드라마, 어린이 | 30m | |
| 18:30 | 파워레인저 애니멀포스 | 드라마, 어린이 | 30m | |
| 19:00 | 떴다! 버섯도리 챌린지 시즌2 | 연예/오락, 버라이어티 | 30m | |
| 19:30 | 떴다! 버섯도리 챌린지 시즌2 | 연예/오락, 버라이어티 | 30m | |
| 20:00 | 버섯도리 패밀리 대작전 시즌4 | 연예/오락, 일반 | 30m | |
| 20:30 | 버섯도리 패밀리 대작전 시즌4 | 연예/오락, 일반 | 30m | |
| 21:00 | 버섯도리 패밀리 대작전 시즌4 | 연예/오락, 일반 | 30m | |
| 21:30 | 버섯도리 패밀리대작전 시즌3 | 연예/오락, 일반 | 30m | |
| 22:00 | 2026년 딜라이브기 초등학교 야구대회 | 스포츠, 야구 | 2h |
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_793s68fg/schedule?date=2026-10-15&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_793s68fg/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_793s68fg/history?from=2025-10-12T00:00:00Z&to=2025-10-13T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_793s68fg/schedule?date=2026-10-15&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_793s68fg/schedule?date=2026-10-15&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_793s68fg/schedule", params={"date": "2026-10-15", "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_793s68fg/schedule?date=2026-10-15, the first programme { "data": [ { "id": "ls_dt9t5mtj", "channel": "ch_793s68fg", "start": "2026-10-14T15:00:00Z", "stop": "2026-10-14T15:15:00Z", "title": "메카드볼", "sub_title": null, "description": null, "category": [ "만화", "모험(adventure)" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 57, "date": "2026-10-15", "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 |
|---|---|---|
| 23:50 | 헬로카봇12 스페셜 | 만화, 모험(adventure) |
| 00:15 | 헬로카봇12 스페셜 | 만화, 모험(adventure) |
| 00:25 | 헬로카봇12 스페셜 | 만화, 모험(adventure) |
| 62 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.