TVMaze TV Show Scraper
Scrape TV data from TVMaze: search shows and people, get ratings, genres, network, IMDb IDs, images and full episode lists.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
mode,query,showId(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.002 per item = $2 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Item returned | Charged per show/episode/person returned. | $0.002 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-13, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
mode | What to fetch: "shows" searches TV shows by name (needs a query), "people" searches actors/crew by name (needs a query), "episodes" lists all episodes of one show (needs a showId). | string |
query | Search text. For mode "shows" this is a show name (e.g. "breaking bad"); for mode "people" it is a person name (e.g. "bryan cranston"). Ignored in "episodes" mode. | string |
showId | TVMaze numeric show id to list episodes for (e.g. 169 = Breaking Bad). Required for mode "episodes"; ignored otherwise. Find ids by running mode "shows" first. | integer |
maxItems | Maximum number of result rows to return (shows, people, or episodes). Deduplicated by id before this limit is applied. | integer |
notionConnector | Optional. Write each item as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default) — results are always saved to the dataset regardless. | string |
notionParentId | Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead. | string |
What you get
A structured dataset — each result includes fields like:
namepremieredairdateratingnetworkurlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Media & Entertainment Data
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
MusicBrainz Scraper
Scrape MusicBrainz artists, releases, recordings, release-groups and labels. Structured rows with MBIDs, dates and tags from $0.20 per 1,000. No API key.
IMDb Search Scraper
Search IMDb for movies, shows, and people. Get the IMDb id, year, top cast, poster, and URL back as clean rows. Batch a whole watchlist at once.
Steam Games Scraper
Scrape Steam games with no API key. Search by name, get store details, price, genres, Metacritic and SteamSpy stats, or pull recent player reviews as JSON.
Books Scraper (Google Books + Open Library)
Search Google Books and Open Library and export clean book data: title, authors, ISBN-13, ratings, covers, and prices. No API key, no login.
Where this tool sits
- Categories
- Media & Entertainment Data
TVMaze Scraper
Search TV shows and people, or list a show's episodes, using the free TVMaze API. No API key, no login. You get clean, flat rows — HTML summary fields are already converted to plain text.
Modes
| Mode | Needs | Returns |
|---|---|---|
shows | query (show name) | Matching TV shows |
people | query (person name) | Matching actors / crew |
episodes | showId (integer) | Every episode of that show |
Find a showId by running shows mode first — each show row includes its id.
Output
One dataset row per result, flagged ok: true.
Shows (mode: "shows"): id, name, type, language, genres (array), status, runtime, premiered, ended, rating (average, 0–10 or null), network (network or web-channel name), country (name), imdb (IMDb id), officialSite, summary (plain text), image (URL), url (TVMaze page).
People (mode: "people"): id, name, country (name), birthday, gender, image (URL), url.
Episodes (mode: "episodes"): showId, episodeId, name, season, number, airdate, runtime, rating, summary (plain text), url.
Fields that can be null
TVMaze omits fields it doesn't have, so any field above can be null — e.g. rating when a show/episode has no votes, ended for a running show, network/country for web-only shows, imdb when no external id is mapped, birthday/gender for some people, or image when no artwork exists.
Pricing
$2.00 per 1,000 rows ($0.002 each), with no run-start fee. Flat rate — no volume tiers, no plan gates — and you are charged only for rows actually returned.
Pay-per-result: you are charged once per genuine result row (ok: true). You are never charged for:
- invalid input (a single
ok: falserow witherrorCode: "BAD_INPUT"), - no matching results (
NO_RESULTS), - an unknown
showId(NOT_FOUND), - network / rate-limit / server errors (
NETWORK/RATE_LIMITED/SERVER_ERROR).
Results are deduplicated by id before charging.
Proxy
The TVMaze API is a public, no-auth JSON API with no anti-bot, so no proxy is required and the default runs without one (saving proxy credits). Only enable Apify Proxy if you hit IP rate limits at very high volume.
Examples
Search shows:
{ "mode": "shows", "query": "breaking bad", "maxItems": 10 }
List a show's episodes:
{ "mode": "episodes", "showId": 169 }
Search people:
{ "mode": "people", "query": "bryan cranston", "maxItems": 5 }
Notes
TVMaze search returns the best matches ranked by relevance (their score). Episode lists are returned in full for the show; use maxItems to cap how many rows you keep. Data is courtesy of TVMaze.com under their licensing terms.