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.
All times Europe/Berlin. The same day from the API: GET /v1/channels/ch_mq2f8hy9/schedule?date=2026-10-13&tz=Europe/Berlin
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:05 | Caso cerrado: Una relación especial, Parte 1El equipo vuelve a investigar la muerte sin resolver de la consejera Katherine Reed. Katherine fue una destacada académica feminista que cambió par... | Una relación especial, Parte 1 | Series, Thriller | 1h |
| 00:05 | Caso cerrado: Una relación especial, parte 2La búsqueda del equipo para encontrar al asesino los lleva más arriba en el escalafón policial. El secretismo del gobierno no hace su vida más fáci... | Una relación especial, parte 2 | Series, Thriller | 1h |
| 01:05 | Caso cerrado: Sin rastro, Parte 1Joanna Gold, una hermosa joven de 18 años, desapareció a plena luz del día en Hampstead Heath en 1989. Ahora, su famoso vestido rojo se descubrió e... | Sin rastro, Parte 1 | Series, Thriller | 1h |
| 02:05 | Caso cerrado: Sin rastro, Parte 2Amenazada por la investigación, la asesina Joanna Gold ha vuelto a actuar y ahora empieza a acosar a su hermana menor, Clara. Persuade a Boyd a dej... | Sin rastro, Parte 2 | Series, Thriller | 1h |
| 03:05 | Caso cerrado: Masacre en el aparcamiento, parte 1Carl Mackenxie, encarcelado por un tiroteo en la calle, siempre mantuvo su inocencia. Ahora su hermana lucha por su recurso, basado en una investig... | S3 E1, Episodio 1 | Series, Thriller | 59m |
| 04:04 | Caso cerrado: Masacre en el aparcamiento, parte 2El caso contra Carl Mackenzie revela más cuando el equipo descubre un potencial vínculo entre la masacre de un aparcamiento en el Reino Unido y una... | S3 E2, Episodio 2 | Series, Thriller | 59m |
| 05:03 | Unidad de investigación On nowIsabelle Marnay, la joven dueña de un centro de estética, es encontrada muerta. El equipo investiga y, como primera pista, descubre que la niña era... | S3 E4, Une femme comme les autres | Series, Thriller | 56m |
| 05:58 | Unidad de investigaciónPatricia Dubreuil desaparece y, en el maletero de su coche, se encuentra el cuerpo de un joven empresario. Mientras, Bernier es juzgado por la cort... | S3 E3, Forêt noire | Series, Thriller | 1h |
| 06:58 | Fillers Pluto TV ESFillers Pluto TV | Disponible en Pluto TV | Series, News & information | 5m |
| 07:03 | RushEl equipo responde a un coche sospechoso que sigue a una furgoneta blindada. Michael va en contra del procedimiento operativo estándar y se enfrent... | Capítulo 10 | Series, Thriller | 51m |
| 07:54 | Fillers Pluto TV ESFillers Pluto TV | Disponible en Pluto TV | Series, News & information | 5m |
| 07:59 | RushEl futuro de Stella en 'Tactical Response' se ve amenazado cuando se ve involucrada en una carrera de coches ilegal. | Capítulo 9 | Series, Thriller | 54m |
| 08:53 | Fillers Pluto TV ESFillers Pluto TV ES | Disponible en Pluto TV | Series, News & information | 3m |
| 08:56 | RushEn una ciudad en las afueras de Melbourne, 'Tactical Response' descubre que un hombre recibió un disparo y un niño fue secuestrado. | Capítulo 8 | Series, Thriller | 50m |
| 09:46 | Constance Meyer: Jueza en prácticas: PopularDespués de ser encarcelada injustamente debido a un error judicial, Constance Meyer decide emprender una nueva carrera. | Popular | Drama, Series | 57m |
| 10:43 | Constance Meyer: Jueza en prácticas: Primer amorDespués de ser encarcelada injustamente debido a un error judicial, Constance Meyer decide emprender una nueva carrera. | Primer amor | Drama, Series | 57m |
| 11:40 | Unidad de investigaciónLos miembros de la sección de investigaciones acuden al Dr. Laurent Fernet para comunicarle la muerte de su esposa. Sin embargo, la policía encuent... | El hada buena | Series, Thriller | 56m |
| 12:36 | Constance Meyer: Jueza en prácticas: La descocida de la estaciónDespués de ser encarcelada injustamente debido a un error judicial, Constance Meyer decide emprender una nueva carrera. | La descocida de la estación | Drama, Series | 1h 2m |
| 13:38 | Constance Meyer: Jueza en prácticas: La descocida de la estaciónDespués de ser encarcelada injustamente debido a un error judicial, Constance Meyer decide emprender una nueva carrera. | La descocida de la estación | Drama, Series | 1h 2m |
| 14:40 | Constance Meyer: Jueza en prácticas: Primer amorDespués de ser encarcelada injustamente debido a un error judicial, Constance Meyer decide emprender una nueva carrera. | Primer amor | Drama, Series | 57m |
| 15:37 | Constance Meyer: Jueza en prácticas: PopularDespués de ser encarcelada injustamente debido a un error judicial, Constance Meyer decide emprender una nueva carrera. | Popular | Drama, Series | 57m |
| 16:34 | RushEn una ciudad en las afueras de Melbourne, 'Tactical Response' descubre que un hombre recibió un disparo y un niño fue secuestrado. | Capítulo 8 | Series, Thriller | 50m |
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_mq2f8hy9/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_mq2f8hy9/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_mq2f8hy9/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_mq2f8hy9/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_mq2f8hy9/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_mq2f8hy9/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_mq2f8hy9/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_pvj3v77j", "channel": "ch_mq2f8hy9", "start": "2026-10-12T21:05:10Z", "stop": "2026-10-12T22:05:10Z", "title": "Caso cerrado: Una relación especial, Parte 1", "sub_title": "Una relación especial, Parte 1", "description": "El equipo vuelve a investigar la muerte sin resolver de la consejera Katherin...", "category": [ "series", "thriller" ], "flags": { "new": false, "live": false } } ], "meta": { "count": 22, "date": "2026-10-13", "tz": "Europe/Berlin" } }
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.