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 America/Mexico_City time, what is on now and next, and the same data in your app with one call.
All times America/Mexico_City. The same day from the API: GET /v1/channels/ch_f9exv5v5/schedule?date=2026-10-12&tz=America/Mexico_City
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:12 | Toda la vidaUn par de esposas sorprenderán a sus parranderos maridos. | 1h 52m | ||
| 23:13 | Toda la vidaUn par de esposas sorprenderán a sus parranderos maridos. | 1h 51m | ||
| 01:04 | Judicial… pero honradoUn policía se disfraza para seguir los pasos de una banda de narcotraficantes. | 1h 51m | ||
| 02:54 | Zona rojaUna pareja intenta rehacer su vida pero la sombra de su pasado se los impedirá. | 2h 8m | ||
| 02:55 | Zona rojaUna pareja intenta rehacer su vida pero la sombra de su pasado se los impedirá. | 2h 7m | ||
| 05:02 | Los corrompidosUn hotel es testigo de las historias de personajes con varios problemas y diversos oficios. | 1h 44m | ||
| 06:46 | Historia de un gángsterAl salir de prisión, él se convierte en detective, pero lo dejará para volver a ser un gánster. | 2h 3m | ||
| 08:49 | Santa ClausEl mago Merlín y Santa Claus se unirán para evitar que el diablo corrompa a los niños. | 1h 48m | ||
| 10:37 | Pilotos de combatePilotos que investigan el tráfico de sustancias, descubren raras situaciones en desfiles de moda. | 1h 36m | ||
| 12:13 | El fin de un imperioUn teniente, considerado héroe y enemigo de los imperialistas, intenta rescatar a su amada. | 1h 50m | ||
| 14:03 | Me llaman violenciaAl ser buscada por los asesinos de su padre, ella pedirá ayuda a una misteriosa mujer. | 1h 50m | ||
| 15:53 | El pistolero del diabloÉl se convierte en la burla del pueblo, pero un jinete le ayudará. | 1h 38m | ||
| 17:31 | Matar por matarLa historia de un revólver maldito, cuyos dueños morirán violentamente. | 1h 58m | ||
| 19:29 | Veneno para las hadasUna niña dice ser bruja y se aprovecha de eso para manipular a su amiga. | 2h 1m | ||
| 21:30 | Tráiganlos vivos o muertosElla acepta casarse con el hombre que la saca de prisión sin saber lo que eso ocasionará. | 1h 44m | ||
| 23:14 | Jóvenes delincuentesUn joven, de familia adinerada, se involucrará en varios crímenes y asesinatos. | 1h 53m |
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_f9exv5v5/schedule?date=2026-10-12&tz=America/Mexico_City" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_f9exv5v5/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_f9exv5v5/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_f9exv5v5/schedule?date=2026-10-12&tz=America/Mexico_City"); 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_f9exv5v5/schedule?date=2026-10-12&tz=America/Mexico_City", { 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_f9exv5v5/schedule", params={"date": "2026-10-12", "tz": "America/Mexico_City"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_f9exv5v5/schedule?date=2026-10-12, the first programme { "data": [ { "id": "ls_jpdct1gr", "channel": "ch_f9exv5v5", "start": "2026-10-12T05:12:00Z", "stop": "2026-10-12T07:04:00Z", "title": "Toda la vida", "sub_title": null, "description": "Un par de esposas sorprenderán a sus parranderos maridos.", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 16, "date": "2026-10-12", "tz": "America/Mexico_City" } }
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.