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 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_fqsefhvb/schedule?date=2026-10-15&tz=America/New_York
| Time | Programme | Episode | Category | Length |
|---|---|---|---|---|
| 23:28 | Ink MasterThe Turf War is more intense and the Artists must fight for every possible advantage and ally. | S13 E6, Off the Chain | 50m | |
| 00:18 | Ink MasterChallenge takes Artists for a spin leaving them dizzied; the Turf War grows more intense. | S13 E7, Head Spin | 49m | |
| 01:07 | Ink MasterThe Artists hunger for the win when they tattoo sweet full color new school food tattoos. | S13 E8, Sugar Rush | 49m | |
| 01:56 | Ink MasterThe teams are put to the test in artistry with an Ink Master favorite: pin-ups. | S13 E9, Artistry on the Line | 49m | |
| 02:45 | Ink MasterThe artists have to prove that they are tough enough to battle in the Turf War. | S13 E10, Every Artist for Themselves | 1h | |
| 03:45 | Ink MasterThe Artists' shading skills are tested in a monumentally hard Elimination Tattoo. | S13 E11, From Toast to Toast | 1h | |
| 04:45 | Ink MasterThe Turf War ranks run thin and the Artists' versatility is tested when an alliance backfires. | S13 E12, Last Draw | 1h | |
| 05:45 | Ink MasterThe artists fight for survival in portraits; a shocking skull pick threatens the team dynamic. | S13 E13, There Can Only Be One | 49m | |
| 06:34 | Ink MasterThe artists are tested on composition; an elimination tattoo shakes some artists. | S13 E14, Compose Yourself | 49m | |
| 07:23 | Ink MasterThe road to the finale begins with a 13-hour tattoo marathon. | S13 E15, Race to the Finish | 49m | |
| 08:12 | Ink MasterTen tattoo artists compete for $100,000 prize and the first Artist is eliminated. | S1 E1, Fresh Meat | 48m | |
| 09:00 | Ink MasterA head tattoo becomes a medical emergency; Ton Jones is a Guest Judge. | S1 E2, Botched Head Tattoo | 48m | |
| 09:48 | Ink MasterThe competition heats up with naked women; another head tattoo causes a fight between Al and Bili. | S1 E3, Pasties and a Cameltoe | 48m | |
| 10:36 | Ink MasterPhoto Realism tattoos takes a wrong turn and a fourth artist gets sent home. | S1 E4, Ink Disaster Piece | 48m |
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_fqsefhvb/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_fqsefhvb/now" # any past day (Archive plan) curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_fqsefhvb/history?from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_fqsefhvb/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_fqsefhvb/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_fqsefhvb/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_fqsefhvb/schedule?date=2026-10-15, the first programme { "data": [ { "id": "ls_rf4j75kp", "channel": "ch_fqsefhvb", "start": "2026-10-15T03:28:00Z", "stop": "2026-10-15T04:18:00Z", "title": "Ink Master", "sub_title": "Ink Master", "description": "The Turf War is more intense and the Artists must fight for every possible ad...", "category": [], "flags": { "new": false, "live": false } } ], "meta": { "count": 14, "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 155 countries.