TVmaze API
Free TV show API with no key: series info, full episode guides, cast, air dates and daily schedules with images. Genuinely open, no signup. Tested example.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the TVmaze API?
TVmaze is a free, key-free TV database API providing show information, complete episode guides, cast and crew, air dates, images and daily broadcast schedules across international networks.
TVmaze is the most practical free TV metadata API, chiefly because it needs no key at all — unlike TMDB and OMDb, which both require registration. Show search, episode lists, cast and schedules are all immediately available.
The schedule endpoints are its standout feature: request what is airing on a given date in a given country and you get every episode with its network and time. That is awkward to assemble from other TV APIs and trivial here.
Quick facts
- Base URL
https://api.tvmaze.com- Authentication
- No API key required for public endpoints. A premium subscription exists for extra features.
- Rate limit
- About 20 requests per 10 seconds per IP.
- Pricing
- Free. Data is CC BY-SA licensed and attribution is required.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the TVmaze API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Search for a TV show by name
GET https://api.tvmaze.com/singlesearch/shows?q=breaking%20bad
curl 'https://api.tvmaze.com/singlesearch/shows?q=breaking%20bad'const res = await fetch("https://api.tvmaze.com/singlesearch/shows?q=breaking%20bad");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.tvmaze.com/singlesearch/shows?q=breaking%20bad", timeout=20)
res.raise_for_status()
print(res.json()){
"id": 169,
"url": "https://www.tvmaze.com/shows/169/breaking-bad",
"name": "Breaking Bad",
"type": "Scripted",
"language": "English",
"genres": [
"Drama",
"Crime",
"Thriller"
],
"status": "Ended",
"runtime": 60,
"averageRuntime": 60,
"premiered": "2008-01-20",
"ended": "2019-10-11",
"officialSite": "http://www.amc.com/shows/breaking-bad",
"schedule": {
"time": "22:00",
"days": [
"Sunday"
]
},
"rating": {
"average": 9.2
},
"weight": 100,
"network": {
"id": 20,
"name": "AMC",
"country": {
"name": "United States",
"code": "US",
"timezone": "America/New_York"
},
"officialSite": null
},
"webChannel": null,
"dvdCountry": null,
"externals": {
"tvrage": 18164,
"thetvdb": 81189,
"imdb": "tt0903747"
},
"image": {
"medium": "https://static.tvmaze.com/uploads/images/medium_portrait/501/1253519.jpg",
"original": "https://static.tvmaze.com/uploads/images/original_untouched/501/1253519.jpg"
},
"summary": "<p><b>Breaking Bad</b> follows protagonist Walter White, a chemistry teacher who lives in New Mexico with his wife and teenage son who has cerebral palsy. White is diagnosed with Stage III cancer and given a prognosis of two years left to live. With a new sense of fearlessness based on his medical prognosis, and a desire to secure his family's financial security, White chooses to enter a dangerous world of drugs and crime and ascends to power in this world. The series explores how a fatal diagnosis such as White's releases a typical man from2. Fetch today's TV schedule for a country
GET https://api.tvmaze.com/schedule?country=US
curl 'https://api.tvmaze.com/schedule?country=US'const res = await fetch("https://api.tvmaze.com/schedule?country=US");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.tvmaze.com/schedule?country=US", timeout=20)
res.raise_for_status()
print(res.json())[
{
"id": 3698770,
"url": "https://www.tvmaze.com/episodes/3698770/the-pulse-2026-08-18-episode-163",
"name": "Episode 163",
"season": 2026,
"number": 163,
"type": "regular",
"airdate": "2026-08-18",
"airtime": "04:00",
"airstamp": "2026-08-19T08:00:00+00:00",
"runtime": 60,
"rating": {
"average": null
},
"image": null,
"summary": null,
"show": {
"id": 15680,
"url": "https://www.tvmaze.com/shows/15680/the-pulse",
"name": "The Pulse",
"type": "News",
"language": "English",
"genres": [],
"status": "Running",
"runtime": 60,
"averageRuntime": 60,
"premiered": "2015-08-13",
"ended": null,
"officialSite": "https://www.bloomberg.com/btv/series/the-pulse-francine-lacqua",
"schedule": {
"time": "04:00",
"days": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
]
},
"rating": {
"average": null
},
"weight": 71,
"network": {
"id": 172,
"name": "Bloomberg TV",
"country": {
"name": "United States",
"code": "US",
"timezone": "America/New_York"
},
"officialSite": null
},
"webChannel": null,
"dvdCountry": null,
"externals": {
"tvrage": 51924,
"thetvdb": null,
"imdb": "tt4507312"
},
"image": {
"medium": "https://static.tvmaze.com/uploads/images/medium_portrait/53/132577.jpg",
"original":Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
singlesearch/shows?q= | string | Optional | Best single match for a show name. breaking bad |
search/shows?q= | string | Optional | All matching shows with relevance scores. girls |
shows/<id>/episodes | path | Optional | Full episode list for a show. 169 |
schedule?country=&date= | string | Optional | What is airing on a date in a country. US |
embed | string | Optional | Embed related resources such as cast or episodes. cast |
Response fields
idinteger- TVmaze show identifier.
namestring- Show title.
genresarray- Genre tags.
statusstring- Running, Ended or To Be Determined.
premiered / endedstring- First and last air dates.
rating.averagenumber- Community rating out of 10, or null.
imageobject- Medium and original poster image URLs.
summarystring- Synopsis as HTML — sanitise before rendering.
What you can build with the TVmaze API
- Build a TV show tracker with full episode guides
- Show what is airing tonight using the schedule endpoints
- Add show metadata and posters to a media library
- Create a watchlist app with air date notifications
Common errors and how to fix them
404 on singlesearch
No show matched closely enough.
Fix: Use /search/shows for fuzzy matching with scores; singlesearch returns 404 rather than an empty result.
Summary contains HTML tags
The summary field is HTML.
Fix: Sanitise before rendering; it typically contains <p> and <b> tags.
429
Rate limit exceeded.
Fix: Stay under roughly 20 requests per 10 seconds; use `embed` to fetch related data in one request instead of several.
TVmaze API — frequently asked questions
Is the TVmaze API free?
Yes, completely free with no API key or registration — which sets it apart from TMDB and OMDb, both of which require signup.
How do I get a show's full episode list?
Request /shows/{id}/episodes, or use ?embed=episodes on the show endpoint to fetch both in a single request.
Can I find out what is on TV tonight?
Yes. The /schedule endpoint takes a country and date and returns every episode airing, with network and time — one of its most useful features.
Do I need to attribute TVmaze?
Yes. The data is CC BY-SA licensed, so attribution and a link back are required when you display it.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
HTML Formatter
Format HTML online with clean, consistent indentation. This HTML formatter handles void elements and preserves pre, script and style exactly. Free and private.
TVmaze is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.