🎬 imdby
Scrape the IMDb database from Python — movies, people, companies, events, characters, news, charts, and reviews — no official API key required.
If imdby saves you time, please consider giving it a ⭐ — it helps others discover the project.
📑 Table of Contents
- Why imdby?
- Features
- Dependencies
- Installation
- Quick Start
- API Overview
- Getting Help
- Contributing
- Star History
- Contributors
- License
💡 Why imdby?
IMDb doesn't offer a public API, and existing solutions are often abandoned or limited to a narrow slice of the site. imdby scrapes IMDb's own pages directly and hands the result back as ready-to-use Python objects and pandas DataFrames — no scraping boilerplate, no API key, no rate-limit approval process.
🚀 Features
- Retrieve IMDb data for a title: overview, plot, plot keywords, taglines, full cast & crew, company credits, release info, ratings breakdown, parental guide, technical specs, critic reviews, and external reviews/sites.
- Retrieve IMDb charts: Top 250, Top 250 (English), Bottom 100, box office, MovieMeter/TVMeter, Top TV, and India-specific charts (Tamil, Telugu, Malayalam, trending, upcoming).
- Scrape a title's user reviews and score them with VADER and TextBlob sentiment analysis.
- Look up IMDb IDs for a title, person, company, event, character, or news item by search text.
- Results come back as plain Python objects and
pandasDataFrames, ready for further analysis. - Compatible with Python 3.10+ (tested through Python 3.14).
📦 Dependencies
beautifulsoup4+lxml— HTML parsingrequests— HTTP requestsselenium— used only byuser_reviews()to load additional review pages. Requires a local Google Chrome install; the matching chromedriver is downloaded automatically by Selenium's built-in Selenium Manager, so no separate driver package is needed.pandas— tabular resultsnltk(VADER) +textblob— review sentiment analysis. The VADER lexicon is downloaded automatically on first use.unidecode— text normalization
📥 Installation
Install the latest release from PyPI:
pip install imdby
Or install from GitHub for the latest, unreleased changes:
pip install git+https://github.com/santhoshse7en/imdby
✨ Quick Start
from imdb.imdb import IMDb
ia = IMDb()
# Fetch full cast and crew of a movie by IMDb ID
cast = ia.full_cast_and_crew('tt4154796')
print('Directors:')
for director in cast.directors_name:
print(director)
# Fetch core movie details
movie = ia.movie('tt4154796')
print(movie.title, movie.rating, movie.genre)
# Browse the IMDb Top 250 as a DataFrame
charts = ia.imdb_charts()
print(charts.top_rated_movies_df.head())
# Search for a person (prompts for a serial number from the printed matches)
people = ia.search_person('Simon Baker')
print(people.person_id, people.name)
Note: the
search_*methods (search_movie,search_person,search_company,search_event,search_character,search_news) andupcoming_releases()are interactive — they print numbered suggestions to the console and useinput()to read your selection.
📖 API Overview
All methods are called on an IMDb() instance.
Search (interactive, resolves a name to an IMDb ID)
| Method | Returns (key attributes) |
|---|---|
search_movie(text) |
.title_name, .title_id |
search_person(text) |
.name, .person_id |
search_company(text) |
.company_name, .company_id |
search_event(text) |
.event_name, .event_id |
search_character(text) |
.character_name, .character_id |
search_news(text) |
.news_title, .news_id |
Title details (take a title_id, e.g. 'tt4154796')
| Method | Data |
|---|---|
movie(title_id) |
Title, rating, votes, genres, metascore, budget/gross, storyline |
plot(title_id) |
Plot summary and synopsis |
plot_keywords(title_id) |
Plot keyword list |
taglines(title_id) |
Taglines list |
full_cast_and_crew(title_id) |
Directors, writers, cast, producers, music, cinematography, editing, casting |
company(title_id) |
Production companies, distributors, special effects, other companies |
release_info(title_id) |
Release dates by country, India release date, "Also Known As" titles |
ratings(title_id) |
Rating breakdown by demographic and region |
parental_guide(title_id) |
MPAA rating, certificates, and content advisories (nudity, violence, profanity, alcohol, frightening, spoilers) |
technical_spec(title_id) |
Runtime, sound mix, color, aspect ratio, camera, film format |
critic_reviews(title_id) |
Critic review scores and summaries |
external_reviews(title_id) |
Links to external critic reviews |
external_sites(title_id) |
Official sites, miscellaneous sites, photos, video links |
user_reviews(title_id, remove_spoiler) |
User reviews with per-review and aggregate sentiment scores (uses Selenium/Chrome) |
Charts and listings (no arguments)
| Method | Data |
|---|---|
imdb_charts() |
Top 250, Top 250 (English), Bottom 100, box office, MovieMeter, Top TV, TVMeter |
top_india_charts() |
Top rated Indian, Tamil, Telugu, and Malayalam movies |
trending_now_in_india() |
Upcoming, popular Tamil/Telugu/India/global/Hindi titles |
upcoming_releases() |
Interactive: pick a region, then lists upcoming releases there |
🆘 Getting Help
🤝 Contributing
Contributions of all sizes are welcome — bug fixes, new IMDb pages, documentation, or tests.
-
Fork the repo and clone your fork.
-
Create a virtual environment and install in editable mode with dev tools:
pip install -e ".[dev]"
-
Make your changes, then lint and verify the package still builds cleanly:
ruff check imdb/ python -m build python -m twine check dist/*
-
Open a pull request describing what changed and why.
If you're planning a significant change, please open an issue first to discuss your approach.
⭐ Star History
👥 Contributors
Big thanks to all the contributors who help make imdby better:
- M Santhosh Kumar – @santhoshse7en (author & maintainer)
- Sai Harsha Kurapati – @harshasic
Want to see your name here? Check out the Contributing section and send a pull request!
📄 License
This project is licensed under the MIT License.
Metadata
Release files for imdby 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| imdby-0.1.6.tar.gz | 29.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| imdby-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 68.2 kB
Release files / imdby-0.1.6.tar.gz
| Download URL | imdby-0.1.6.tar.gz |
|---|---|
| Size | 29.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9509ef95effc8a79212d69142bf80f8c3cf7d6613599492a5ba8034345e182ce
|
|
BLAKE2b-256 checksum How to use checksums |
6f4b19a33c7474863a0aa4f424cca7ef7a233d19118f82ab7b8de438d27df4dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|
Release files / imdby-0.1.6-py3-none-any.whl
| Download URL | imdby-0.1.6-py3-none-any.whl |
|---|---|
| Size | 38.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
baa86137742e6521cc5209edb2d56d8c5f82d8c33a178a8e7394c286cc7510cb
|
|
BLAKE2b-256 checksum How to use checksums |
2d7a55fb147949868bd17d1334730fc7e2a294451cde7483ed09978e9c64c201
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|
Security for imdby 0.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.