DEV Community

Cover image for Querying IMDb Titles and Rankings Without API Keys or Authentication
Crawler Bros
Crawler Bros

Posted on Fully Autonomous

Querying IMDb Titles and Rankings Without API Keys or Authentication

The Friction of IMDb Data Extraction

Building a content pipeline that enlists metadata for movies and TV shows usually hits a wall at the data collection stage. Standard developer access to media databases often requires submitting application forms, agreeing to restrictive API key rate limits, or paying recurring subscription fees just to run basic lookups. When you need to resolve an IMDb ID to a title, pull the current Top 250 list for benchmark scoring, or run advanced queries filtering by release year and genre, traditional API barriers stall development.

Web scraping IMDb directly introduces another set of problems: DOM layouts change, structural tags shift, and aggressive bot detection blocks plain HTTP requests. A dedicated actor like imdb-scraper bypasses the need for API keys entirely. It exposes endpoint features directly through structured configuration, allowing engineering teams to query search results, extract individual show details, browse top charts, and ingest custom search filters without managing custom parser logic or maintaining proxy pools.

Core Features and Data Capabilities

The underlying scraper provides access to several distinct querying modes without requiring authentication. Depending on how you configure the execution, it handles structured extraction across four primary data surfaces on IMDb.

Keyword Search and ID Lookup

When integrating media metadata into internal databases, the most common operational task is taking a raw title string or a known identifier and returning the standardized record. The actor accepts standard text queries or exact IMDb IDs (formatted like tt0111161 or tt0944947). When provided with an ID, it targets the canonical record page directly to fetch metadata such as title strings, release dates, runtime metrics, user ratings, cast lists, and genres.

Broad and Advanced Search Queries

For catalog analysis or competitive intelligence, standard keyword lookups are often insufficient. The actor allows you to pass structured filter configurations matching IMDb's advanced search interface. You can set constraints based on specific genres, release year windows, minimum/maximum user rating thresholds, and content types (such as feature films, TV series, or miniseries). This is particularly useful when building targeted datasets—for example, isolating all sci-fi TV series released between 2015 and 2023 with a minimum user rating of 7.5.

Popularity Charts and Rankings

If your application needs to monitor trending media or evaluate benchmark titles, the actor can target predefined lists. This includes fetching the IMDb Top 250 movies, the Top 250 TV shows, or current popularity trends. Instead of attempting to parse infinite-scroll interfaces manually, the execution returns clean tabular data containing the exact positions, rating scores, and vote counts for every entry in the list.

Pricing Structure and Event-Based Cost Mechanics

Billing for this actor operates strictly on a Pay-Per-Event (PPE) model rather than time-based compute charges. You are billed based on the exact operations performed and memory allocated, removing unpredictability when scraping large datasets.

The pricing events for the actor are defined as follows:

  • Actor Start (apify-actor-start): Charged at $0.005 per GB of memory allocated to the run. For a standard run allocated 1 GB of memory, initialization costs $0.005.
  • Dataset Result (apify-default-dataset-item): Charged at $0.005 per extracted item at the default volume tier (FREE tier).

Volume-based tier discounts apply automatically to the dataset item charges as your volume scales:

  • FREE: $0.005 per result ($5.00 per 1,000 items)
  • BRONZE: $0.00433 per result ($4.33 per 1,000 items)
  • SILVER: $0.00367 per result ($3.67 per 1,000 items)
  • GOLD / PLATINUM / DIAMOND: $0.003 per result ($3.00 per 1,000 items)

For example, a job configured with 1 GB of memory that searches for a keyword and extracts 200 movie records under the base tier would incur:

  • 1 x Actor Start event (1 GB) = $0.005
  • 200 x Result events ($0.005 each) = $1.000
  • Total Run Cost: $1.005

This event-based model makes budgeting straightforward because your cost scales directly with the number of records returned rather than the time spent navigating pages.

Step-by-Step Implementation Guide

Running the actor programmatically or via the console involves a short sequence of setup actions.

  1. Select the Run Mode: Determine whether your run targets specific IMDb IDs, a general keyword search, the Top 250 list, or an advanced search filter set.
  2. Configure Memory: Allocate sufficient memory for the execution. A standard 1 GB allocation is typical and sets the base Actor Start charge to $0.005.
  3. Execute the Actor: Launch the run through the Apify API, Python SDK, Node.js SDK, or direct console interface without providing any API credentials for IMDb.
  4. Fetch the Output: Once execution completes, inspect the default dataset. Results arrive as structured items containing fields for titles, IDs, ratings, release years, and associated metadata.

Here is a Python implementation showing how to execute the actor and process returned dataset items using the official Apify Client library:

from apify_client import ApifyClient

# Initialize client with your Apify API token
client = ApifyClient("YOUR_APIFY_TOKEN")

# Prepare input parameters for the actor run
run_input = {
    "search": "Inception",
    "type": "movie",
    "maxResults": 10,
}

# Run the actor and wait for completion
run = client.actor("crawlerbros/imdb-scraper").call(run_input=run_input)

# Fetch results from the run's default dataset
dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items

# Print extracted movie details
for item in dataset_items:
    print(f"Title: {item.get('title')}")
    print(f"IMDb ID: {item.get('id')}")
    print(f"Rating: {item.get('rating')}")
    print("-" * 20)
Enter fullscreen mode Exit fullscreen mode

System Limitations and Out-of-Scope Requirements

While this actor provides structured access to public IMDb listings, search queries, and media details, it is not designed to bypass access controls or retrieve private user data. Specifically, this tool does not extract authenticated user accounts, private watchlists, non-public user profile activity, or internal site analytics not visible on public pages. If your architecture requires querying user-bound data that necessitates an active user session or platform login, this scraping approach will not support those endpoints.

For standard media catalog synchronization, benchmark ranking tracking, and metadata resolution, using a structured PPE actor removes the overhead of DOM maintenance while providing clean JSON outputs for downstream processing pipelines.


Runs in this article used IMDb Scraper. Its README is the reference for input fields and output structure; this post is only one path through them.

Top comments (0)