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/Warsaw 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/Warsaw. The same day from the API: GET /v1/channels/ch_cfs6hs7m/schedule?date=2026-10-12&tz=Europe/Warsaw
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:04 | Dr. G: Medical ExaminerParamedics respond to a mother in distress: one of her infant twin girls hasn't woken up. | S4 E8, Shock to the System | 1h | |
| 00:00 | Dr. G: Medical Examiner | 1h | ||
| 00:04 | Dr. G: Medical ExaminerA hiker stumbles across a man's dead body in the woods. The victim's brother is convinced he was murdered. | S5 E1, Under the Knife | 58m | |
| 01:00 | Dr. G: Medical Examiner | 1h | ||
| 01:02 | Dr. G: Medical ExaminerA hotel clerk calls 9-1-1 complaining of severe facial trauma, but he has no recollection of what happened. | S5 E2, Deadly Encounter | 58m | |
| 02:00 | Dr. G: Medical Examiner | 1h | ||
| 02:00 | Dr. G: Medical ExaminerA victim's body spent days decaying before it was found, and decomposition could complicate the investigation. | S5 E3, Unlikely Suspects | 1h | |
| 03:00 | Dr. G: Medical Examiner | 1h | ||
| 03:00 | Dr. G: Medical ExaminerDr. G suspects that someone is responsible for a vagrant's unusual death. | S5 E4, How Not to Die: A Dr. G Special | 1h | |
| 04:00 | Dr. G: Medical Examiner | 1h | ||
| 04:00 | Dr. G: Medical ExaminerEven with many leads, including an overdose and chronic lupus, the pieces don't add up in a woman's death. | S5 E5, Degrees of Death | 58m | |
| 04:57 | Dr. G: Medical ExaminerAn otherwise healthy child had been complaining of stomach pains. | S5 E6, One False Move | 1h | |
| 05:00 | Dr. G: Medical Examiner | 1h | ||
| 05:58 | Dr. G: Medical ExaminerAll signs point to foul play in the case of a dead hunter and the police fear that a killer is on the loose. | S5 E7, Cruel Intentions | 1h | |
| 06:00 | Dr. G: Medical Examiner | 1h | ||
| 06:58 | Dr. G: Medical ExaminerIn an unprecedented double autopsy, Dr. G is determined to find out who is accountable for these odd deaths. | S5 E8, Fearing the Worst | 1h | |
| 07:00 | Dr. G: Medical Examiner | 1h | ||
| 07:58 | Dr. G: Medical ExaminerDr. G must decide if she can perform a successful autopsy without the deceased's organs. | S5 E9, Secret Lives | 58m | |
| 08:00 | Dr. G: Medical Examiner | 1h | ||
| 08:56 | Dr. G: Medical ExaminerAs each lead turns cold in a gruesome murder case, Dr. G worries justice may never be served. | S5 E10, Deadly Remedies | 58m | |
| 09:00 | Dr. G: Medical Examiner | 1h | ||
| 09:54 | Dr. G: Medical ExaminerA daughter wants to surprise her dad with breakfast in bed but finds him unresponsive. | S5 E11, False Impressions | 58m | |
| 10:00 | Dr. G: Medical Examiner | 1h | ||
| 10:52 | Dr. G: Medical ExaminerA teacher excuses himself for a nap after dinner, but he never wakes up. | S5 E12, Hidden Hazards | 58m | |
| 11:00 | Dr. G: Medical Examiner | 1h | ||
| 11:50 | Dr. G: Medical ExaminerA woman fears the worst when her aunt stops answering her calls. | S5 E13, Crossing the Line | 58m | |
| 12:00 | Dr. G: Medical Examiner | 1h | ||
| 12:47 | Dr. G: Medical ExaminerAt first, a drunk driving accident death seems to be an open-and-shut case, but Dr. G discovers more. | S5 E14, Whispered Warnings | 58m | |
| 13:00 | Dr. G: Medical Examiner | 1h | ||
| 13:45 | Dr. G: Medical ExaminerA mother of infant twins notices that her son is not breathing. | 1h | ||
| 14:00 | Dr. G: Medical Examiner | 1h | ||
| 14:45 | Dr. G: Medical ExaminerA florist meets with clients for an upcoming wedding, but she suddenly collapses to the floor. | 58m | ||
| 15:00 | Dr. G: Medical Examiner | 1h | ||
| 15:43 | Dr. G: Medical ExaminerWhen an infant dies under mysterious circumstances, the young parents are prime suspects. | 1h | ||
| 16:00 | Dr. G: Medical Examiner | 1h | ||
| 16:43 | Dr. G: Medical ExaminerPolice make a grisly discovery: a woman's battered and dead body. | 1h | ||
| 17:00 | Dr. G: Medical Examiner | 1h | ||
| 17:43 | Dr. G: Medical ExaminerA neighbor hears odd sounds coming from the next door. When police arrive, they find a man bruised and dead. | 58m | ||
| 18:00 | Dr. G: Medical Examiner | 1h | ||
| 18:41 | Dr. G: Medical ExaminerIt's up to Dr. G to determine if alcohol was to blame in a man's death or if there was something else. | 58m | ||
| 19:00 | Dr. G: Medical Examiner | 1h | ||
| 19:39 | Dr. G: Medical ExaminerParents rush their baby to the hospital, but she tragically dies in her mother's arms. | S6 E1, Lethal Intake | 58m | |
| 20:00 | Dr. G: Medical Examiner | 1h | ||
| 20:37 | Dr. G: Medical ExaminerA train engineer panics when he spots a man lying on the tracks. | S6 E2, Last Gasps | 58m | |
| 21:00 | Dr. G: Medical Examiner | 1h | ||
| 21:34 | Dr. G: Medical ExaminerIt's up to Dr. G, along with the National Transportation Safety Board, to piece together how a plane crashed. | S6 E3, Deadly Science | 58m | |
| 22:00 | Dr. G: Medical Examiner | 1h | ||
| 22:32 | Dr. G: Medical ExaminerReed Baley is found unconscious the morning after his bachelor party. | S6 E4, Fatal Twist | 58m | |
| 23:00 | Dr. G: Medical Examiner | 1h | ||
| 23:30 | Dr. G: Medical ExaminerAuthorities respond to a fire, only to find Carolyn Casey's body at the center of the blaze. | S6 E5, Deadly Decisions | 58m |
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_cfs6hs7m/schedule?date=2026-10-12&tz=Europe/Warsaw" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_cfs6hs7m/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_cfs6hs7m/history?from=2025-10-13T00:00:00Z&to=2025-10-14T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_cfs6hs7m/schedule?date=2026-10-12&tz=Europe/Warsaw"); 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_cfs6hs7m/schedule?date=2026-10-12&tz=Europe/Warsaw", { 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_cfs6hs7m/schedule", params={"date": "2026-10-12", "tz": "Europe/Warsaw"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_cfs6hs7m/schedule?date=2026-10-12, the first programme { "data": [ { "id": "ls_wsn2dec5", "channel": "ch_cfs6hs7m", "start": "2026-10-11T21:04:14Z", "stop": "2026-10-11T22:04:21Z", "title": "Dr. G: Medical Examiner", "sub_title": null, "description": "Paramedics respond to a mother in distress: one of her infant twin girls hasn...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 50, "date": "2026-10-12", "tz": "Europe/Warsaw" } }
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.