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_z3bnqv6t/schedule?date=2026-10-13&tz=Asia/Seoul
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:00 | 캐시트럭 그 남자의 분노자비는 없다, 분노에 가득 찬 응징만이 남았다. 그의 분노가 폭발한다! | 영화, 액션 | 2h | |
| 23:17 | 캐시트럭 그 남자의 분노자비는 없다, 분노에 가득 찬 응징만이 남았다. 그의 분노가 폭발한다! | 영화, 액션 | 1h 8m | |
| 00:25 | 캐시트럭 그 남자의 분노자비는 없다, 분노에 가득 찬 응징만이 남았다. 그의 분노가 폭발한다! | 영화, 액션 | 1h 6m | |
| 01:00 | 도색부인 | 영화, 드라마 | 2h | |
| 01:31 | 도색부인 | 영화, 드라마 | 55m | |
| 02:26 | 도색부인 | 영화, 드라마 | 55m | |
| 03:00 | 무우도 | 드라마, 멜로 | 2h | |
| 03:21 | 무우도 | 드라마, 멜로 | 53m | |
| 04:14 | 무우도 | 드라마, 멜로 | 51m | |
| 05:00 | 무우도 | 드라마, 멜로 | 2h | |
| 05:05 | 무우도 | 드라마, 멜로 | 49m | |
| 05:54 | 무우도 | 드라마, 멜로 | 52m | |
| 06:46 | 리버 오브 패션 On now | 드라마, 홈드라마 | 52m | |
| 07:00 | 리버 오브 패션 On now | 드라마, 홈드라마 | 2h | |
| 07:38 | 리버 오브 패션 | 드라마, 홈드라마 | 53m | |
| 08:31 | 반샤즈 | 드라마, 홈드라마 | 59m | |
| 09:00 | 반샤즈 | 드라마, 홈드라마 | 2h | |
| 09:30 | 반샤즈 | 드라마, 홈드라마 | 58m | |
| 10:28 | 히든아이 [해], [수] | 연예/오락, 일반 | 1h 47m | |
| 11:00 | 히든 아이 | 연예/오락, 일반 | 1h | |
| 12:00 | 더 커리어 | 영화, 액션 | 2h | |
| 12:15 | 더 커리어 | 영화, 액션 | 58m | |
| 13:13 | 더 커리어 | 영화, 액션 | 1h 1m | |
| 14:00 | 악의 연대기살인사건을 은폐하기 위해 고군분투하다 과거에 순수하고 정의롭던 자신의 모습과 만나게 되는 어느 형사의 이야기를 그린 하드보일드 스릴러 | 영화, 미스터리/스릴러 | 2h | |
| 14:14 | 악의 연대기살인사건을 은폐하기 위해 고군분투하다 과거에 순수하고 정의롭던 자신의 모습과 만나게 되는 어느 형사의 이야기를 그린 하드보일드 스릴러 | 영화, 미스터리/스릴러 | 58m | |
| 15:12 | 악의 연대기살인사건을 은폐하기 위해 고군분투하다 과거에 순수하고 정의롭던 자신의 모습과 만나게 되는 어느 형사의 이야기를 그린 하드보일드 스릴러 | 영화, 미스터리/스릴러 | 1h | |
| 16:00 | 엽문 3부정부패로 얼룩진 홍콩의 암흑가를 배경으로 혼돈의 거리를 되살리기 위한 영춘권 최고수 엽문의 최후의 대결을 그린 작품 | 영화, 액션 | 2h | |
| 16:12 | 엽문 3부정부패로 얼룩진 홍콩의 암흑가를 배경으로 혼돈의 거리를 되살리기 위한 영춘권 최고수 엽문의 최후의 대결을 그린 작품 | 영화, 액션 | 1h 2m | |
| 17:14 | 엽문 3부정부패로 얼룩진 홍콩의 암흑가를 배경으로 혼돈의 거리를 되살리기 위한 영춘권 최고수 엽문의 최후의 대결을 그린 작품 | 영화, 액션 | 1h 4m | |
| 18:00 | 다크랜드: 더 리턴 | 영화, 드라마 | 2h | |
| 18:18 | 다크랜드: 더 리턴 | 영화, 드라마 | 1h 6m | |
| 19:24 | 다크랜드: 더 리턴 | 영화, 드라마 | 1h 5m | |
| 20:00 | 애셔킬러인가, 사랑꾼인가! | 영화, 액션 | 2h | |
| 20:29 | 애셔킬러인가, 사랑꾼인가! | 영화, 액션 | 1h 2m | |
| 21:31 | 애셔킬러인가, 사랑꾼인가! | 영화, 액션 | 1h 1m | |
| 22:00 | 키퍼스난파된 배에서 시신과 금괴를 발견한 등대지기 세 사람에게 벌어지는 사건을 다룬 영화 | 영화, 드라마 | 2h | |
| 22:32 | 키퍼스난파된 배에서 시신과 금괴를 발견한 등대지기 세 사람에게 벌어지는 사건을 다룬 영화 | 영화, 드라마 | 1h 2m | |
| 23:34 | 키퍼스난파된 배에서 시신과 금괴를 발견한 등대지기 세 사람에게 벌어지는 사건을 다룬 영화 | 영화, 드라마 | 1h 2m |
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_z3bnqv6t/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_z3bnqv6t/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_z3bnqv6t/history?from=2025-10-12T00:00:00Z&to=2025-10-13T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_z3bnqv6t/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_z3bnqv6t/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_z3bnqv6t/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_z3bnqv6t/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_pmk1w23z", "channel": "ch_z3bnqv6t", "start": "2026-10-12T14:00:00Z", "stop": "2026-10-12T16:00:00Z", "title": "캐시트럭 그 남자의 분노", "sub_title": null, "description": "자비는 없다, 분노에 가득 찬 응징만이 남았다. 그의 분노가 폭발한다!", "category": [ "영화", "액션" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 38, "date": "2026-10-13", "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 12 October 2020 | Category |
|---|---|---|
| 23:44 | 스톱로스 | 영화, 드라마 |
| 00:51 | 미하엘 콜하스의 선택 | 영화, 역사/사극 |
| 02:00 | 미하엘 콜하스의 선택 | 영화, 역사/사극 |
| 21 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.