Discover/tvmaze.com API
live

tvmaze.com APIwww.tvmaze.com

Search TV shows, get full details, list all episodes, and look up by IMDb ID via the TVmaze database. Four endpoints, structured JSON responses.

Endpoint health
verified 2h ago
get_show
search_shows
get_episodes
lookup_show_by_imdb
4/4 passing latest checkself-healing
Endpoints
4
Updated
3h ago
Try it
Search query to match against show names.
api.parse.bot/scraper/f87c5156-8f01-4689-890e-d78df8810fe4/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Use it in your codegrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/f87c5156-8f01-4689-890e-d78df8810fe4/search_shows?query=breaking+bad' \
  -H 'X-API-Key: $PARSE_API_KEY'
Or use the typed Python SDKfully typed · autocompletes

Typed Python client. Install the CLI, sign in, then pull this API’s generated client:

pip install parse-sdk
parse login
parse add --marketplace tvmaze-com-api

parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.


"""Walkthrough: TVmaze SDK — search shows, drill into details, list episodes."""
from parse_apis.TVmaze_API import TVmaze, ShowNotFound

client = TVmaze()

# Search for shows by name — limit caps total items fetched.
for result in client.shows.search(query="breaking bad", limit=5):
    print(result.name, result.rating, result.genres)

# Drill into the first result's full details via the navigation op.
hit = client.shows.search(query="the office", limit=1).first()
if hit:
    show = hit.details()
    print(show.name, show.status, show.network.name, show.rating)

    # List episodes for that show via sub-resource.
    for ep in show.episodes.list(limit=3):
        print(f"  S{ep.season}E{ep.number}: {ep.name} (aired {ep.airdate}, rating {ep.rating})")

# Look up a show by IMDb ID directly.
show = client.shows.lookup_by_imdb(imdb_id="tt0944947")
print(show.name, show.genres, show.premiered)

# Typed error handling for a non-existent show.
try:
    bad = client.shows.lookup_by_imdb(imdb_id="tt0000000")
except ShowNotFound as exc:
    print(f"Not found: {exc}")

print("exercised: shows.search / details / episodes.list / lookup_by_imdb / ShowNotFound")
All endpoints · 4 totalmissing one? ·

Full-text search over TV shows by name. Returns matching shows with relevance score, premiere date, genres, rating, and status. Results are ordered by relevance score descending. The API returns all matches in a single page (typically under 10 results).

Input
ParamTypeDescription
queryrequiredstringSearch query to match against show names.
Response
{
  "type": "object",
  "fields": {
    "total": "integer count of results returned",
    "results": "array of show search result objects with score, id, name, premiered, genres, rating, status, language, url"
  },
  "sample": {
    "data": {
      "total": 8,
      "results": [
        {
          "id": 169,
          "url": "https://www.tvmaze.com/shows/169/breaking-bad",
          "name": "Breaking Bad",
          "score": 1.1968992,
          "genres": [
            "Drama",
            "Crime",
            "Thriller"
          ],
          "rating": 9.2,
          "status": "Ended",
          "language": "English",
          "premiered": "2008-01-20"
        }
      ]
    },
    "status": "success"
  }
}

About the tvmaze.com API

This API exposes 4 endpoints covering TVmaze's TV show database — from full-text show search to complete episode lists. The search_shows endpoint returns relevance-scored results with premiere date, genres, rating, and status. get_episodes delivers every episode across all seasons for a given show, including airdate, runtime, and per-episode rating. Lookups work by either TVmaze ID or IMDb ID.

Search and Discovery

The search_shows endpoint accepts a query string and returns an array of matching shows ordered by relevance score descending. Each result includes the TVmaze id, name, premiered date, genres, language, status, rating, and a direct url to the TVmaze page. Results are returned in a single page — typically under 10 entries — so there is no pagination to handle.

Show Details

Once you have a TVmaze numeric ID, get_show returns the full record for that show. Response fields include type (scripted, reality, etc.), network (with name and country), status, ended date (or null if ongoing), image URLs in both medium and original sizes, and a rating number. The lookup_show_by_imdb endpoint exposes the same field set but accepts an IMDb identifier in ttNNNNNNN format instead — useful when your source data uses IMDb IDs rather than TVmaze IDs.

Episode Data

The get_episodes endpoint takes a show_id and returns every episode ever recorded for that show. Each episode object contains season, number, name, type, airdate, airtime, runtime, rating, summary, and a url. The total field at the top level gives the count of episodes returned, which covers all seasons in a single response with no pagination.

Reliability & maintenanceVerified

The tvmaze.com API is a managed, monitored endpoint for www.tvmaze.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when www.tvmaze.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official www.tvmaze.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2h ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a TV show search feature using search_shows results filtered by genre or status
  • Populate a show detail page with network, schedule, and image data from get_show
  • Cross-reference your IMDb-based watchlist with TVmaze records using lookup_show_by_imdb
  • Generate episode guides with airdate and runtime data from get_episodes
  • Track whether a series is ongoing or ended using the status and ended fields
  • Aggregate per-episode and per-show ratings to compare across a genre
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000250 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does TVmaze have an official developer API?+
Yes. TVmaze publishes a public REST API documented at https://www.tvmaze.com/api. It is free to access with rate limits applied to unauthenticated requests; a premium subscription raises those limits.
What does `get_episodes` return, and does it support filtering by season?+
It returns all episodes for a show in a single array — no season filter is available on the endpoint itself. Each episode object includes season, number, airdate, runtime, rating, and summary, so you can filter the array by season number client-side after receiving the full list.
Does `search_shows` support pagination or return more than the first page of results?+
The endpoint returns all matches in a single response, typically under 10 results. There is no page or offset parameter to retrieve additional results. If your use case requires broader coverage, you can fork the API on Parse and revise it to add pagination support or query multiple variations of a title.
Does the API return cast, crew, or character data for a show?+
Not currently. The four endpoints cover show metadata, episode lists, and IMDb lookups. Cast members, character names, and crew credits are not part of any current response. You can fork the API on Parse and revise it to add an endpoint that returns cast data for a given show ID.
What is the difference between `get_show` and `lookup_show_by_imdb` in terms of returned data?+
Both endpoints return the same field set: id, name, type, status, ended, genres, rating, network, image, and url. The only difference is the lookup key — get_show uses a TVmaze numeric show_id, while lookup_show_by_imdb accepts an IMDb identifier like tt0903747.
Page content last updated . Spec covers 4 endpoints from www.tvmaze.com.
TVmaze API — TV Show & Episode Data · Parse