71.8M 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.
Search any channel by name, browse by country, and open its full schedule. Every channel here is one API call away, with yesterday and today on the free key.
By name, in any country. The same search is GET /v1/channels/search?q= on the free key.
The channels carried by the most guides, with what is on now and next, and how far back each one's listings go.
| Channel | Country | On now | Next | Listings from | Schedule and API |
|---|---|---|---|---|---|
| France 24News | FR | France 24 | France 24 | Oct 2025 | ScheduleAPI |
| BBC EarthDocumentary | CA | Devrimler: Dünyayı Değiştiren Fikirler | Kıta Avrupa'sının Demiryolu Serüveni | Mar 2017 | ScheduleAPI |
| BBC NewsNews | UK | BBC World News America | BBC News | Mar 2017 | ScheduleAPI |
| CNNNews | US | The Brief with Jim Sciutto | Erin Burnett OutFront | Jan 2023 | ScheduleAPI |
| Al JazeeraNews | QA | Let's Focus | Newshour | Jan 2023 | ScheduleAPI |
| CNN InternationalNews | US | The Lead | The Lead | Mar 2017 | ScheduleAPI |
| NHK World-JapanNews, Culture | JP | Medical Frontiers 2026 | NHK NEWSLINE | Nov 2024 | ScheduleAPI |
| Trace UrbanMusic | FR | TOP 10 HIP-HOP | HITS NON STOP | Jan 2023 | ScheduleAPI |
| tvNEntertainment, Series | KR | 姐姐們的產地直送3 / Fresh Off the Sea 3 | 宇宙年糕店 / Space Rice Cake | Mar 2017 | ScheduleAPI |
| BabyTVChildren | UK | Gözlerini Kapat | Gözlerini Kapat | Jan 2023 | ScheduleAPI |
| Love NatureOutdoors | CA | Gladyatörler | Gladyatörler | Jan 2023 | ScheduleAPI |
| EurosportSport | IN | Atletika: Čikago maraton | Biciklizam: Serija PRO - Pariz To... | Mar 2017 | ScheduleAPI |
Ordered by how many channels we list. The bar shows each country against the largest.
Find a channel by name, then read its schedule. Ids never change, every time is UTC, and the same shape covers every country.
# find the channel, then read its day curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/search?q=france%2024&country=FR" curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_wq31kfsa/schedule?tz=Europe/Paris"
$h = ["Authorization: Bearer " . getenv("TVG_KEY")]; $ch = curl_init("https://api.tvguideapi.com/v1/channels/search?q=france%2024&country=FR"); curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $h]); $id = json_decode(curl_exec($ch), true)["data"][0]["id"];
const h = { Authorization: `Bearer ${process.env.TVG_KEY}` }; const s = await fetch("https://api.tvguideapi.com/v1/channels/search?q=france%2024&country=FR", { headers: h }); const { data } = await s.json(); const day = await fetch(`https://api.tvguideapi.com/v1/channels/${data[0].id}/schedule`, { headers: h });
import os, requests h = {"Authorization": f"Bearer {os.environ['TVG_KEY']}"} r = requests.get("https://api.tvguideapi.com/v1/channels/search", params={"q": "france 24", "country": "FR"}, headers=h) ch = r.json()["data"][0]["id"]
// GET /v1/channels/search?q=france 24&country=FR, in short { "data": [ { "id": "ch_wq31kfsa", "name": "France 24", "country": "FR", "categories": [ "news" ], "listings_from": "2025-10-03" } ], "meta": { "count": 1 } }
The free key reads yesterday, today and the days ahead on every channel. Archive opens past listings.