List channels
Every TV channel in the registry, filtered by country, language, category or logo, with one stable id per channel across all our sources.
Free key and every planLive data
GEThttps://api.tvguideapi.com/v1/channels
Try itRuns the real call with your key
200 OK
Parameters
| Parameter | In | Type | Required | Description | Example |
|---|---|---|---|---|---|
| country | query | list | optional | Country codes, ISO 3166-1 alpha-2, comma separated. | GB |
| lang | query | list | optional | Language codes, ISO 639-3. | eng |
| category | query | string | optional | news, sports, kids, movies, music, general... | sports |
| has_logo | query | boolean | optional | Only channels with a logo. | true |
| limit | query | integer | optional | Page size, 1 to 500. Defaults to 100. | 100 |
| cursor | query | string | optional | The cursor from the previous answer's meta.next. See Paging and fields. | |
| fields | query | list | optional | Only these fields, comma separated. | start,title,episode |
Request
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels"
$ch = curl_init("https://api.tvguideapi.com/v1/channels");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("TVG_KEY")],
]);
$answer = json_decode(curl_exec($ch), true);
const r = await fetch("https://api.tvguideapi.com/v1/channels", {
headers: { Authorization: `Bearer ${process.env.TVG_KEY}` },
});
const { data, meta } = await r.json();
import os, requests
r = requests.get(
"https://api.tvguideapi.com/v1/channels",
headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"},
)
data = r.json()["data"]
Sample response
{
"data": [
{
"id": "ch_jw83a3xg",
"name": "BBC One",
"country": "GB",
"languages": [
"eng"
],
"categories": [
"general"
],
"owner": "BBC",
"launched": 1936,
"website": "https://www.bbc.co.uk/bbcone",
"feeds": 3
}
],
"meta": {
"count": 612,
"next": "c_8f21a0",
"took_ms": 41
}
}