Tony Wang6 min readHow to Scrape TMDB in 2026 (API & Python)
Get TMDB movie and TV data in 2026 — the free official API, no-code tools, or one structured API across platforms — with real JSON examples.
TMDB is one of the few platforms in this series with a real, free, self-serve official API — you can register and get a key in minutes, and it covers most of what a movie/TV product needs. So the honest question isn't "does TMDB have an API," it's "when do you still want a scraping API instead." This guide covers TMDB's own API, no-code options, and a structured multi-platform API, with the legal reality of each laid out up front.
Why use TMDB data?
TMDB's movie, TV, and people data anchors a huge share of film/TV tooling, which powers:
- Catalog enrichment — attach canonical title, cast, genre, and release data to a media app, watchlist, or internal dataset.
- Recommendation and discovery — build genre, era, or "now playing" style browsing and discovery features.
- Talent and filmography tracking — follow a director's or actor's body of work across movie and TV credits.
- Cross-platform rating research — pair TMDB's own rating with IMDb or Metacritic scores for a fuller reception picture than any single source gives.
- Poster and metadata pipelines — TMDB's poster and profile image CDN is a common backing store for media-app artwork.
Is it legal to use/scrape TMDB?
Option 1: TMDB's own free API (and its real limits)
TMDB's developer API is real and it works. Register an account, request a key from your account's API settings, and call it directly — no scraping needed:
curl "https://api.themoviedb.org/3/movie/27205" \
-H "Authorization: Bearer YOUR_TMDB_V4_READ_ACCESS_TOKEN"
# or with the v3 query-param key:
curl "https://api.themoviedb.org/3/movie/27205?api_key=YOUR_TMDB_API_KEY"
That's a legitimate, free way to get TMDB's own movie and TV catalog — title, overview, cast, crew, genres, and TMDB's rating. TMDB's CDN caps requests at roughly 50 requests/second and 20 connections per IP, which is generous for a single-platform lookup tool.
Where it starts to matter less for a bigger pipeline:
- It's TMDB's catalog, not the rendered page. The API returns TMDB's own structured records — it does not give you the "similar titles" module, popularity charts, or user-review threads as they're actually rendered to visitors on themoviedb.org; some of that only exists as page-level presentation.
- A separate account, key, and schema per platform. If your product also pulls IMDb, Letterboxd, or Metacritic, TMDB's API is one more auth model, one more rate limit, and one more response shape to maintain alongside the others.
- Commercial terms need a real read. Non-commercial use is free with attribution; anything that charges users, redistributes TMDB content, or is otherwise commercial needs TMDB's written sign-off first — worth checking against your actual use case before you build on it.
Option 2: No-code tools
Marketplace scraper actors and no-code connectors exist for TMDB-adjacent workflows — mostly wrapping TMDB's own API rather than the site, since the site itself disallows scraping. They're fine for a one-off pull or a spreadsheet export, but for a scheduled pipeline they add a layer of indirection over an API you could otherwise call directly, and they don't solve the multi-platform schema problem either.
Option 3: A structured TMDB API (via Crawlora)
If you want TMDB alongside other platforms in one normalized shape — same auth header, consistent JSON — a TMDB scraping API gives you that. Search across movies, TV, and people:
curl "https://api.crawlora.net/api/v1/tmdb/search?query=inception" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "inception",
"page": 1,
"has_next_page": true,
"results": [
{ "type": "movie", "id": "27205", "title": "Inception", "release_date": "2010-07-15", "overview": "Cobb, a skilled thief...", "uri": "https://www.themoviedb.org/movie/27205-inception" }
]
}
}
Then resolve the id and pull movie, TV, or person detail in Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/tmdb"
hits = requests.get(f"{base}/search", headers=h, params={"query": "inception"}).json()["data"]["results"]
movie_id = hits[0]["id"]
movie = requests.get(f"{base}/movie/{movie_id}", headers=h).json()["data"]
now_playing = requests.get(f"{base}/movie/list", headers=h, params={"category": "now_playing"}).json()["data"]
Movie detail is normalized JSON with cast, crew, and rating (real fields — check the docs):
{
"code": 200,
"msg": "OK",
"data": {
"id": "27205",
"title": "Inception",
"tagline": "Your mind is the scene of the crime.",
"release_date": "2010-07-15",
"year": 2010,
"runtime_minutes": 148,
"genres": ["Action", "Science Fiction", "Adventure"],
"countries": ["United States", "United Kingdom"],
"status": "Released",
"budget": 160000000,
"revenue": 839030630,
"rating": { "average": 8.372, "count": 39524, "review_count": 8 },
"top_crew": [{ "name": "Christopher Nolan", "slug": "525", "jobs": ["Director", "Writer"] }],
"cast": [{ "name": "Leonardo DiCaprio", "slug": "6193", "character": "Dom Cobb" }],
"uri": "https://www.themoviedb.org/movie/27205-inception"
}
}
TV works the same shape, with first_air_year, last_air_year, and number_of_episodes in place of runtime and budget. /tmdb/movie/list and /tmdb/tv/list return curated, filterable lists (category, sort_by, with_genres, min_rating, date_from/date_to, and more) for browsing and discovery, and /tmdb/person returns bio, birth date, photo, and filmography by id — with /tmdb/person/list for browsing people. Store one row per title (or per person) and re-run on a schedule.
What you can collect
Public TMDB catalog data: multi-type search (movie, TV, or person, with id and url); movie and TV detail (title, tagline, overview, release date, runtime or episode count, genres, countries, status, budget/revenue for movies, poster, rating average/count, top crew, and cast with character names); curated and filterable movie/TV lists (now playing, popular, top rated, upcoming, airing today, and genre/rating/date filters); and person detail (bio, birth date, photo, and filmography across movie and TV credits).
Limitations and common challenges
- Know which door you're using. TMDB's own API is free and legitimate for non-commercial single-platform work; scraping the themoviedb.org website itself is explicitly against TMDB's terms either way.
- Commercial use needs a real conversation with TMDB. Attribution alone covers non-commercial use; anything commercial — including a product built on a normalized API that includes TMDB data — should be checked against TMDB's API Terms of Use and, where required, licensed directly with TMDB.
- The API is TMDB's catalog, not everything on the page. Some page-rendered content (review threads, "similar titles" as displayed to users, live popularity charts) isn't a direct API field.
- Per-record fan-out. A full record (title plus cast, crew, and rating) is one call per id; building a catalog means iterating ids from search or list endpoints.
- Public data only. This collects what TMDB already exposes through its API — never a way to bypass TMDB's site restrictions or its commercial licensing terms.
Where this gets used
- Catalog enrichment — attach canonical title, cast, and rating data to a media product.
- Discovery surfaces — power "now playing," genre browsing, and recommendation features.
- Multi-platform reception research — combine TMDB's rating with IMDb and Metacritic scores in one normalized schema.
- Talent tracking — follow a director's or actor's filmography across movie and TV work.
Sources
Start collecting
Try it first, free: run any public URL through the Free Web Scraper, or check whether a site blocks bots with the Anti-Bot Checker — no signup.
Test the search, movie, and person endpoints in the Playground, check the schema in the API docs, and review pricing. TMDB tells you what a title is, who made it, and how TMDB's own community rated it; IMDb adds the web's default rating and review baseline, and Metacritic adds critic-versus-user scoring — pair them for a full reception picture instead of trusting one source. Letterboxd adds the film-community angle TMDB's catalog doesn't cover, and if anime is part of your catalog, how to scrape anime data covers the community databases (AniList, MyAnimeList) that TMDB doesn't track. See also how to choose a web scraping API and is web scraping legal.
Part of our how-to-scrape guide series — every platform we cover, in one index.
Frequently asked questions
Does TMDB have a free API? Why not just use that?
Yes — TMDB's official API (developer.themoviedb.org) is genuinely free and self-serve for non-commercial use, and it's a legitimate first option for a single-platform TMDB lookup tool. A structured scraping API earns its place when you're normalizing TMDB alongside other platforms like IMDb or Metacritic in one schema, or want to skip managing a separate TMDB key and rate-limit model just for one source.
Is it legal to scrape TMDB?
TMDB's Terms of Use prohibit scraping the themoviedb.org website directly. TMDB's own API is the sanctioned path — free for non-commercial use with attribution; commercial use requires a separate written agreement with TMDB. This is not legal advice.
What TMDB data can I collect?
Search results, movie and TV detail (overview, genres, cast, crew, rating, release/air dates, runtime or episode count), curated and filterable lists (now playing, popular, top rated, by genre or rating), and person detail with filmography.
Do I need a TMDB API key to use Crawlora's TMDB endpoints?
No — Crawlora's TMDB endpoints use your Crawlora API key only; you don't need a separate TMDB account or key.
Can I get movies, TV shows, and people from one search?
Yes — /tmdb/search returns mixed results across movie, tv, and person types, each with an id and uri you can resolve to full detail.
Does TMDB's API cover reviews and 'similar titles'?
It returns TMDB's own rating aggregate, but not every page-rendered module (like the live 'similar titles' widget or review threads) as displayed on themoviedb.org has a direct API field.
Can I use TMDB data commercially?
TMDB's own API requires a separate written agreement with TMDB for commercial use beyond attribution-only non-commercial use. Review TMDB's API Terms of Use for your specific use case before building a commercial product.