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/Warsaw 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/Warsaw. The same day from the API: GET /v1/channels/ch_hzcf0q1p/schedule?date=2026-10-16&tz=Europe/Warsaw
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:25 | Panorama kina polskiego: Cisza nocna | 1h 50m | ||
| 01:15 | Dobre strony: Natalia Przybysz i Damian Kocur (3) | 10m | ||
| 01:25 | Kino nocne: Matka siedzi z tyłu | 1h 55m | ||
| 03:20 | Noc krótkich filmów: Ktoś i coś: Krowa | 5m | ||
| 03:25 | Hala odlotów (205) | 50m | ||
| 04:15 | Kolekcja: Barbara Pniewska | 10m | ||
| 04:25 | Noc krótkich filmów: Colaholic | 10m | ||
| 04:35 | Podróże z historią: Wiosenne obrządki (35) | 1h 25m | ||
| 06:00 | Mieszczanie żywieccy: Wisia, Małgorzata i Kaja (7) | 25m | ||
| 06:25 | Dobry tytuł | 25m | ||
| 06:50 | W poszukiwaniu dobrego filmu | 25m | ||
| 07:15 | Rawhide 3: Incydent przed Czarną Przełęczą (81) | 50m | ||
| 08:05 | Muzyka w sieci (4) | 20m | ||
| 08:25 | Tamte lata, tamte dni: Feliks Falk | 25m | ||
| 08:50 | Ukraińska czytanka: Artem Czapaj | 15m | ||
| 09:05 | Blisko, coraz bliżej: Jest dla kogo żyć. Rok 1863 (1/19) | 1h 10m | ||
| 10:15 | Teraz animacje!: Warzywa | 10m | ||
| 10:25 | Historia kina w Popielawach | 1h 35m | ||
| 12:00 | Teraz animacje!: Tygrys bez pasków | 5m | ||
| 12:05 | Teraz animacje!: Między nami, Polakami: Pomoc drogowa | 5m | ||
| 12:10 | Portrety: Kim Novak – buntowniczka z Hollywood | 55m | ||
| 13:05 | Teraz animacje!: Tajemnica zaginionych skarpetek | 20m | ||
| 13:25 | Teraz animacje!: Ktoś i coś: Koń | 10m | ||
| 13:35 | Magda Umer: Mężczyźni jej życia (2) | 1h 5m | ||
| 14:40 | Teraz animacje!: Małże z frytkami | 30m | ||
| 15:10 | Księżna Łowicka | 1h 30m | ||
| 16:40 | Blisko, coraz bliżej: Przyjadę na ślub. Rok 1870 (2/19) | 1h 15m | ||
| 17:55 | Młynek do kawy | 10m | ||
| 18:05 | Tygodnik kulturalny | 40m | ||
| 18:45 | Którędy po sztukę: Andrzej Wróblewski | 5m | ||
| 18:50 | Pamiętniki Sherlocka Holmesa (1) | 50m | ||
| 19:40 | Taśmy kultury: Optymistycznie bardzo | 20m | ||
| 20:00 | Wieczór kinomana: Wstęp do filmu «2001: Odyseja kosmiczna» | 5m | ||
| 20:05 | Wieczór kinomana: 2001: Odyseja kosmiczna | 2h 25m | ||
| 22:30 | Noc krótkich filmów: Dygot | 15m | ||
| 22:45 | 17. Międzynarodowy Konkurs Skrzypcowy im. H. Wieniawskiego: 2 etap – podsumowanie | 55m | ||
| 23:40 | Noc krótkich filmów: Dzieci i ryby | 15m | ||
| 23:55 | PitBull (6) | 45m |
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_hzcf0q1p/schedule?date=2026-10-16&tz=Europe/Warsaw" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_hzcf0q1p/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_hzcf0q1p/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_hzcf0q1p/schedule?date=2026-10-16&tz=Europe/Warsaw"); 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_hzcf0q1p/schedule?date=2026-10-16&tz=Europe/Warsaw", { 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_hzcf0q1p/schedule", params={"date": "2026-10-16", "tz": "Europe/Warsaw"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_hzcf0q1p/schedule?date=2026-10-16, the first programme { "data": [ { "id": "ls_f9jv3ehj", "channel": "ch_hzcf0q1p", "start": "2026-10-15T21:25:00Z", "stop": "2026-10-15T23:15:00Z", "title": "Panorama kina polskiego: Cisza nocna", "sub_title": null, "description": null, "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 38, "date": "2026-10-16", "tz": "Europe/Warsaw" } }
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.