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/Berlin 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/Berlin. The same day from the API: GET /v1/channels/ch_xg3wrxqb/schedule?date=2026-10-13&tz=Europe/Berlin
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:38 | Crimes sur le vifCarl Starke est abattu dans une résidence fermée. Les images permettent de reconstituer les faits et révéler le coupable. | Carl Starke | Drama, Series | 48m |
| 00:26 | Crimes sur le vif On nowChristopher Duncan disparaît après une course. La vidéosurveillance mène la famille et la police à une découverte macabre. | Christopher Duncan | Drama, Series | 48m |
| 01:15 | Crimes sur le vifJessika Kalaher est retrouvée morte dans sa voiture. Une vidéo de Walmart révèle ses derniers instants et son meurtrier. | Jessika Kalaher | Drama, Series | 48m |
| 02:03 | Bizarre Murders: Pluie de mannequinsDes femmes mortes et des mannequins mutilés apparaissent dans une ville du Texas. Il faudra une fenêtre brisée, une boîte à pizza et quelques cheve... | S1 E45, It's Raining Mannequins | Series, Documentary | 33m |
| 02:36 | Bizarre Murders: Honte et mensongeUn élève privilégié d'une école préparatoire est prêt à tout pour vivre dans la rue. Lorsque son père l'oblige à tout avouer, son ultimatum s'avère... | S1 E46, It's a Lying Game | Series, Documentary | 27m |
| 03:03 | Bizarre Murders: Le petit livre noirLa fiancée d'une star du basket-ball est abattue à son domicile par un cyberharceleur obsédé. | S1 E47, Little Black Book | Series, Documentary | 33m |
| 03:36 | Bizarre Murders: Prières exaucéesLorsqu'un survivant de l'apocalypse est abattu dans son bunker, sa fille et son gendre s'incriminent avec une histoire d'intrus masqués et le pouvo... | S1 E48, Answered Prayers | Series, Documentary | 34m |
| 04:10 | Bizarre Murders: GaspilleurUne femme au foyer s'en sort avec un meurtre. Jusqu'à ce qu'elle s'en prenne au mari numéro deux. | S1 E49, Gaslighter | Series, Documentary | 33m |
| 04:43 | Bizarre Murders: Hors de vueDéterminé à libérer son génie créatif, un artiste torturé de San Francisco, obsédé par sa muse, finit par tuer la mauvaise fille. | S1 E50, Outta Sight | Series, Documentary | 33m |
| 05:16 | Bizarre Murders: Répète après moiLe restaurant d'une petite ville est cambriolé, et le propriétaire assassiné. Il n'y a qu'un seul témoin, et ce n'est pas parce que c'est un oiseau... | S1 E51, Repeat After Me | Series, Documentary | 26m |
| 05:42 | Bizarre Murders: La pièce du puzzleUne célébrité d'une petite ville disparaît, alors que des morceaux de corps commencent à être retrouvés dans la ville. | S1 E52, Piece of the Puzzle | Series, Documentary | 26m |
| 06:08 | Présumé innocentLes affaires : 1. Les amants diaboliques de Compiègne 2. Rivesaltes : fusillade en pleine rue 3. Affaire Kalinka : le combat d'un père | EM 05 | Drama, Series | 1h 35m |
| 07:43 | Présumé innocentLes affaires : 1. Les empoisonneuses au gâteau 2. Un crime peut-il en cacher un autre ? 3. Jonathan, babysitter pédophile | EM 06 | Drama, Series | 1h 20m |
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_xg3wrxqb/schedule?date=2026-10-13&tz=Europe/Berlin" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_xg3wrxqb/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_xg3wrxqb/history?from=2025-10-12T00:00:00Z&to=2025-10-13T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_xg3wrxqb/schedule?date=2026-10-13&tz=Europe/Berlin"); 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_xg3wrxqb/schedule?date=2026-10-13&tz=Europe/Berlin", { 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_xg3wrxqb/schedule", params={"date": "2026-10-13", "tz": "Europe/Berlin"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_xg3wrxqb/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_egg5g30x", "channel": "ch_xg3wrxqb", "start": "2026-10-12T21:38:30Z", "stop": "2026-10-12T22:26:47Z", "title": "Crimes sur le vif", "sub_title": "Carl Starke", "description": "Carl Starke est abattu dans une résidence fermée. Les images permettent de re...", "category": [ "drama", "series" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 13, "date": "2026-10-13", "tz": "Europe/Berlin" } }
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 12 October 2022 | 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 155 countries.