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