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_j7bqpcnn/schedule?date=2026-10-19&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | 원피스 NEW-엘바프 편 | 만화, 모험(adventure) | 30m | |
| 00:30 | [자막] 원피스 ORIGINAL 13기-임펠다운 편 | 만화, 모험(adventure) | 30m | |
| 01:00 | [자막] 원피스 ORIGINAL 13기-임펠다운 편 | 만화, 모험(adventure) | 30m | |
| 01:30 | [자막] 원피스 ORIGINAL 13기-임펠다운 편 | 만화, 모험(adventure) | 30m | |
| 02:00 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 30m | |
| 02:30 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 30m | |
| 03:00 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 20m | |
| 03:20 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 20m | |
| 03:40 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 20m | |
| 04:00 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 20m | |
| 04:20 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 20m | |
| 04:40 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 20m | |
| 05:00 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 30m | |
| 05:30 | [자막] 용족 -The Blazing Dawn-(중국어) | 만화, 액션/무협 | 30m | |
| 06:00 | 올림포스 가디언TV 애니메이션 lt;그리스 로마 신화-올림포스 가디언gt;은 무엇보다 사나리오가 재미있다. 원작 만화를 손쉽게 영상화하지 않고, 무수히 많은 이야기들 중에 ... | 만화, 모험(adventure) | 30m | |
| 06:30 | 올림포스 가디언TV 애니메이션 lt;그리스 로마 신화-올림포스 가디언gt;은 무엇보다 사나리오가 재미있다. 원작 만화를 손쉽게 영상화하지 않고, 무수히 많은 이야기들 중에 ... | 만화, 모험(adventure) | 30m | |
| 07:00 | 비밀의 아이프리 | 만화, 명랑 | 30m | |
| 07:30 | 비밀의 아이프리 | 만화, 명랑 | 30m | |
| 08:00 | 넘버블록스 | 교육, 유아 | 15m | |
| 08:15 | 넘버블록스 | 교육, 유아 | 15m | |
| 08:30 | 넘버블록스 | 교육, 유아 | 15m | |
| 08:45 | 넘버블록스 | 교육, 유아 | 15m | |
| 09:00 | 넘버블록스 | 교육, 유아 | 15m | |
| 09:15 | 넘버블록스 | 교육, 유아 | 15m | |
| 09:30 | 넘버블록스 | 교육, 유아 | 15m | |
| 09:45 | 넘버블록스 | 교육, 유아 | 15m | |
| 10:00 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 10:15 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 10:30 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 10:45 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 11:00 | 빨강머리 앤의 다이어리-2시간 연속 극장 | 만화, 순정 | 2h | |
| 13:00 | 빨강머리 앤의 다이어리-2시간 연속 극장 | 만화, 순정 | 2h | |
| 15:00 | 안녕 자두야5 | 만화, 명랑 | 30m | |
| 15:30 | 안녕 자두야5 | 만화, 명랑 | 30m | |
| 16:00 | 빨간내복야코 | 만화, 명랑 | 15m | |
| 16:15 | 빨간내복야코 | 만화, 명랑 | 15m | |
| 16:30 | 빨간내복야코 | 만화, 명랑 | 15m | |
| 16:45 | 빨간내복야코 | 만화, 명랑 | 15m | |
| 17:00 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 17:15 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 17:30 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 17:45 | 슈팅스타 캐치! 티니핑 | 만화, 명랑 | 15m | |
| 18:00 | 신 도라에몽 25기 | 만화, 명랑 | 30m | |
| 18:30 | 신 도라에몽 25기 | 만화, 명랑 | 30m | |
| 19:00 | [극장판] 짱구는 못말려 No.29 수수께끼! 꽃피는 천하떡잎학교 | 영화, 애니메이션 | 2h | |
| 21:00 | 명탐정 코난 8 | 만화, 탐정 | 30m | |
| 21:30 | 명탐정 코난 8 | 만화, 탐정 | 30m | |
| 22:00 | 명탐정 코난 8 | 만화, 탐정 | 30m | |
| 22:30 | 명탐정 코난 8 | 만화, 탐정 | 30m | |
| 23:00 | 명탐정 코난 8 | 만화, 탐정 | 20m | |
| 23:20 | 명탐정 코난 8 | 만화, 탐정 | 20m | |
| 23:40 | 명탐정 코난 8 | 만화, 탐정 | 20m |
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_j7bqpcnn/schedule?date=2026-10-19&tz=Asia/Seoul" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_j7bqpcnn/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_j7bqpcnn/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_j7bqpcnn/schedule?date=2026-10-19&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_j7bqpcnn/schedule?date=2026-10-19&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_j7bqpcnn/schedule", params={"date": "2026-10-19", "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_j7bqpcnn/schedule?date=2026-10-19, the first programme { "data": [ { "id": "ls_ztnbm17e", "channel": "ch_j7bqpcnn", "start": "2026-10-18T15:00:00Z", "stop": "2026-10-18T15:30:00Z", "title": "원피스 NEW-엘바프 편", "sub_title": null, "description": null, "category": [ "만화", "모험(adventure)" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 52, "date": "2026-10-19", "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 |
|---|---|---|
| 23:30 | 원피스 NEW-에그 헤드 편 | 만화, 모험(adventure) |
| 00:04 | [자막] 카드파이트!! 뱅가드 디바인즈 디럭스 결승편 | 만화, 액션/무협 |
| 00:28 | [자막] 카드파이트!! 뱅가드 디바인즈 디럭스 결승편 | 만화, 액션/무협 |
| 51 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 150 countries.