74.6M 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/Madrid 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/Madrid. The same day from the API: GET /v1/channels/ch_jsjwag1t/schedule?date=2026-10-11&tz=Europe/Madrid
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:28 | CreepLondres. Una fría noche invernal, Kate va a coger el metro pero, mientras espera en un banco del andén, se queda dormida. Cuando se despierta, todo... | 1h 33m | ||
| 01:01 | AvalanchaUnos turistas luchan por sobrevivir después de una avalancha de nieve caída en sus pistas de esquí. | 1h 38m | ||
| 02:39 | Europa, EuropaSalomon Perel «Sally» es un joven judío polaco que al estallar la Segunda Guerra Mundial es internado en un orfanato soviético… | 1h 57m | ||
| 04:36 | IndefensoDespués de un encuentro sexual con una mujer casada en un callejón en Manchester que se convierte en violación, Johnny Fletcher roba un coche y huy... | 2h 22m | ||
| 06:57 | La cosechaCharlie Pope, un guionista de cine en plena depresión, es acuciado por un productor para que finalice el guion en el que está trabajando. Cuando lo... | 1h 41m | ||
| 08:38 | La infancia de IvánDurante la Segunda Guerra Mundial, Iván, de 12 años, se queda huérfano después de que su familia sea asesinada por las SS. Más… | 1h 39m | ||
| 10:18 | Mi vida como un perroCon sólo 12 años, Ingemar tiene que ir a vivir con sus tíos. Su madre, muy enferma, no puede hacerse cargo de él y su padre abandonó a la familia h... | 1h 45m | ||
| 12:03 | Ojos negrosBasada en tres cuentos de Chejov. El arquitecto Romano Patroni (Marcello Mastroianni), ahora venido a menos, ahora trabaja en e… | 2h 7m | ||
| 14:10 | RashomonLa violación de una novia y el asesinato de su marido samurái se rememoran desde las perspectivas de un bandido, la novia, el fantasma del samurái ... | 1h 31m | ||
| 15:41 | Éxito a cualquier precioNarra las ajetradas vidas de unos agentes inmobiliarios de Chicago que intentan sobrevivir en un mundo altamente competitivo y un mercado en plena ... | 1h 48m | ||
| 17:29 | El dulce porvenirUn autobús escolar se despeña montaña abajo y se hunde en un lago helado. En el accidente mueren todos los niños del pueblo. | 2h 2m | ||
| 19:31 | El amigo americanoEl marchante americano Tom Ripley intenta poner a prueba la integridad de Jonathan Zimmermann, un humilde fabricante de marcos… | 2h 16m | ||
| 21:48 | El extranjeroArgelia 1935. Mersault, un modesto empleado que vive y trabaja en Argel, recibe la noticia de la muerte de su madre. Después del funeral, encuentra... | 1h 46m | ||
| 23:33 | Chantaje contra una esposaNora Helmer, casada y con cuatro hijos pequeños, parece una mujer feliz. Aunque su marido es muy autoritario y dominante, el carácter alegre y algo... | 1h 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_jsjwag1t/schedule?date=2026-10-11&tz=Europe/Madrid" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_jsjwag1t/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_jsjwag1t/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_jsjwag1t/schedule?date=2026-10-11&tz=Europe/Madrid"); 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_jsjwag1t/schedule?date=2026-10-11&tz=Europe/Madrid", { 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_jsjwag1t/schedule", params={"date": "2026-10-11", "tz": "Europe/Madrid"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_jsjwag1t/schedule?date=2026-10-11, the first programme { "data": [ { "id": "ls_wgbk9bjz", "channel": "ch_jsjwag1t", "start": "2026-10-10T21:28:57Z", "stop": "2026-10-10T23:01:27Z", "title": "Creep", "sub_title": null, "description": "Londres. Una fría noche invernal, Kate va a coger el metro pero, mientras esp...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 14, "date": "2026-10-11", "tz": "Europe/Madrid" } }
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.