90.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. 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.
The full schedule in UTC time, what is on now and next, and the same data in your app with one call.
All times UTC. The same day from the API: GET /v1/channels/ch_rpqskrwz/schedule?date=2026-10-20&tz=UTC
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 00:00 | Fruto prohíbidoFruto prohíbido. | 1h | ||
| 01:00 | AN7 - 2da. emisiónAN7 - 2da. emisión. | 1h | ||
| 02:00 | Nuevo rico, nuevo pobreNuevo rico, nuevo pobre. | 1h | ||
| 03:00 | Fear the Walking DeadAmbientada en Los Ángeles al comienzo del apocalipsis zombi. Nos transporta a una época en la que el mundo estaba cambiando rápidamente por razones... | Drama, Terror | 1h | |
| 04:00 | Criminal MindsMentes Criminales gira en torno a un equipo de élite de perfiladores del FBI que analizan las mentes criminales más retorcidas del país, anticipand... | Crimen, Drama | 1h | |
| 05:00 | Into the BadlandsInto the Badlands. | 1h | ||
| 06:00 | Ghost WhispererDesde que ella era una niña, Melinda Gordon (Jennifer Love Hewitt) ha podido ver y hablar con la gente muerta – espíritus terrenales que aún tienen... | Drama, Fantasía | 1h | |
| 07:00 | NCISUn equipo de agentes especiales, que opera fuera de la cadena de mando militar, debe investigar cualquier delito con pruebas relacionadas con el pe... | Acción, Comedia | 1h | |
| 08:00 | InfiltradosInfiltrados. | 1h | ||
| 09:00 | AN7 - 2da. emisiónAN7 - 2da. emisión. | 1h | ||
| 10:00 | AN 7 AmanecerAN 7 Amanecer. | 1h | ||
| 11:00 | AN7 ActualidadAN7 Actualidad. | 1h | ||
| 12:00 | AN7 RevistaAN7 Revista. | 1h | ||
| 13:00 | Beyblade BurstBeyblade Burst. | 30m | ||
| 13:30 | Elena of AvalorElena of Avalor. | 30m | ||
| 14:00 | Bugs BunnyBugs Bunny. | 30m | ||
| 14:30 | Tom y JerrySigue las alocadas aventuras del juego original del gato y al ratón. Tom, un gato doméstico ordinario, persigue al molesto ratón Jerry para su cena... | Animación, Comedia | 30m | |
| 15:00 | Perdoname On nowPerdoname. | 1h | ||
| 16:00 | ElifElif. | 1h | ||
| 17:00 | AN7 MeridianoAN7 Meridiano. | 1h | ||
| 18:00 | La promesaLa promesa. | 1h | ||
| 19:00 | El Cuerpo del DeseoEl Cuerpo del Deseo. | 1h | ||
| 20:00 | Comisario RexComisario Rex. | 1h | ||
| 21:00 | Legado de AmorLegado de Amor. | 1h | ||
| 22:00 | Cuando los ángeles caenCuando los ángeles caen. | 1h | ||
| 23:00 | Corazón abandonadoCorazón abandonado. | 1h |
Copy, add your key, run. The free key reads yesterday on every channel, 500 calls a day; today and ahead are on Live.
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_rpqskrwz/schedule?date=2026-10-20&tz=UTC" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_rpqskrwz/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_rpqskrwz/history?from=2026-10-13T00:00:00Z&to=2026-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_rpqskrwz/schedule?date=2026-10-20&tz=UTC"); 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_rpqskrwz/schedule?date=2026-10-20&tz=UTC", { 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_rpqskrwz/schedule", params={"date": "2026-10-20", "tz": "UTC"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_rpqskrwz/schedule?date=2026-10-20, the first programme { "data": [ { "id": "ls_qg3kksj1", "channel": "ch_rpqskrwz", "start": "2026-10-20T00:00:00Z", "stop": "2026-10-20T01:00:00Z", "title": "Fruto prohíbido", "sub_title": null, "description": "Fruto prohíbido.", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 26, "date": "2026-10-20", "tz": "UTC" } }
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's listings on every channel in 176 countries.