Watch a channel free
The official free ways to watch a TV channel: the broadcaster's own player, or the FAST service (Pluto TV, Samsung TV Plus, Plex, Roku) that carries it, with the watch page and the country.
Free key and every planLive data
GEThttps://api.tvguideapi.com/v1/channels/{id}/free-view
Try itRuns the real call with your key
200 OK
Parameters
| Parameter | In | Type | Required | Description | Example |
|---|---|---|---|---|---|
| id | path | string | required | The channel id. Ids come from Find a channel. | ch_jw83a3xg |
Watch pages only, never stream addresses. Works for guide-only ids too (
g:...): most FAST channels are not in the channel registry, and their free watch page is joined to their guide id.Request
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/channels/ch_jw83a3xg/free-view"
$ch = curl_init("https://api.tvguideapi.com/v1/channels/ch_jw83a3xg/free-view");
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/ch_jw83a3xg/free-view", {
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/ch_jw83a3xg/free-view",
headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"},
)
data = r.json()["data"]
Sample response
{
"data": [
{
"service": "Pluto TV",
"kind": "fast",
"country": "US",
"watch_url": "https://pluto.tv/live-tv/",
"signup": "none",
"checked": "2026-10-07"
}
],
"meta": {
"count": 1,
"next": null,
"took_ms": 41
}
}