73.8M 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/Paris 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/Paris. The same day from the API: GET /v1/channels/ch_4f4trn0c/schedule?date=2026-10-11&tz=Europe/Paris
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | L'Eglise d'aujourd'huiEn Direct. | Magazine | 15m | |
| 00:15 | Programmes de NuitEn Direct. A suivre, des rediffusions des émissions de la chaîne ainsi que des documentaires et autres reportages destinés à divertir les couche-ta... | Emission spéciale | 5h 45m | |
| 06:00 | Le Réveil MartinEn Direct. | Magazine | 1h | |
| 07:00 | 7/9 Anaïs MatinEn Direct. Infos, humour, sport, bonne humeur : la matinale week-end apporte le sourire et l'énergie pour démarrer la journée du bon pied. | Magazine | 2h | |
| 09:00 | Les grandes gueules du sportCe rendez-vous 100% sport est fait de partage d'expériences et de discussions sans tabou. Le sport dans toutes ses dimensions, tel est le leitmotiv... | Talk show | 3h | |
| 12:00 | Les Paris RMCEn Direct. Une heure de show en direct pour les passionnés de paris sportifs sur tous les événements du week-end. Conseils, actualité, débats, pron... | Magazine sportif | 1h | |
| 13:00 | Stephen BrunchEn Direct. C'est la libre-antenne du dimanche midi ! Attablez-vous et venez débattre avec la joyeuse bande de Stephen Brun tous les dimanches entre... | Magazine | 2h | |
| 15:00 | Intégrale sportEn Direct. Les samedis et dimanches après-midi : priorité aux grands événements sportifs en live. Animé par Thibaut Giangrande, Houssem Loussaïef e... | Magazine | 2h | |
| 17:00 | Intégrale footEn Direct. Tous les faits qui font la une de l'actualité du ballon rond à découvrir avec les chroniqueurs, présentateurs et invités de l'intégrale ... | Magazine | 2h 30m | |
| 19:30 | Bartoli timeEn Direct. | Magazine sportif | 1h | |
| 20:30 | After LiveEn Direct. Au programme, des débats passionnés, de nombreux invités. "After Live" est à suivre tous les soirs de matchs de Ligue 1, Coupes d'Europe... | Talk-show | 2h 30m | |
| 23:00 | After FootEn Direct. L'émission qui dit tout haut ce que le monde du foot pense tout bas ! L'"After Foot", c'est l'émission mythique de RMC présentée par Gil... | Magazine sportif | 1h |
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_4f4trn0c/schedule?date=2026-10-11&tz=Europe/Paris" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_4f4trn0c/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_4f4trn0c/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_4f4trn0c/schedule?date=2026-10-11&tz=Europe/Paris"); 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_4f4trn0c/schedule?date=2026-10-11&tz=Europe/Paris", { 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_4f4trn0c/schedule", params={"date": "2026-10-11", "tz": "Europe/Paris"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_4f4trn0c/schedule?date=2026-10-11, the first programme { "data": [ { "id": "ls_va56gb58", "channel": "ch_4f4trn0c", "start": "2026-10-10T22:00:00Z", "stop": "2026-10-10T22:15:00Z", "title": "L'Eglise d'aujourd'hui", "sub_title": null, "description": "En Direct.", "category": [ "magazine" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 12, "date": "2026-10-11", "tz": "Europe/Paris" } }
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.