TV show data without the TVMaze docs rabbit hole
TVMaze is the best free TV database — clean JSON, no key, solid coverage. The endpoints are simple individually, but stitching search → show → episodes → schedule into a usable dataset means four different response shapes and a surprising amount of HTML in the summaries. Everyone who's built a "what's on tonight" feed has written the same normalizer.
TVMaze Shows — TV & Episode Data is that normalizer. Search, fetch a show, pull episodes, or grab a schedule:
// search shows
{ "mode": "search", "query": "breaking bad", "limit": 10 }
// a show by TVMaze ID
{ "mode": "show", "query": "169" }
// episodes of a show
{ "mode": "episodes", "query": "169", "limit": 20 }
// what aired in a country on a date
{ "mode": "schedule", "country": "US", "date": "2026-08-18" }
Each show record: id, name, type, language, genres, status, runtime, premiered, network, country, average_rating, url, image_medium, and a stripped summary (HTML tags removed). Episode mode returns season/number/name/airdate rows; schedule mode returns one row per aired episode with the show attached.
Where it earns its keep
TV guide clones, recommendation engines, "new episode" alerting, or a personal watchlist feed. Schedule a run per country each morning and diff against yesterday to build a "tonight" digest — the summaries are already cleaned, so you can pipe them straight into a notification or an LLM blurb.
Clean by construction
Every value is stringified and nulls collapse to empty strings, so the dataset column model stays valid. Retry/backoff handles the occasional upstream hiccup. No API key required.
Try it: TVMaze Shows on Apify — show & episode data, no key, agent-friendly.