Top 10 Free Movie APIs for Developers (2026)
Best free APIs for movie and TV show data
Start Building with Hypereal
Access Kling, Flux, Sora, Veo & more through a single API. Free credits to start, scale to millions.
No credit card required • 100k+ developers • Enterprise ready
Top 10 Free Movie APIs for Developers in 2026
Building a movie app, recommendation engine, or entertainment dashboard? You need a reliable movie API. This guide covers the 10 best free movie and TV show APIs available in 2026, with code examples for each.
Quick Comparison
| API | Free Tier | Rate Limit | TV Shows | Images | Ratings |
|---|---|---|---|---|---|
| TMDB | Unlimited | 40 req/10s | Yes | Yes | Yes |
| OMDB | 1,000 req/day | 1,000/day | Yes | Posters | Yes (IMDb) |
| TVmaze | Unlimited | 20 req/10s | Yes | Yes | Yes |
| Trakt | 1,000 req/day | 1,000/day | Yes | No | Yes |
| JustWatch | Unofficial | Varies | Yes | Yes | Yes |
| Watchmode | 1,000 req/month | Varies | Yes | Yes | Yes |
| Movie of the Night | 10,000 req/month | Varies | Yes | Yes | Yes |
| IMDb (unofficial) | Varies | Varies | Yes | Yes | Yes |
| Streaming Availability | 100 req/day | 100/day | Yes | Yes | Yes |
| Kitsu | Unlimited | Moderate | Anime | Yes | Yes |
1. TMDB (The Movie Database) -- Best Overall
TMDB is the gold standard for free movie APIs. It has the most comprehensive database, excellent documentation, and a generous free tier.
Key features:
- 900,000+ movies and 160,000+ TV shows
- High-resolution images and posters
- Cast, crew, and production details
- Available in 40+ languages
- Community-driven data
Get your API key
- Create a free account at themoviedb.org
- Go to Settings > API and request an API key
- Choose "Developer" for free access
Code example
import requests
API_KEY = "your_tmdb_api_key"
BASE_URL = "https://api.themoviedb.org/3"
# Search for a movie
response = requests.get(f"{BASE_URL}/search/movie", params={
"api_key": API_KEY,
"query": "Inception",
"language": "en-US"
})
results = response.json()["results"]
for movie in results[:3]:
print(f"{movie['title']} ({movie['release_date'][:4]}) - Rating: {movie['vote_average']}")
// Node.js / fetch
const API_KEY = "your_tmdb_api_key";
const response = await fetch(
`https://api.themoviedb.org/3/search/movie?api_key=${API_KEY}&query=Inception`
);
const data = await response.json();
data.results.slice(0, 3).forEach(movie => {
console.log(`${movie.title} (${movie.release_date.slice(0, 4)}) - ${movie.vote_average}`);
});
Get trending movies
# Get this week's trending movies
response = requests.get(f"{BASE_URL}/trending/movie/week", params={
"api_key": API_KEY
})
trending = response.json()["results"]
for movie in trending[:5]:
print(f"Trending: {movie['title']} - {movie['vote_average']}/10")
2. OMDB (Open Movie Database) -- Best for IMDb Data
OMDB gives you direct access to IMDb ratings, Rotten Tomatoes scores, and Metacritic data in a single API call.
Free tier: 1,000 requests per day
Code example
import requests
API_KEY = "your_omdb_api_key" # Get free key at omdbapi.com
# Search by title
response = requests.get("https://www.omdbapi.com/", params={
"apikey": API_KEY,
"t": "The Dark Knight",
"type": "movie"
})
movie = response.json()
print(f"Title: {movie['Title']}")
print(f"IMDb Rating: {movie['imdbRating']}")
print(f"Rotten Tomatoes: {movie['Ratings'][1]['Value']}")
print(f"Metacritic: {movie['Metascore']}")
const response = await fetch(
`https://www.omdbapi.com/?apikey=YOUR_KEY&t=The+Dark+Knight&type=movie`
);
const movie = await response.json();
console.log(`${movie.Title} - IMDb: ${movie.imdbRating}, RT: ${movie.Ratings[1]?.Value}`);
3. TVmaze -- Best for TV Show Data
TVmaze specializes in TV show data with deep episode-level information, scheduling, and cast data. No API key required for basic usage.
Code example
import requests
# No API key needed for basic endpoints
response = requests.get("https://api.tvmaze.com/search/shows", params={
"q": "Breaking Bad"
})
shows = response.json()
for item in shows[:3]:
show = item["show"]
print(f"{show['name']} - Rating: {show['rating']['average']}")
print(f" Genres: {', '.join(show['genres'])}")
print(f" Status: {show['status']}")
Get episode schedule
# Get today's TV schedule for the US
response = requests.get("https://api.tvmaze.com/schedule", params={
"country": "US"
})
episodes = response.json()
for ep in episodes[:5]:
show_name = ep["show"]["name"]
print(f"{show_name} - S{ep['season']}E{ep['number']}: {ep['name']}")
4. Trakt -- Best for Watch History and Recommendations
Trakt focuses on user watch history, lists, and social features. Great for building personalized recommendation engines.
Free tier: 1,000 API calls per day
import requests
headers = {
"Content-Type": "application/json",
"trakt-api-version": "2",
"trakt-api-key": "your_client_id"
}
# Get trending movies
response = requests.get(
"https://api.trakt.tv/movies/trending",
headers=headers
)
trending = response.json()
for item in trending[:5]:
movie = item["movie"]
print(f"{movie['title']} ({movie['year']}) - Watchers: {item['watchers']}")
5. JustWatch (Unofficial) -- Best for Streaming Availability
JustWatch tracks which movies and shows are available on which streaming platforms. While there is no official free API, community-maintained libraries provide access.
# Using the justwatch-python package
# pip install justwatch
from justwatch import JustWatch
jw = JustWatch(country="US")
results = jw.search_for_item(query="Dune")
for item in results["items"][:3]:
title = item["title"]
offers = item.get("offers", [])
platforms = set(o["package_short_name"] for o in offers)
print(f"{title} - Available on: {', '.join(platforms)}")
6. Watchmode -- Best for Streaming Source Data
Watchmode provides structured data about which streaming services carry each title, including direct deep links.
Free tier: 1,000 API calls per month
import requests
API_KEY = "your_watchmode_key"
response = requests.get(f"https://api.watchmode.com/v1/search/", params={
"apiKey": API_KEY,
"search_field": "name",
"search_value": "Stranger Things"
})
results = response.json()["title_results"]
for title in results[:3]:
print(f"{title['name']} ({title['year']}) - Type: {title['type']}")
7. Movie of the Night API -- Best for Discovery
Movie of the Night focuses on content discovery with curated recommendations and filtering.
Free tier: 10,000 requests per month
import requests
headers = {"x-rapidapi-key": "your_rapidapi_key"}
response = requests.get(
"https://movie-of-the-night.p.rapidapi.com/search",
headers=headers,
params={"query": "sci-fi", "type": "movie"}
)
for movie in response.json()[:5]:
print(f"{movie['title']} - Streaming on: {', '.join(movie.get('services', []))}")
8. IMDb Unofficial APIs -- Best for Raw IMDb Data
Several unofficial IMDb APIs are available on RapidAPI that scrape or mirror IMDb data.
import requests
headers = {
"x-rapidapi-key": "your_rapidapi_key",
"x-rapidapi-host": "imdb8.p.rapidapi.com"
}
response = requests.get(
"https://imdb8.p.rapidapi.com/auto-complete",
headers=headers,
params={"q": "Oppenheimer"}
)
results = response.json()["d"]
for item in results[:3]:
print(f"{item['l']} ({item.get('y', 'N/A')}) - {item.get('s', '')}")
Warning: Unofficial APIs may break without notice. Use TMDB or OMDB for production applications.
9. Streaming Availability API -- Best for Multi-Platform Search
This API aggregates streaming data across 150+ services in 60+ countries.
Free tier: 100 requests per day on RapidAPI
import requests
headers = {
"x-rapidapi-key": "your_rapidapi_key",
"x-rapidapi-host": "streaming-availability.p.rapidapi.com"
}
response = requests.get(
"https://streaming-availability.p.rapidapi.com/shows/search/filters",
headers=headers,
params={
"country": "us",
"catalogs": "netflix",
"genres": "action",
"order_by": "rating",
"output_language": "en"
}
)
for show in response.json()["shows"][:5]:
print(f"{show['title']} - Rating: {show.get('rating', 'N/A')}")
10. Kitsu -- Best for Anime
Kitsu is the best free API for anime and manga data. No API key required.
import requests
response = requests.get("https://kitsu.io/api/edge/anime", params={
"filter[text]": "Attack on Titan",
"page[limit]": 5
})
for anime in response.json()["data"]:
attrs = anime["attributes"]
print(f"{attrs['canonicalTitle']} - Rating: {attrs['averageRating']}")
print(f" Episodes: {attrs['episodeCount']}, Status: {attrs['status']}")
How to Choose the Right API
Use this decision tree:
- Building a general movie app? Start with TMDB -- it has everything.
- Need IMDb/RT ratings? Use OMDB as a supplement.
- Building a "where to watch" feature? Use Streaming Availability or Watchmode.
- TV show scheduling? TVmaze is unbeatable.
- Anime app? Kitsu is purpose-built for this.
- Recommendation engine? Combine TMDB data with Trakt user behavior.
Building a Complete Movie App
For most projects, you will want to combine two or three APIs:
import requests
class MovieService:
def __init__(self, tmdb_key, omdb_key):
self.tmdb_key = tmdb_key
self.omdb_key = omdb_key
def get_movie_details(self, title):
# Get rich data from TMDB
tmdb = requests.get("https://api.themoviedb.org/3/search/movie", params={
"api_key": self.tmdb_key,
"query": title
}).json()["results"][0]
# Get ratings from OMDB
omdb = requests.get("https://www.omdbapi.com/", params={
"apikey": self.omdb_key,
"t": title
}).json()
return {
"title": tmdb["title"],
"overview": tmdb["overview"],
"poster": f"https://image.tmdb.org/t/p/w500{tmdb['poster_path']}",
"tmdb_rating": tmdb["vote_average"],
"imdb_rating": omdb.get("imdbRating"),
"rotten_tomatoes": next(
(r["Value"] for r in omdb.get("Ratings", [])
if r["Source"] == "Rotten Tomatoes"), None
),
}
# Usage
service = MovieService("tmdb_key", "omdb_key")
movie = service.get_movie_details("Dune: Part Two")
print(movie)
Adding AI-Powered Features
Want to go beyond basic movie data? You can use AI APIs to add intelligent features to your movie app:
- AI-generated movie summaries from plot descriptions
- Poster style transfer or AI-enhanced thumbnails
- Voice narration of movie reviews
Hypereal AI offers image generation, video creation, and text-to-speech APIs that pair well with movie data. For example, generate custom movie poster variations or create AI-narrated review videos. Sign up for free starter credits to experiment.
Conclusion
TMDB is the clear winner for most use cases -- it is free, comprehensive, and well-documented. Supplement it with OMDB for ratings data and a streaming availability API for "where to watch" features.
All 10 APIs on this list offer free tiers sufficient for development and small-scale production. Start with TMDB, add others as needed, and you will have a complete movie data stack without spending a dollar.
Related Articles
Start Building Today
Get 35 free credits on signup. No credit card required. Generate your first image in under 5 minutes.
