TVMaze

Entertainment API · Global · TV schedules, episodes, and show data

How to Use This API

1. Search for a Show

https://api.tvmaze.com/search/shows?q=breaking%20bad

2. Get Show by TVmaze ID

https://api.tvmaze.com/shows/169

169 = Breaking Bad.

3. Episode List for a Show

https://api.tvmaze.com/shows/169/episodes

4. Today's TV Schedule

https://api.tvmaze.com/schedule?country=US&date=2026-06-16

5. JavaScript — Find Next Episode

async function nextEpisode(showName) {
  const search = await fetch(
    `https://api.tvmaze.com/search/shows?q=${showName}`
  );
  const results = await search.json();
  if (!results.length) { console.log('Show not found'); return; }
  
  const show = results[0].show;
  const episodes = await fetch(
    `https://api.tvmaze.com/shows/${show.id}/episodes`
  );
  const allEp = await episodes.json();
  
  const now = new Date();
  const upcoming = allEp.filter(ep => new Date(ep.airstamp) > now);
  
  if (upcoming.length) {
    const next = upcoming[0];
    console.log(`Next ${show.name}: S${next.season}E${next.number}`);
    console.log(`"${next.name}" — ${next.airdate}`);
  } else {
    console.log(`No upcoming ${show.name} episodes found`);
  }
}

nextEpisode('stranger things');

6. Python — Show Cast

import requests

def get_cast(show_name):
    search = requests.get(
        'https://api.tvmaze.com/search/shows',
        params={'q': show_name}
    ).json()
    if not search:
        print('Show not found')
        return
    
    show_id = search[0]['show']['id']
    cast = requests.get(
        f'https://api.tvmaze.com/shows/{show_id}/cast'
    ).json()
    
    print(f"Cast of {search[0]['show']['name']}:")
    for person in cast[:10]:
        char = person['character']['name']
        actor = person['person']['name']
        print(f"  {char} — played by {actor}")

get_cast('the office')

TL;DR

TVMaze is a comprehensive, community-maintained TV database API covering thousands of shows across US, UK, and international networks. Search shows by name, get full episode lists with airdates, season/episode numbers, runtimes, and ratings. Access cast and crew information, network details, schedule data by country and date, and embedded show images. Features include exact ID lookups, schedule queries, and episode-by-episode tracking. The go-to API for building TV guide apps, episode trackers, and entertainment dashboards.

Quick start: https://api.tvmaze.com/search/shows?q=breaking%20bad

No API key needed — just make a request!

Search Breaking Bad: https://api.tvmaze.com/search/shows?q=breaking%20bad

Frequently Asked Questions

What data is available per show?
Name, TVmaze ID, URL, type (Reality, Scripted, etc.), language, genres, status (Running/Ended), runtime, average rating, network, schedule, summary, official site, and embedded images.
Do I need an API key?
No. TVMaze is completely free and open. No API key or registration required.
How are episodes ordered?
Episodes are ordered by season and episode number. Each episode includes airdate, airtime, season/episode numbers, name, summary, and runtime.
Can I get the current week's schedule?
Yes. Use /schedule with optional country and date parameters. Omit date for the current day's schedule.
What countries are supported for schedules?
The schedule endpoint supports many countries including US, UK, Canada, Australia, Germany, France, and more. Defaults to US if not specified.
Are there rate limits?
TVMaze requests reasonable usage. For high-volume applications, cache aggressively and consider using their data dumps for static data.

API Details

API URL
https://api.tvmaze.com/
Documentation
tvmaze.com/api
Category
Entertainment
Authentication
Not Required
Geographic Coverage
Global — US, UK, and international shows

What You Can Build