73.8M 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 Europe/Moscow 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 Europe/Moscow. The same day from the API: GET /v1/channels/ch_8zngh3gn/schedule?date=2026-10-15&tz=Europe/Moscow
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:15 | Барселона – Валенсия 3 кръг, Баскетбол: Лига Ендеса 2026/27 | 2h | ||
| 01:15 | Реал Мадрид – Манреса 3 кръг, Баскетбол: Лига Ендеса 2026/27 | 2h | ||
| 03:15 | Еротичен телепазар | 5h 15m | ||
| 08:30 | Уникаха – Андора 3 кръг, Баскетбол: Лига Ендеса 2026/27 | 2h | ||
| 10:30 | Баскония – Ховентут 3 кръг, Баскетбол: Лига Ендеса 2026/27 | 2h | ||
| 12:30 | Peta četvrtina | 30m | ||
| 13:00 | ⋗ Тай По – Лайън Сити Сейлърс 2 кръг, Футбол: Шампионска лига на Азия 2 2026/27 | 2h 15m | ||
| 15:15 | ⋗ Тампайнс Роувърс – Мачида Зелвия 2 кръг, Футбол: Шампионска лига на Азия 2 2026/27 | 2h 15m | ||
| 17:30 | Втора Бундеслига: Обзор на кръга 7 епизод, предаване за германски футбол 2026/27 | 30m | ||
| 18:00 | Да скъсаш мрежата 6 епизод, предаване за английски футбол 2026/27 | 30m | ||
| 18:30 | Истории от Висшата лига 9 епизод, предаване за английски футбол 2026/27 | 30m | ||
| 19:00 | Линкълн Сити – Уест Хям Юнайтед 10 кръг, Футбол: Чемпиъншип 2026/27 | 1h 55m | ||
| 20:55 | Спортни новини | 5m | ||
| 21:00 | Чемпиъншип: Обзор 10 епизод, предаване за английски футбол 2026/27 | 30m | ||
| 21:30 | Елитна Шампионска лига на Азия: Обзор 2 епизод, предаване за азиатски футбол 2026/27 | 30m | ||
| 22:00 | Стоук Сити – Мидълзбро 10 кръг, Футбол: Чемпиъншип 2026/27 | 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_8zngh3gn/schedule?date=2026-10-15&tz=Europe/Moscow" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_8zngh3gn/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_8zngh3gn/history?from=2026-01-29T00:00:00Z&to=2026-01-30T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_8zngh3gn/schedule?date=2026-10-15&tz=Europe/Moscow"); 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_8zngh3gn/schedule?date=2026-10-15&tz=Europe/Moscow", { 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_8zngh3gn/schedule", params={"date": "2026-10-15", "tz": "Europe/Moscow"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_8zngh3gn/schedule?date=2026-10-15, the first programme { "data": [ { "id": "ls_17atk9jj", "channel": "ch_8zngh3gn", "start": "2026-10-14T20:15:00Z", "stop": "2026-10-14T22:15:00Z", "title": "Барселона – Валенсия 3 кръг, Баскетбол: Лига Ендеса 2026/27", "sub_title": null, "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 16, "date": "2026-10-15", "tz": "Europe/Moscow" } }
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 | Thursday 29 January 2026 | Category |
|---|---|---|
| 03:05 | Pregled Rally Dubai Baja | |
| 04:00 | ⋗ Košarka – Eurocup: Neptunas – Hapoel Jerusalem | |
| 06:00 | Nogomet – Bundesliga: Monchengladbach – Stuttgart | |
| 13 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.