74.3M 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_0prq1wfv/schedule?date=2026-10-14&tz=Europe/Moscow
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:41 | Затерянные царства Китая (2019) 01 Духи гор | 44m | ||
| 00:25 | Затерянные царства Китая (2019) 02 Тайное королевство джунглей | 44m | ||
| 01:09 | Затерянные царства Китая (2019) 03 Империя гигантов | 44m | ||
| 01:53 | Затерянные царства Китая (2019) 04 Выживание в древних степях | 44m | ||
| 02:37 | Затерянные царства Китая (2019) 05 Лес золотистых обезьян | 44m | ||
| 03:21 | Знакомьтесь, ваши предки неандертальцы (2018) 1-2 | 51m | ||
| 04:12 | Исландия Заповедник птиц тупиков (2022) | 52m | ||
| 05:04 | Йеллоустоун – Борьба за жизнь Зима (2009) | 49m | ||
| 05:53 | Йеллоустоун – Борьба за жизнь Лето (2009) | 49m | ||
| 06:42 | Йеллоустоун – Борьба за жизнь Осень (2009) | 49m | ||
| 07:31 | Когда крокодилы ели динозавров (2009) | 47m | ||
| 08:18 | Кошачьи войны Лев против Гепарда (2011) | 45m | ||
| 09:03 | Красота змей (2006) | 51m | ||
| 09:54 | Крис Хемсворт в царстве акул (2021) | 45m | ||
| 10:39 | Львиное королевство (2017) 02 Охотник на гигантов | 44m | ||
| 11:23 | Львиное королевство (2017) 03 Кровная вражда | 44m | ||
| 12:07 | Наша планета (2019) 02 Замёрзшие миры | 54m | ||
| 13:01 | Наша планета (2019) 03 Джунгли | 51m | ||
| 13:52 | Наша планета (2019) 04 Прибрежные моря | 50m | ||
| 14:42 | Наша планета (2019) 05 От пустынь к лугам | 4h 18m |
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_0prq1wfv/schedule?date=2026-10-14&tz=Europe/Moscow" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_0prq1wfv/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_0prq1wfv/history?from=2026-07-01T00:00:00Z&to=2026-07-02T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_0prq1wfv/schedule?date=2026-10-14&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_0prq1wfv/schedule?date=2026-10-14&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_0prq1wfv/schedule", params={"date": "2026-10-14", "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_0prq1wfv/schedule?date=2026-10-14, the first programme { "data": [ { "id": "ls_rq183x6j", "channel": "ch_0prq1wfv", "start": "2026-10-13T20:41:00Z", "stop": "2026-10-13T21:25:00Z", "title": "Затерянные царства Китая (2019) 01 Духи гор", "sub_title": null, "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 20, "date": "2026-10-14", "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 | Wednesday 1 July 2026 | Category |
|---|---|---|
| 19:35 | Проект Динозавр (2015) | |
| 19:49 | Величайшие явления природы (2009) 2-3 Великий потоп | |
| 20:48 | В опасных водах Австралии Операция Рыба-Пила (2010) | |
| 8 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.