Bulk export files
The nightly bulk files, on the Complete plan: one gzip of JSON lines per country and one for the world, each slot as Listings gives it, with rows, size and SHA-256. Kept seven days.
Paid plansLive data
GEThttps://api.tvguideapi.com/v1/exports
Try itRuns the real call with your key
200 OK
Parameters
| Parameter | In | Type | Required | Description | Example |
|---|---|---|---|---|---|
| country | query | string | optional | A country code, or ALL for the world file. Leave out for every file. | GB |
On the Complete plan only; other plans get
403 upgrade_required naming Complete. Each file covers midnight UTC of its day to 48 hours after it was made. Download one with /v1/exports/{day}/{file}; a download counts as one call.Request
curl -H "Authorization: Bearer $TVG_KEY" \ "https://api.tvguideapi.com/v1/exports"
$ch = curl_init("https://api.tvguideapi.com/v1/exports");
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/exports", {
headers: { Authorization: `Bearer ${process.env.TVG_KEY}` },
});
const { data, meta } = await r.json();
import os, requests
r = requests.get(
"https://api.tvguideapi.com/v1/exports",
headers={"Authorization": f"Bearer {os.environ['TVG_KEY']}"},
)
data = r.json()["data"]
Sample response
{
"data": [
{
"file": "2026-10-20/GB.jsonl.gz",
"day": "2026-10-20",
"country": "GB",
"channels": 512,
"rows": 61840,
"bytes": 4210388,
"sha256": "9f2c4e...",
"url": "https://api.tvguideapi.com/v1/exports/2026-10-20/GB.jsonl.gz"
}
],
"meta": {
"count": 1,
"next": null,
"took_ms": 41
}
}