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_c1fh2cn9/schedule?date=2026-10-17&tz=Europe/Moscow
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | Удивительное рядом (Тайны малого народа: ч. 2) | 30m | ||
| 00:30 | Путешествие семьи Удинцевых. По рекам приполярного Урала. 10 с. | 30m | ||
| 01:00 | Азбука туризма (Про палатки) | 15m | ||
| 01:15 | Начинающий рыболов (Изготовление сухого ароматизатора на леща в домашних условиях) | 15m | ||
| 01:30 | Наши люди | 30m | ||
| 02:00 | Дневник экспедиций (Сахалин насквозь: ч. 3) | 35m | ||
| 02:35 | Рыбалка с Григорием Безменовым (Ловля судака на джиг с берега: ч. 2) | 25m | ||
| 03:00 | Таежное счастье. 3 с. | 30m | ||
| 03:30 | Хозяин тайги (Рыболовная разведка) | 30m | ||
| 04:00 | Рыбалка с Олегом Осипенко (Карась страны Оз) | 30m | ||
| 04:30 | Путешествуем с Сергеем Сайманом (Ямал: ч. 3) | 30m | ||
| 05:00 | Дары леса (За кедровой шишкой) | 30m | ||
| 05:30 | Путешествуем с Алексеем Камерзановым (Мир наш. От Кавказа до Аравии: ч. 7) | 30m | ||
| 06:00 | Удивительное рядом (Амикан) | 30m | ||
| 06:30 | Путешествие семьи Удинцевых. По рекам приполярного Урала. 11 с. | 30m | ||
| 07:00 | Наша кухня (Мясо марала с овощами) | 15m | ||
| 07:15 | Начинающий рыболов (Изготовление сухого ароматизатора на леща в домашних условиях) | 15m | ||
| 07:30 | Наши люди (Печных дел мастер) | 30m | ||
| 08:00 | Дневник экспедиций (Сахалин насквозь: ч. 1) | 30m | ||
| 08:30 | Рыбалка с Никитой Дюпиным (Уклейка и елец перед ледоставом) | 30m | ||
| 09:00 | Таежное счастье. 4 с. | 30m | ||
| 09:30 | Хозяин тайги (Рыбалка на прорве) | 30m | ||
| 10:00 | Рыбалка с Олегом Осипенко (Первый гость страны Озз) | 25m | ||
| 10:25 | Путешествуем с Сергеем Сайманом (Ямал: ч. 4) | 35m | ||
| 11:00 | Дары леса (Сморчки и строчки) | 30m | ||
| 11:30 | Путешествуем с Алексеем Камерзановым (Мир наш. От Кавказа до Аравии: ч. 8) | 30m | ||
| 12:00 | Удивительное рядом (Колокола Сибири: ч. 1) | 30m | ||
| 12:30 | Путешествие семьи Удинцевых. По рекам приполярного Урала. 12 с. | 30m | ||
| 13:00 | Наша кухня (Окунь на углях) | 15m | ||
| 13:15 | Начинающий рыболов (Как найти щуку. Сезонность миграции щуки) | 15m | ||
| 13:30 | Наши люди | 30m | ||
| 14:00 | Дневник экспедиций (Сахалин насквозь: ч. 5) | 30m | ||
| 14:30 | Рыбалка с Владимиром Николаевым (Ловля карпа в корягах) | 30m | ||
| 15:00 | Таежное счастье. 5 с. | 30m | ||
| 15:30 | Хозяин тайги (Дрова) | 30m | ||
| 16:00 | Рыбалка с Олегом Осипенко (Демисезонный фидер на реке) | 30m | ||
| 16:30 | Путешествуем с Сергеем Сайманом (Ямал: ч. 5) | 30m | ||
| 17:00 | Дары леса (Сибирские обабки) | 30m | ||
| 17:30 | Путешествуем с Алексеем Камерзановым (Мир наш. От Кавказа до Аравии: ч. 9) | 30m | ||
| 18:00 | Удивительное рядом (Колокола Сибири: ч. 2) | 30m | ||
| 18:30 | Рыбалка с Григорием Безменовым (Рыбалка в пойме водохранилища) | 30m | ||
| 19:00 | Наша кухня (Белая уха) | 15m | ||
| 19:15 | Начинающий рыболов (Фидер. Двойной монтаж) | 15m | ||
| 19:30 | Наши люди (Промысловая рыбалка) | 30m | ||
| 20:00 | Дневник экспедиций (Сахалин насквозь: ч. 6) | 40m | ||
| 20:40 | Рыбалка с Григорием Безменовым (Вновь на родное водохранилище: ч. 1) | 20m | ||
| 21:00 | Таежное счастье. 6 с. | 30m | ||
| 21:30 | Хозяин тайги (Опасности тайги) | 30m | ||
| 22:00 | Рыбалка с Олегом Осипенко (Песни страны Оз) | 30m | ||
| 22:30 | Путешествуем с Сергеем Сайманом (Ямал. Выживание: ч. 1) | 30m | ||
| 23:00 | Дары леса (Веники) | 30m | ||
| 23:30 | Путешествуем с Алексеем Камерзановым (Оффроад конными тропами Алтая: ч. 1) | 30m |
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_c1fh2cn9/schedule?date=2026-10-17&tz=Europe/Moscow" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_c1fh2cn9/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_c1fh2cn9/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_c1fh2cn9/schedule?date=2026-10-17&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_c1fh2cn9/schedule?date=2026-10-17&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_c1fh2cn9/schedule", params={"date": "2026-10-17", "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_c1fh2cn9/schedule?date=2026-10-17, the first programme { "data": [ { "id": "ls_fq7s3w5b", "channel": "ch_c1fh2cn9", "start": "2026-10-16T21:00:00Z", "stop": "2026-10-16T21:30:00Z", "title": "Удивительное рядом (Тайны малого народа: ч. 2)", "sub_title": null, "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 52, "date": "2026-10-17", "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 | Monday 13 October 2025 | Category |
|---|---|---|
| Nothing held for that day. Try another date. | ||
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.