Cinemagoer (previously known as IMDbPY) is a Python package for retrieving and managing data from the IMDb non-commercial downloadable datasets.

Important notice

Starting in April 2026, support for parsing IMDb web pages was removed. Cinemagoer now works exclusively with the IMDb non-commercial datasets.

If you need IMDb web-page parsing, see cinemagoerng, which is focused on that use case.

Disclaimer

This project and its authors are not affiliated in any way to Internet Movie Database Inc.; see the disclaimer file for details about data licenses.

Code example

Cinemagoer reads data from a local database populated from IMDb datasets. First, download and import the data:

# Download the *.tsv.gz files from https://datasets.imdbws.com/
download-from-s3

# Import them into a local SQLite database
s32cinemagoer.py /path/to/imdb-tsv-files/ sqlite:///cinemagoer.db
  

Then use Cinemagoer to query the database:

from imdb import Cinemagoer

# open the database populated with s32cinemagoer.py
ia = Cinemagoer('s3', uri='sqlite:///cinemagoer.db')

# get a movie and print its director(s)
the_matrix = ia.get_movie('0133093')
for director in the_matrix['directors']:
    print(director['name'])

# print the genres of the movie
print(the_matrix['genres'])

# search for a person by name
people = ia.search_person('Keanu Reeves')
for person in people:
    print(person.personID, person['name'])
  

How to contribute

Do you like this project? You can help by:

News

Cinemagoer 2026.06.27

This release marks a significant change in scope for Cinemagoer.

Support for parsing IMDb web pages has been removed. Starting in April 2026, IMDb introduced a web application firewall that prevents reliable scraping of its website. From that point, we can no longer guarantee that the package works as expected with IMDb web data, from both a technical and a legal standpoint.

Cinemagoer now works exclusively with the IMDb non-commercial downloadable datasets.

If you still need IMDb web-page parsing, see cinemagoerng, which is focused on that use case and requires you to provide the function used to fetch those pages.

Other changes in this release:

  • Drop support for Python versions prior to 3.10
  • Switch to pyproject.toml configuration
  • Switch to using uv for package management

For more details see the latest changelog.

All news...