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/New_York time, what is on now and next, and the same data in your app with one call.
All times America/New_York. The same day from the API: GET /v1/channels/ch_1xsr8rt4/schedule?date=2026-10-15&tz=America/New_York
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:20 | SpooksTwo former inmates are released from jail and set to launch an attack in London. | 1h 2m | ||
| 00:23 | SpooksAs the team are reeling from the death, Harry vows to take revenge on the man he believes to be responsible. | 1h 2m | ||
| 01:25 | SpooksWith the Russian mole now in custody, the team tries to decipher the information Lucas obtained in Moscow. | 1h 2m | ||
| 02:27 | SpooksAfter launching an attack on the Home Secretary the conspirators reveal their plan. | 1h 2m | ||
| 03:29 | SpooksAdam and Fiona’s marriage is tested when she insists on going undercover. | 1h 2m | ||
| 04:31 | SpooksDjarkarta is coming. As Adam lies recovering in hospital the country reels under a series of terror attacks. | 1h 2m | ||
| 05:32 | SpooksAn American assassin has come to the UK for a hit without informing M.I.5 or any of the security services. | 1h 2m | ||
| 06:34 | Spooks Season 06During a period of intensely tight security a vital diplomatic agreement between Britain and Iran is signed. | 1h 2m | ||
| 07:36 | SpooksAdam poses as an arms dealer to prevent a thermobaric bomb falling into the terrorist’s hands. | 1h 2m | ||
| 08:38 | SpooksIn the aftermath of Al Qaeda's one successful bomb attack, the team take a risk. | 1h 1m | ||
| 09:39 | SpooksLucas’ past catches up with him when his former torturer turns up with intelligence about a terror attack. | 1h 2m | ||
| 10:41 | SpooksThe India and Pakistan situation reaches crisis point when an Indian submarine ends up in Pakistani hands. | 1h 2m | ||
| 11:43 | SpooksDespite the efforts of MI5 and the CIA, the team discover that Iran has acquired nuclear triggers. | 1h 2m | ||
| 12:45 | SpooksAfter stealing a large amount of money from a bank a man is found Crucified on the moors. | 1h 2m | ||
| 13:47 | SpooksThe government releases a report on the Cotterdam Seven; terror suspects killed in an accidental prison fire. | 1h 2m | ||
| 14:49 | SpooksTom's skills as leader are tested to their extremes. | 1h 2m | ||
| 15:51 | SpooksDanny, on Close Quarter Protection, is shaken when there’s an assassination attempt on his charge. | 1h 2m | ||
| 16:52 | SpooksTom's family has been trapped in his house with a bomb. | 1h 1m | ||
| 17:53 | SpooksAn Algerian extremist escapes his home-detention. | 1h 2m | ||
| 18:55 | SpooksHarry is puzzled by a death. The official line is that he committed suicide, but Harry doesn’t buy it. | 1h 2m | ||
| 19:57 | SpooksA UK plane is apparently hijacked and kamikazes into a US air base by terrorists. | 1h 2m |
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_1xsr8rt4/schedule?date=2026-10-15&tz=America/New_York" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_1xsr8rt4/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_1xsr8rt4/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_1xsr8rt4/schedule?date=2026-10-15&tz=America/New_York"); 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_1xsr8rt4/schedule?date=2026-10-15&tz=America/New_York", { 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_1xsr8rt4/schedule", params={"date": "2026-10-15", "tz": "America/New_York"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_1xsr8rt4/schedule?date=2026-10-15, the first programme { "data": [ { "id": "ls_6pqpyrgm", "channel": "ch_1xsr8rt4", "start": "2026-10-15T03:20:50Z", "stop": "2026-10-15T04:23:11Z", "title": "Spooks", "sub_title": null, "description": "Two former inmates are released from jail and set to launch an attack in London.", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 21, "date": "2026-10-15", "tz": "America/New_York" } }
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.