ParseForge Scrapers

TVmaze TV Schedule Scraper

parseforge/tvmaze-schedule-scraper

VideosDeveloper toolsOther

Scrapes TVmaze for daily TV schedules, show details, cast, and people. Returns flat rows for episodes, shows, or people based on the mode you choose.

Run this scraper See the API call
Total users
1
Monthly active
0
Total runs
109
Bookmarked
0
Rating
Not rated yet
Last modified
9 days ago

Overview

ParseForge

TVmaze TV Schedule Scraper

Scrape TV schedules, show details, cast lists, and people from TVmaze, up to a million episodes per run. Every episode comes with its air time, network, show summary, and cast. No API key or login. Export to CSV, JSON, Excel, or XML.

TVmaze's free API is great, but building a pipeline around it means handling rate limits, pagination, and schema changes yourself. This Actor reads the public TVmaze endpoints directly and returns clean, flat rows for daily schedules, show searches, full show catalogs, and people lookups. Pick a mode, set a country or a search term, and get structured TV data without writing any code.

Who uses it What they scrape TVmaze for
Content aggregators Build a live TV guide for a specific country and date.
Market researchers Track which shows are airing new episodes this week across networks.
App developers Populate a show-discovery app with synopses, cast, and air times.
Data analysts Export the full show catalog to analyze genre trends over time.

What it does

This Actor collects TVmaze data by mode (daily schedule, show search, show detail, show catalog page, or people search) and returns each result as a flat row.

  • ๐Ÿ“บ Daily schedule: pull every episode airing in a country on a given date, with network and air time.
  • ๐Ÿ” Show search: find shows by name and get their IDs, genres, status, and premiered date.
  • ๐Ÿ“‹ Show detail: fetch a single show's full metadata, including its episode list and cast, by numeric ID.
  • ๐Ÿ“š Show catalog page: paginate through the entire TVmaze show index, 250 shows at a time.
  • ๐Ÿ‘ค People search: look up actors, hosts, and crew by name and get their character history.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with TVmaze data

๐Ÿ“… Build a daily TV guide.

A media startup runs the Actor in schedule mode for 'US' each morning and publishes the night's lineup on their site.

๐Ÿ”Ž Enrich a show database.

A data engineer feeds a list of show IDs into showDetail mode and exports full episode lists and cast to their warehouse.

๐Ÿ“Š Analyze network programming.

A researcher collects a week of schedules across five countries to compare prime-time genre mixes by network.

๐Ÿ‘ฅ Map actor careers.

A casting director searches for an actor in people mode and retrieves every character they have played, with show links.

Why choose this scraper

What you get
No API key TVmaze's public endpoints are read directly, no registration needed.
Five modes One Actor handles schedules, shows, show details, the catalog, and people.
Flat output Nested cast and episode data is flattened into consistent rows for your dataset.
Country filter Pull the daily TV lineup for over 50 countries using ISO-2 codes.

How it compares

This Actor covers all five TVmaze data modes in one place, while the other TVmaze scrapers on Apify focus on subsets like shows and schedules.

Feature ParseForge TVMaze TV Shows Scraper TVMaze Scraper - TV Shows, Episodes, Schedules, Cast TVMaze Scraper - TV Shows, Episodes, Cast & Schedule API
Daily schedule by country and date Yes Yes Yes Yes
Show search by name Yes Yes Yes Yes
Show detail by numeric ID Yes Yes Yes Yes
Full show catalog pagination Yes Not listed Not listed Not listed
People search (actors, hosts, crew) Yes Not listed Not listed Yes
No API key required Yes Yes Yes Yes

Configure the run

Drive the Actor by choosing a mode, then set the country and date for schedules, a show name or ID for show lookups, a page number for the catalog, or a person's name for people search. The Input tab lists every parameter.

A first run with the defaults:

{
 "maxItems": 10,
 "mode": "schedule",
 "country": "US",
 "showsPage": 0
}

A larger pull:

{
 "maxItems": 200,
 "mode": "schedule",
 "country": "US",
 "showsPage": 0
}

Pricing

Pay-per-result: $0.01467 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.47
1,000 results $14.67
10,000 results $146.70

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the TVmaze TV Schedule Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to TVmaze through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/tvmaze-schedule-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results for my schedule query?

Check that you selected the correct country code and that the date is in YYYY-MM-DD format. TVmaze may not have schedule data for every country on every date. Try a major market like 'US' and today's date to verify the Actor is working.

The Actor returns fewer items than my maxItems setting.

The Actor stops when it has read all available data from TVmaze for your query. If you are paginating the show catalog, increase the showsPage value and run again. For schedules, only one day's episodes are available per run.

My show search returns too many unrelated shows.

Make your showQuery more specific. Instead of 'office', try 'the office us'. The search passes your term directly to TVmaze's search endpoint, so experiment with the terms you would use on the TVmaze website.

I get an error when using a show ID in showDetail mode.

Ensure the showId is a valid integer. You can find correct IDs by running a show search first. If the ID is valid but the run fails, TVmaze may have removed that show from their database.

The people search returns no match for a known actor.

Try different variations of the name. TVmaze's people search can be sensitive to exact spelling and punctuation. Use the name as it appears on the TVmaze website for best results.

FAQ

Question Answer
Do I need a TVmaze API key? No. This Actor uses TVmaze's free, public REST API and requires no key or registration.
What date format does the schedule mode expect? Use YYYY-MM-DD, for example 2025-03-15. If you leave the date field empty, it defaults to today in the TVmaze timezone.
How do I find a show's ID for showDetail mode? Run the Actor in show search mode first with the show's name. The returned rows include the numeric show ID you can then pass to showDetail mode.
Can I scrape the entire TVmaze show catalog? Yes. Use the show catalog page mode and increment the page number. Each page returns up to 250 shows. Set maxItems high enough to cover the pages you need.
Which countries are supported for the daily schedule? Over 50 countries are available, including the US, GB, CA, AU, DE, FR, JP, KR, BR, and IN. The full list is in the country dropdown of the input editor.
Does the Actor return cast and character information? Yes. Show detail mode includes cast and characters. People search mode returns the shows and characters a person is known for.
What export formats are supported? You can export your dataset to CSV, JSON, Excel, or XML from the Apify platform.
How many episodes can I collect in one run? You set the maximum with the maxItems field, up to 1,000,000 items per run.
Can I search for a person by name? Yes. Switch the mode to people search and enter the person's name in the peopleQuery field.
Is the data real-time? The Actor reads TVmaze's live API, so schedule and show data reflects what TVmaze currently has.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by TVmaze.com. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
maxItems integer How many scheduled episodes to collect per run. 10
mode string (5 options) What to pull: daily TV schedule, show search, single show detail, the full show catalog page, or a people search. schedule
country string (55 options) Country code for the daily TV schedule. Applies to schedule mode only. US
date string Date in YYYY-MM-DD format. Defaults to today if blank. Applies to schedule mode only. not set
showQuery string Search term for shows (e.g. 'breaking bad', 'office'). Used when mode is 'shows'. not set
showId integer Numeric show ID for the 'showDetail' mode (e.g. 169 = Breaking Bad). not set
showsPage integer Page index for the 'showsIndex' mode (0-based, 250 shows per page). 0
peopleQuery string Search term for people. Used when mode is 'people'. not set

Pricing

from $11.00 per 1,000 results

Charged forWhat it isPrice each
Result Item Charged once per result collected. $0.011 to $0.01467

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~tvmaze-schedule-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run TVmaze TV Schedule Scraper on Apify All scrapers