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 Africa/Johannesburg time, what is on now and next, and the same data in your app with one call.
All times Africa/Johannesburg. The same day from the API: GET /v1/channels/ch_4gsxemz5/schedule?date=2026-10-13&tz=Africa/Johannesburg
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:34 | Saving HopeCharlie and Manny treat a couple. Maggie evaluates the interns. Billy asks Maggie to be his mentor. | 51m | ||
| 00:25 | Saving Hope On nowThe doctors rally together to try to save an unknown man who was struck by a subway train. | 51m | ||
| 01:17 | Saving HopeAlex tries to distract herself from her grief. Charlie and Shahir try to track down Alex's brother. | 51m | ||
| 02:08 | Nurse JackieJackie meets her divorce lawyer, and is told to play hardball with Kevin if she wants to keep her kids. | 32m | ||
| 02:40 | Nurse JackieJackie comes clean to Cruz about rehab while they tend to an intoxicated Charlie. | 30m | ||
| 03:10 | Nurse JackieGrace argues with Jackie about enrolling in a new public school. | 32m | ||
| 03:42 | Nurse JackieCruz purposely pushes Jackie to the breaking point and uses her reaction as grounds to fire her. | 32m | ||
| 04:14 | Nurse JackieAn overturned bus makes for a crazy day and Eddie gets his job back - all on the day before Jackie's birthday. | 32m | ||
| 04:46 | Nurse JackieJackie and Kevin are at a stalemate in their divorce mediation because Kevin wants full custody. | 32m | ||
| 05:18 | Nurse JackieAfter their custody meeting, Jackie rear-ends Kevin. Kevin accuses her of using. | 31m | ||
| 05:48 | Nurse JackieA heavily medicated Jane Doe is brought into the ER and Jackie tasks Zoey with finding out who she is. | 31m | ||
| 06:19 | Nurse JackieJackie is nervous about her date, so Zoey and Thor help her get ready and Eddie offers some friendly pointers. | 30m | ||
| 06:49 | Nurse JackieJackie and Grace both have to recover from their nights of indiscretion. | 32m | ||
| 07:21 | Nurse JackieAkalitus forgets to hire an escort for a psych patient who ends up laying waste to the pharmacy. | 32m | ||
| 07:54 | Nurse JackieKevin interrupts Jackie and Frank's night. Zoey helps Prentiss organize his disaster of an office. | 32m | ||
| 08:26 | NursesThere’s a new boss - Nurse Manager Kate Faulkner, who’s going to give the nurses all a run for their money. | 51m | ||
| 09:17 | NursesIt’s a typically crazy day at St. Mary’s when an Amber Alert rings out. | 52m | ||
| 10:09 | NursesHospitals are no stranger to the things that keep us up at night or the secrets we keep. | 51m | ||
| 11:00 | Saving HopeAlex tries to distract herself from her grief. Charlie and Shahir try to track down Alex's brother. | 51m | ||
| 11:52 | Saving HopeWhile Charlie tries to save a young man's life, he is haunted by a mischievous spirit. | 51m | ||
| 12:43 | Saving HopeAlex and Maggie work together to deliver a baby. Charlie treats a magician. | 51m | ||
| 13:34 | Saving HopeAlex tries to help a patient who hurt himself breaking into a house. | 51m | ||
| 14:26 | Saving HopeAlex is challenged about the value of holistic medicine. Charlie's abilities are questioned. | 51m | ||
| 15:17 | Saving HopeThe board questions the hospital staff about Charlie's behaviour. | 51m | ||
| 16:08 | Saving HopeAlex has to put her concerns for Charlie aside when a chance to perform a cancer surgery arises. | 51m | ||
| 17:00 | Saving HopeAlex and Charlie put their wedding plans aside. Zach takes a special interest in a case. | 51m | ||
| 17:51 | NursesA marquee plastic surgery at St Mary’s hospital may change a little girl’s life. | 52m | ||
| 18:43 | NursesA tragic accident at a concert suddenly puts St Mary’s in a Code Orange. | 51m | ||
| 19:34 | NursesGhosts from the past make a day at St Mary’s especially trying for our nurses. | 52m | ||
| 20:26 | Saving HopeWhile Charlie tries to save a young man's life, he is haunted by a mischievous spirit. | 51m | ||
| 21:18 | Saving HopeAlex and Maggie work together to deliver a baby. Charlie treats a magician. | 51m | ||
| 22:09 | Saving HopeAlex tries to help a patient who hurt himself breaking into a house. | 51m | ||
| 23:00 | Saving HopeAlex is challenged about the value of holistic medicine. Charlie's abilities are questioned. | 51m | ||
| 23:51 | Saving HopeThe board questions the hospital staff about Charlie's behaviour. | 51m |
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_4gsxemz5/schedule?date=2026-10-13&tz=Africa/Johannesburg" # what is on now, and next curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_4gsxemz5/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_4gsxemz5/history?from=2026-10-05T00:00:00Z&to=2026-10-06T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_4gsxemz5/schedule?date=2026-10-13&tz=Africa/Johannesburg"); 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_4gsxemz5/schedule?date=2026-10-13&tz=Africa/Johannesburg", { 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_4gsxemz5/schedule", params={"date": "2026-10-13", "tz": "Africa/Johannesburg"}, headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}, ) for slot in r.json()["data"]: print(slot["start"], slot["title"])
// GET /v1/channels/ch_4gsxemz5/schedule?date=2026-10-13, the first programme { "data": [ { "id": "ls_e236gsfm", "channel": "ch_4gsxemz5", "start": "2026-10-12T21:34:34Z", "stop": "2026-10-12T22:25:53Z", "title": "Saving Hope", "sub_title": null, "description": "Charlie and Manny treat a couple. Maggie evaluates the interns. Billy asks Ma...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 34, "date": "2026-10-13", "tz": "Africa/Johannesburg" } }
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 155 countries.