133.5M 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. On the Live plan; the free key reads yesterday.
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.
312 channels with what is on now, the sport worth knowing about this week, and the endpoints that give you every slot. Times are Europe/Athens.
Counted from our own listings every hour. The detail behind each figure is one API call away.
Every call below answers for Greece as shown. The Free key reads yesterday; the plans add today, the days ahead, changes and the archive.
| Endpoint | What it returns | Plan | |
|---|---|---|---|
| GET /v1/countries/GR/channels | Every TV channel in one country, ordered the way its own guides list them, with ids, names, logos and categories. | Free key | Docs |
| GET /v1/countries/GR/now | What is on now on every TV channel in a country, with what comes next, in one call. | Live and above | Docs |
| GET /v1/countries/GR/tonight | Prime time tonight on every TV channel in a country, from the local hour you choose, in one grid. | Live and above | Docs |
| GET /v1/countries/GR/coverage | How full the TV data is for a country on a day: the share of programmes with a description, category, episode number and more. | Free key | Docs |
| GET /v1/guide | A TV guide grid for up to 50 channels over a window you choose, every slot with its times in UTC, ready to draw. | Free key | Docs |
| GET /v1/channels/{id}/schedule | A TV channel's day slot by slot: start and stop in UTC, title, description, category, and the series and episode where we matched it. | Free key | Docs |
| GET /v1/events?country=GR | Sports events on TV by sport, league and day, in every country or only those on air where you are. | Live and above | Docs |
| GET /v1/changes?country=GR | Every TV listing that moved, appeared or disappeared since a time you give, to keep your own copy of the guide in step. | Live and above | Docs |
| GET /v1/channels/{id}/history | Past schedules for a TV channel from the archive, slot by slot over any window of up to 31 days, with the same fields as today. | Archive | Docs |
| GET /v1/xmltv?country=GR | A country or a set of channels as a standard XMLTV file, up to 14 days ahead, for media centres and IPTV players. | Live and above | Docs |
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/countries/GR/now"
$ctx = stream_context_create(["http" => ["header" => "Authorization: Bearer " . getenv("TVG_KEY")]]); $r = json_decode(file_get_contents("https://api.tvguideapi.com/v1/countries/GR/now", false, $ctx), true); foreach ($r["data"] as $c) echo $c["channel"], " ", $c["now"]["title"] ?? "", "\n";
const r = await fetch("https://api.tvguideapi.com/v1/countries/GR/now", { headers: { Authorization: `Bearer ${process.env.TVG_KEY}` } }); for (const c of (await r.json()).data) console.log(c.channel, c.now?.title);
import os, requests r = requests.get("https://api.tvguideapi.com/v1/countries/GR/now", headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}) for c in r.json()["data"]: print(c["channel"], (c["now"] or {}).get("title"))
// GET /v1/countries/GR/now, one channel, in short { "data": [ { "channel": "ch_c2jfdr16", "now": { "start": "2026-11-02T20:05:00Z", "stop": "2026-11-02T20:30:00Z", "title": "Pupstruction", "progress": 0.4 }, "next": { "start": "2026-11-02T20:30:00Z", "title": "Bluey" } } ], "meta": { "count": 371, "at": "2026-11-02T20:24:39Z" } }
The key competitions first, then the rest with a named competition. Every event and every channel is GET /v1/events?country=GR.
| Kick-off | Event | Competition | Channels | Showing |
|---|---|---|---|---|
| 22:00 Mon 2 Nov | Ντεπορτίβο λα Κορούνια v Οσασούνα | Ποδόσφαιρο | 2 | Live |
| 22:00 Mon 2 Nov | Νιούκαστλ v Έβερτον | Ποδόσφαιρο | 1 | Live |
| 22:15 Mon 2 Nov | Μπενφίκα v Αλβέρκα | Ποδόσφαιρο | 5 | Live |
| 03:15 Tue 3 Nov | Σιάτλ Σίχοκς v Σικάγο Μπέαρς | Αμερικάνικο Ποδόσφαιρο | 3 | Live |
| 05:00 Tue 3 Nov | Λος Άντζελες Λέικερς v Μαϊάμι Χιτ | Μπάσκετ | 3 | Live |
| 19:00 Tue 3 Nov | Τόφας v Νεπτούνας Κλαϊπέντα | Μπάσκετ | 1 | Live |
| 19:45 Tue 3 Nov | Σαχτάρ Ντόνετσκ v Σπόρτινγκ Λισαβόνας | Ποδόσφαιρο | 6 | Live |
| 19:45 Tue 3 Nov | Γαλατασαράι v Στουτγκάρδη | Ποδόσφαιρο | 6 | Live |
| 20:00 Tue 3 Nov | ΠΑΟΚ v Ρόμα | Pre Game Show | 4 | Live |
| 20:30 Tue 3 Nov | Ουλμ v Μπαχτσεσεχίρ | Μπάσκετ | 1 | Live |
By category and by owner, from the channel registry.
The TV guide for Greece covers 312 channels, 371 of them with a schedule today, and most of its main channels run 5 days ahead. Every time on this page is Europe/Athens, and its listings history reaches back to 2023.
Most of Greece's channels are general, sport and news channels, and the biggest owners are Nova, OTE and Hellenic Broadcasting Corporation. This week 225 sports events are on TV in Greece, 73 of them live.
Developers get the same data from the TV Guide API: every channel in Greece with GET /v1/countries/GR/channels, what is on now with GET /v1/countries/GR/now, and a full day with GET /v1/guide?country=GR.
We list 312 channels in Greece, 371 of them with a schedule today.
Most of its main channels have listings 5 days ahead; some go further.
This page shows Europe/Athens. The API returns UTC and converts to any time zone you pass.
With a TV Guide API key: GET /v1/countries/GR/now for what is on now, or GET /v1/guide?country=GR for a whole day. The free key reads yesterday.
225 events are on Greece's channels this week. Every one, with its channels, is GET /v1/events?country=GR, or see Where to watch.
Every country has one page like this one. Channel by channel detail lives in the API: every country.