Your personal gateway to IMDb data. Search for movies, series and people and get structured information in seconds.
- π Search movies, series, miniseries and people by name or title
- π¬ Detailed movie info including cast, crew, ratings and more
- π₯ Detailed person info with biography, filmography and images
- πΊ TV series and miniseries support with seasons and episodes
- π Localized results in multiple languages (set globally or per request)
- π Release dates and box office information
- π International titles and alternate titles (AKAs) via
get_akas - πΈ Poster images and backdrops
- π Ratings from IMDb and other sources
- π User reviews and ratings via
get_reviews - π Movie trivia and interesting facts via
get_trivia - ποΈ Full filmography for actors, directors and writers via
get_filmography - π Typed Pydantic models for predictable responses
- β‘ Built-in caching for faster repeated requests
- β No API keys required
pip install imdbinfofrom imdbinfo import search_title, get_movie, get_name, get_season_episodes, get_reviews, get_trivia
# Search for a title
results = search_title("The Matrix")
for movie in results.titles:
print(f"{movie.title} ({movie.year}) - Rating: {movie.rating} - {movie.imdb_id}")
# Get movie details
movie = get_movie("0133093") # or 'tt0133093'
print(movie.title, movie.year, movie.rating)
# Get movie kind:
print(movie.kind) # movie, tvSeries, tvMiniSeries, tvMovie, tvEpisode, tvSpecial, tvShort, short, videoGame, video, musicVideo, podcastEpisode, podcastSeries
print(movie.is_series()) # False
# Get person details
person = get_name("nm0000206") # or '0000206'
print(person.name, person.birth_date)The movie object provides helpful methods to identify its type:
movie.is_series()β ReturnsTrueif the movie is a series.movie.is_episode()β ReturnsTrueif the movie is an episode.
Depending on the type, you can access additional information:
- For series: use
movie.info_seriesto get series details (creators, seasons, episodes, ...) - For episodes: use
movie.info_episodeto get episode details
from imdbinfo import get_movie, get_season_episodes
# Fetch a TV series as a Movie object
walking_dead_serie = get_movie("tt1520211") # Walking Dead
# Check if the object is a series
print(walking_dead_serie.is_series()) # True
# Access series-specific information
print(f"Series Info: {walking_dead_serie.info_series}")
# Retrieve episodes for the series season 1
walking_dead_episodes = get_season_episodes(walking_dead_serie.imdb_id, season=1)
# Print details for the first 3 episodes from the season 1
for episode_info in walking_dead_episodes[:3]:
print(episode_info)
# Fetch a single episode as a Movie object and check its type
episode_detail = get_movie(episode_info.imdb_id)
print("Is Episode:", episode_detail.is_episode()) # True
# Access episode-specific information: series imdbid, season and episode number ...
print(f"Episode Info: {episode_detail.info_episode}")You can now retrieve all episodes in a series with a single call:
from imdbinfo import get_all_episodes
# Fetch all episodes for a series
all_episodes = get_all_episodes("tt1520211") # Walking Dead
for episode in all_episodes:
print(f"Title: {episode.title} - ({episode.imdbId})")
print(f"Plot: {episode.plot[:100]}...")
print(f"Release Date: {episode.release_date}")
print(f"Rating: {episode.rating}")
print(f"Duration: {episode.duration/60}min")
print("" + "="*50)- distribution companies,
- production companies,
- sales companies,
- special effects companies,
- miscellaneous companies
You can now extract information about the companies involved in a movie or series:
from imdbinfo import get_movie
movie = get_movie("tt0133093") # The Matrix
# Distribution companies
for company in movie.company_credits["distribution"]:
print(f"Distribution: {company.name} ({company.country})")
# Sales companies
for company in movie.company_credits["sales"]:
print(f"Sales: {company.name}")
# Production companies
for company in movie.company_credits["production"]:
print(f"Production: {company.name}")
# Special effects companies
for company in movie.company_credits["specialEffects"]:
print(f"Special Effects: {company.name}")
# Miscellaneous companies
for company in movie.company_credits["miscellaneous"]:
print(f"Miscellaneous: {company.name}")Fetch international and alternate titles for any movie or series:
from imdbinfo import get_akas
akas = get_akas("tt0133093") # The Matrix
for aka in akas["akas"][:5]:
print(f"{aka.title} ({aka.country_name})")Get user reviews and ratings for any movie or series:
from imdbinfo import get_reviews
reviews = get_reviews("tt0133093") # The Matrix
for review in reviews[:3]:
print(f"Rating: {review['authorRating']}/10")
print(f"Summary: {review['summary']}")
print(f"Helpful votes: {review['upVotes']} up, {review['downVotes']} down")
print(f"Spoiler: {review['spoiler']}")
print("---")Discover interesting trivia and behind-the-scenes facts:
from imdbinfo import get_trivia
trivia = get_trivia("tt0133093") # The Matrix
for fact in trivia[:3]:
print(f"Interest Score: {fact['interestScore']}")
print(f"Fact: {fact['body'][:200]}...")
print("---")Added support for locales in search_movie, get_movie, get_episodes, get_all_episodes, get_name
from imdbinfo import get_movie, search_title
# Fetch movie details in Italian
movie_it = get_movie("tt0133093", locale="it") # The Matrix
# Search for titles in Spanish (although IMDb search is mostly in all languages)
results_es = search_title("La Casa de Papel", locale="es")Localized data can be set globally, dont need to pass locale every time in the functions:
from imdbinfo import get_movie
from imdbinfo.locale import set_locale
set_locale("it") # Set default locale to Italian
movie_it = get_movie("tt0133093") # The Matrix in ItalianThe MovieInfoBrief object (e.g., items in results.titles from search_title) now includes the title_localized property. This property contains the title in the requested locale, if available, and falls back to the default title when a localized version is not present.
Example:
from imdbinfo import search_title
# Search for a title with a specific locale
results = search_title("The Matrix", locale="it")
for item in results.titles:
# Print the localized title if available, otherwise the default title
print(item.title, "->", getattr(item, "title_localized", item.title))You can now get filmography for actors, directors and writers and all credits with images:
from imdbinfo import get_filmography
filmography = get_filmography("nm0000206") # Brad Pitt
if filmography:
for role, films in filmography.items():
print(f"\nRole: {role}")
for film in films:
print(f" - {film.title} ({film.year}) [{film.imdbId}]")Fetch all interests for a title using the provided IMDb ID. Most time it returns the same as genres. It requires a new request and parsing. Use it only if you really need it.
from imdbinfo import get_all_interests
movies = ["tt1490017", "tt0133093"]
for imdb_id in movies:
interests = get_all_interests(imdb_id)
print(f"Interests for {imdb_id}: {interests}")π For more examples see the examples folder.
π‘ Looking for a ready-to-use API based on this package? Check out qdMovieAPI β a fast and simple way to access IMDb data via REST!
- Easy to use Python API
- Returns clean structured data
- Powered by niquests and lxml
- Uses Pydantic for type safety
- No external dependencies or API keys required
- Ideal for quick scripts and data analysis
This project and its authors are not affiliated in any way with IMDb Inc. or its affiliates. For more information, please refer to the DISCLAIMER file.
Contributions are welcome! Open an issue or pull request on GitHub.
If you find this project useful, please consider giving it a β on GitHub!
Please read our Contributing Guidelines and Code of Conduct before contributing.
imdbinfo is released under the MIT License. See the LICENSE file for details.
The package groups award-related counts in the MovieDetail.awards object (an AwardInfo instance). The model currently exposes:
winsβ number of award winsnominationsβ number of nominations (excluding wins)prestigious_awardβ optional dict containing details of a prestigious award (may includewinsandnominationskeys)
Example showing how to safely read MovieDetail.awards using the current model shape:
from imdbinfo import get_movie
movie = get_movie("tt0133093") # The Matrix
aw = movie.awards
if not aw:
print("No award information available for this title")
else:
# basic counts
print("wins:", aw.wins)
print("nominations:", aw.nominations)
# prestigious award (may be None or a dict)
if aw.prestigious_award:
pa = aw.prestigious_award
print("prestigious wins:", pa.get("wins"))
print("prestigious nominations:", pa.get("nominations"))
else:
print("No prestigious award summary available")Notes:
- The JSON parser maps page data into
movie.awards(a dict turned into anAwardInfoinstance). Depending on the source data,prestigious_awardcan be None or a dict withwinsandnominations. - Use
if movie.awards:to check presence before reading attributes.