TV Shows Scraper avatar

TV Shows Scraper

Pricing

from $6.80 / 1,000 results

Go to Apify Store
TV Shows Scraper

TV Shows Scraper

Scrape TV shows with genres, language, network, country, status, runtime, premiere and end dates, rating and summary. Search by title or browse the catalog. Export to JSON, CSV or Excel.

Pricing

from $6.80 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

TV Shows Scraper

TV Shows Scraper

Here is one real result, with every field the actor returns:

{
"id": 169,
"name": "Breaking Bad",
"type": "Scripted",
"language": "English",
"genres": ["Drama", "Crime", "Thriller"],
"status": "Ended",
"runtime": 60,
"premiered": "2008-01-20",
"ended": "2019-10-11",
"rating": 9.2,
"networkName": "AMC",
"networkCountry": "United States",
"officialSite": "http://www.amc.com/shows/breaking-bad",
"summary": "Breaking Bad 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.",
"imageUrl": "https://static.tvmaze.com/uploads/images/original_untouched/501/1253519.jpg",
"url": "https://www.tvmaze.com/shows/169/breaking-bad",
"weight": 99,
"averageRuntime": 60,
"scheduleTime": "22:00",
"scheduleDays": ["Sunday"],
"networkCountryCode": "US",
"networkTimezone": "America/New_York",
"imdbId": "tt0903747",
"imdbUrl": "https://www.imdb.com/title/tt0903747/",
"thetvdbId": 81189,
"tvrageId": 18164,
"source": "TVmaze",
"observedAt": "2026-08-10T14:19:08.378Z"
}

The most complete TV show catalog scraper available. It returns every field the show record exposes, from genres, status and rating to network, schedule and official site, plus cross-reference IDs for IMDb, TheTVDB and TVRage, and lets you search by title or browse the full catalog.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the TVmaze TV show catalog by title, or browses the full catalog when you leave the search empty, and writes one normalized record per show to the run's dataset. Each record carries the show name, type, language, genres, status, premiere and end dates, runtime, rating, network and country, schedule, official site, summary, cover image and cross-reference IDs for IMDb, TheTVDB and TVRage. Dates are normalized to YYYY-MM-DD, missing values are returned as null, and each record carries an observedAt timestamp.

Quickstart

Open the actor, paste this into the input, and press Run. It searches for the show "breaking bad" and returns the matches.

{
"searchQuery": "breaking bad",
"maxShows": 10
}

Leave searchQuery empty to browse the full show catalog instead of searching for a title.

Input reference

FieldTypeRequiredDefaultDescription
searchQuerystringnobreaking badTitle to search for, for example breaking bad. Leave empty to browse the full show catalog instead of searching.
maxShowsintegerno10Maximum number of shows to collect. Free Apify plans are capped at 10 per run.

Both fields are optional. With an empty input the actor browses the catalog and returns the most popular shows up to maxShows.

Output reference

One dataset item per show. Types: string, number, integer, string[], or null when the source value is absent.

FieldTypeDescription
idintegerShow ID (unique per show).
namestringShow title.
typestringShow type, for example Scripted, Reality, Animation.
languagestringPrimary language.
genresstring[]Genre tags.
statusstringShow status, for example Running, Ended, In Development.
runtimeintegerEpisode runtime in minutes.
averageRuntimeintegerAverage episode runtime in minutes.
premieredstringPremiere date (YYYY-MM-DD).
endedstringEnd date (YYYY-MM-DD), or null if still running.
ratingnumberAverage rating out of 10.
weightintegerPopularity weight (0 to 100).
networkNamestringBroadcast or streaming network.
networkCountrystringNetwork country name.
networkCountryCodestringNetwork country code (ISO 2-letter).
networkTimezonestringNetwork timezone.
scheduleTimestringAir time (24-hour).
scheduleDaysstring[]Days the show airs.
officialSitestringOfficial site URL.
summarystringPlot summary.
imageUrlstringCover image URL.
urlstringTVmaze show URL.
imdbIdstringIMDb title ID.
imdbUrlstringIMDb title URL.
thetvdbIdintegerTheTVDB ID.
tvrageIdintegerTVRage ID.
sourcestringData source label.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringPresent only on a failed run: a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"searchQuery": "breaking bad", "maxShows": 10}):

{
"id": 169,
"name": "Breaking Bad",
"type": "Scripted",
"language": "English",
"genres": ["Drama", "Crime", "Thriller"],
"status": "Ended",
"runtime": 60,
"premiered": "2008-01-20",
"ended": "2019-10-11",
"rating": 9.2,
"networkName": "AMC",
"networkCountry": "United States",
"officialSite": "http://www.amc.com/shows/breaking-bad",
"summary": "Breaking Bad 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.",
"imageUrl": "https://static.tvmaze.com/uploads/images/original_untouched/501/1253519.jpg",
"url": "https://www.tvmaze.com/shows/169/breaking-bad",
"weight": 99,
"averageRuntime": 60,
"scheduleTime": "22:00",
"scheduleDays": ["Sunday"],
"networkCountryCode": "US",
"networkTimezone": "America/New_York",
"imdbId": "tt0903747",
"imdbUrl": "https://www.imdb.com/title/tt0903747/",
"thetvdbId": 81189,
"tvrageId": 18164,
"source": "TVmaze",
"observedAt": "2026-08-10T14:19:08.378Z"
}

The summary is trimmed here for brevity; the full plot summary is returned in every record. All values are real and unmodified.

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~tvmaze-shows-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"the office","maxShows":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~tvmaze-shows-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"maxShows":100}'

Apify CLI:

apify call scrapers_lat/tvmaze-shows-scraper \
--input '{"searchQuery":"breaking bad","maxShows":10}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxShows.

FAQ and troubleshooting

A run returned 0 records. Why? The title matched no show in the catalog. Check the spelling, or leave searchQuery empty to browse the full catalog. Zero-result runs are not charged.

How do I browse instead of searching a title? Leave searchQuery empty. The actor then returns catalog shows up to maxShows.

Why is ended null? The show is still running, so there is no end date. Missing values are returned as null, never invented.

Which cross-reference IDs are included? Each record carries imdbId, thetvdbId and tvrageId (plus an IMDb URL) so you can join to other datasets.

Is this an official TVmaze tool? No. This actor is independent and has no affiliation with TVmaze. It reads only publicly available show catalog data. Use the results in accordance with the source's terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with TVmaze. Accesses only publicly available show catalog data. Use in accordance with the source's terms.