133.5M 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. On the Live plan; the free key reads yesterday.
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.
3 channels with what is on now, the sport worth knowing about this week, and the endpoints that give you every slot. Times are Africa/Gaborone.
Counted from our own listings every hour. The detail behind each figure is one API call away.
Every call below answers for Botswana as shown. The Free key reads yesterday; the plans add today, the days ahead, changes and the archive.
| Endpoint | What it returns | Plan | |
|---|---|---|---|
| GET /v1/countries/BW/channels | Every TV channel in one country, ordered the way its own guides list them, with ids, names, logos and categories. | Free key | Docs |
| GET /v1/countries/BW/now | What is on now on every TV channel in a country, with what comes next, in one call. | Live and above | Docs |
| GET /v1/countries/BW/tonight | Prime time tonight on every TV channel in a country, from the local hour you choose, in one grid. | Live and above | Docs |
| GET /v1/countries/BW/coverage | How full the TV data is for a country on a day: the share of programmes with a description, category, episode number and more. | Free key | Docs |
| GET /v1/guide | A TV guide grid for up to 50 channels over a window you choose, every slot with its times in UTC, ready to draw. | Free key | Docs |
| GET /v1/channels/{id}/schedule | A TV channel's day slot by slot: start and stop in UTC, title, description, category, and the series and episode where we matched it. | Free key | Docs |
| GET /v1/events?country=BW | Sports events on TV by sport, league and day, in every country or only those on air where you are. | Live and above | Docs |
| GET /v1/changes?country=BW | Every TV listing that moved, appeared or disappeared since a time you give, to keep your own copy of the guide in step. | Live and above | Docs |
| GET /v1/channels/{id}/history | Past schedules for a TV channel from the archive, slot by slot over any window of up to 31 days, with the same fields as today. | Archive | Docs |
| GET /v1/xmltv?country=BW | A country or a set of channels as a standard XMLTV file, up to 14 days ahead, for media centres and IPTV players. | Live and above | Docs |
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/countries/BW/now"
$ctx = stream_context_create(["http" => ["header" => "Authorization: Bearer " . getenv("TVG_KEY")]]); $r = json_decode(file_get_contents("https://api.tvguideapi.com/v1/countries/BW/now", false, $ctx), true); foreach ($r["data"] as $c) echo $c["channel"], " ", $c["now"]["title"] ?? "", "\n";
const r = await fetch("https://api.tvguideapi.com/v1/countries/BW/now", { headers: { Authorization: `Bearer ${process.env.TVG_KEY}` } }); for (const c of (await r.json()).data) console.log(c.channel, c.now?.title);
import os, requests r = requests.get("https://api.tvguideapi.com/v1/countries/BW/now", headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"}) for c in r.json()["data"]: print(c["channel"], (c["now"] or {}).get("title"))
// GET /v1/countries/BW/now, one channel, in short { "data": [ { "channel": "ch_34mvbf20", "now": { "start": "2026-11-02T20:00:00Z", "stop": "2026-11-02T22:00:00Z", "title": "Liga Portugal Betclic - Benfica x Alverca (Direto)", "progress": 0.13 }, "next": { "start": "2026-11-02T21:09:00Z", "title": "Emissão Especial" } } ], "meta": { "count": 5, "at": "2026-11-02T20:15:40Z" } }
The key competitions first, then the rest with a named competition. Every event and every channel is GET /v1/events?country=BW.
| Kick-off | Event | Competition | Channels | Showing |
|---|---|---|---|---|
| 21:30 Tue 3 Nov | Jogo De Futebol Feminino v Scu Torreense x SLB | Football | 1 | Repeat |
| 21:40 Tue 3 Nov | Jogo De Futebol Feminino Seniores v Scu Torreense x SLB | Football | 1 | Repeat |
| 13:00 Wed 4 Nov | Jogo De Juniores v UEFA Youth League Pafos FC x SLB | Football | 1 | Repeat |
By category and by owner, from the channel registry.
The TV guide for Botswana covers 3 channels, 5 of them with a schedule today, and most of its main channels run 4 days ahead. Every time on this page is Africa/Gaborone, and its listings history reaches back to 2023.
Most of Botswana's channels are entertainment and general channels, and the biggest owners are YMH Group. This week 3 sports events are on TV in Botswana, 0 of them live.
Developers get the same data from the TV Guide API: every channel in Botswana with GET /v1/countries/BW/channels, what is on now with GET /v1/countries/BW/now, and a full day with GET /v1/guide?country=BW.
We list 3 channels in Botswana, 5 of them with a schedule today.
Most of its main channels have listings 4 days ahead; some go further.
This page shows Africa/Gaborone. The API returns UTC and converts to any time zone you pass.
With a TV Guide API key: GET /v1/countries/BW/now for what is on now, or GET /v1/guide?country=BW for a whole day. The free key reads yesterday.
3 events are on Botswana's channels this week. Every one, with its channels, is GET /v1/events?country=BW, or see Where to watch.
Every country has one page like this one. Channel by channel detail lives in the API: every country.