# IMDb Scraper (`omkar-cloud/imdb-scraper`) Actor

Scrape IMDb by keyword with filters, charts (Top 250, Most Popular, Box Office), or any IMDb URL — ratings, votes, genres, plots & posters. Full-detail mode adds Metascore, cast, box office & release data. $1 per 1,000 titles — the lowest price on the Store, no start fee.

- **URL**: https://apify.com/omkar-cloud/imdb-scraper.md
- **Developed by:** [Chetan Jain](https://apify.com/omkar-cloud) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## IMDb Scraper — Extract Movie & TV Ratings, Charts, Cast & Box Office Data

Scrape IMDb titles by keyword, chart, or URL — ratings with vote counts, genres, plots, runtimes, and posters. No coding required.

Type a keyword (or pick a chart, or paste any IMDb URL), click Start, and get one clean JSON record per title: IMDb rating with vote count, type (movie/TV), release year, runtime, plot, genres, poster image, and the direct IMDb link. Filter searches server-side by **type, genre, and release-year range**, sorted by popularity, rating, votes, release date, or alphabetically — across IMDb's **11 million+ titles**.

Need everything? Turn on **Scrape Full Title Details** and every title also comes with its **Metascore**, certificate, exact release date, Top 250 rank, directors, creators, writers, and stars with their IMDb IDs, top cast with character names and headshots, total cast count, trailer, **box office** (budget, opening weekend, worldwide gross), similar titles, countries of origin, and spoken languages.

It scrapes **IMDb charts** in one click too — the full **Top 250 Movies** and **Top 250 TV Shows**, the 100 **Most Popular** movies and shows (with weekly rank changes), the **weekend box office** with grosses, and the 100 most **popular celebrities** (StarMeter). And it takes **IMDb URLs**: advanced-search URLs are scraped with their embedded filters, chart URLs as charts, and title page URLs always return the fully-detailed record.

All this at **$1 per 1,000 titles** — the lowest price on the Apify Store, with **no start fee** and no monthly rental.

**Rated Excellent — 4.6 based on 25 reviews** on [Trustpilot](https://www.trustpilot.com/review/omkar.cloud).

### Output example: IMDb title data in JSON

Each title becomes one dataset item. Here is a search result row:

```json
{
  "query": "avengers",
  "id": "tt4154796",
  "title": "Avengers: Endgame",
  "link": "https://www.imdb.com/title/tt4154796/",
  "type": "movie",
  "is_series": false,
  "year": 2019,
  "runtime_minutes": 181,
  "plot": "After the devastating events of Avengers: Infinity War (2018), the universe is in ruins...",
  "genres": ["Action", "Adventure", "Sci-Fi"],
  "rating": { "value": 8.4, "vote_count": 1480471 },
  "image": {
    "link": "https://m.media-amazon.com/images/M/MV5BMTc5MDE2ODcwNV5BMl5BanBnXkFtZTgwMzI2NzQ2NzM@._V1_.jpg",
    "width": 1382,
    "height": 2048
  }
}
```

With **Scrape Full Title Details** on (and always for title page URLs), the same record grows into the full profile:

```json
{
  "release_date": "2019-04-26",
  "certificate": "PG-13",
  "rating": { "value": 8.4, "vote_count": 1480430, "top_rank": 74 },
  "metascore": { "score": 78, "review_count": 57 },
  "directors": [
    { "id": "nm0751577", "name": "Anthony Russo", "link": "https://www.imdb.com/name/nm0751577/" },
    { "id": "nm0751648", "name": "Joe Russo", "link": "https://www.imdb.com/name/nm0751648/" }
  ],
  "stars": [
    { "id": "nm0000375", "name": "Robert Downey Jr.", "link": "https://www.imdb.com/name/nm0000375/" }
  ],
  "top_cast": [
    {
      "id": "nm0000375",
      "name": "Robert Downey Jr.",
      "characters": ["Tony Stark", "Iron Man"],
      "image": { "link": "https://m.media-amazon.com/images/M/....jpg" }
    }
  ],
  "total_cast": 169,
  "trailer": { "id": "vi2163260441", "link": "https://www.imdb.com/video/vi2163260441/", "duration_seconds": 66 },
  "box_office": {
    "budget": { "amount": 356000000, "currency": "USD" },
    "opening_weekend": { "amount": 357115007, "currency": "USD" },
    "gross_worldwide": { "amount": 2799439100, "currency": "USD" }
  },
  "countries_of_origin": ["United States"],
  "spoken_languages": ["English", "Japanese", "Xhosa", "German"]
}
```

*Trimmed for readability.* You can download the dataset as JSON, CSV, Excel, XML, or an HTML table.

### What data does the IMDb Scraper extract?

| Data group | Fields |
|------------|--------|
| Title | Name, original title, IMDb link and tt-id, type (movie/TV/series flag), release year(s), runtime, plot, genres, poster with dimensions |
| Reputation | IMDb rating and vote count, Top 250 rank, Metascore with review count (detailed mode) |
| Charts | Chart name, rank, weekly rank change (popularity charts), weekend + worldwide grosses (box office), StarMeter data for celebrities |
| People (detailed mode) | Directors, creators, writers, stars — each with IMDb nm-id and link; top cast with character names and headshots; total cast size |
| Release & business (detailed mode) | Exact release date, certificate, box office budget / opening weekend / US & worldwide gross, trailer link |
| Context (detailed mode) | Similar titles, countries of origin, spoken languages |

### How to scrape IMDb data

1. Click **Try for free**.
2. Type one or more **keywords** and set filters (movies/TV, genre, year range, sort). Or tick **charts** — Top 250s, Most Popular, Weekend Box Office, Popular Celebrities. Or paste **IMDb URLs**: search URLs keep their embedded filters, title page URLs return one detailed record each.
3. Optionally turn on **Scrape Full Title Details** for the complete profile per title.
4. Click **Start** and wait for the run to finish.
5. Open the **Dataset** tab to preview your data, then download it as **JSON, CSV, Excel, XML, or an HTML table**.

No proxies, no browser setup, no CAPTCHA solving — you type a keyword and get structured data back.

### Input

```json
{
  "searchQueries": ["avengers"],
  "charts": ["top-movies", "box-office"],
  "startUrls": [
    "https://www.imdb.com/search/title/?genres=sci-fi&sort=user_rating,desc",
    "https://www.imdb.com/title/tt4154796/"
  ],
  "type": "movie",
  "genre": "Sci-Fi",
  "startYear": 2010,
  "endYear": 2026,
  "sortBy": "popularity",
  "maxResultsPerSearch": 100,
  "scrapeTitleDetails": false,
  "country": "US"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `searchQueries` | array | Keywords matched against title names — each searched separately across 11M+ titles. |
| `charts` | array | Any of `top-movies`, `top-tv`, `popular-movies`, `popular-tv`, `box-office`, `popular-celebrities`. |
| `startUrls` | array | IMDb URLs — advanced-search URLs (embedded filters override the fields below), chart URLs, and/or title page URLs (always scraped with full details). |
| `type` / `genre` | string | Movies or TV only; one of 27 genres. |
| `startYear` / `endYear` | integer | Release-year range. |
| `sortBy` | string | `popularity` (default), `rating`, `vote_count`, `release_date`, `alphabetical`. |
| `maxResultsPerSearch` | integer | Max titles per keyword, URL, or chart (default 100). Controls your cost. |
| `scrapeTitleDetails` | boolean | Off by default. When enabled, every result also gets the full profile — Metascore, cast, box office, trailer, similar titles. |
| `country` | string | 2-letter code localizing release dates, certificates, and regional titles (default `US`). |

### How much does it cost to scrape IMDb?

Scraping IMDb costs **$1 per 1,000 titles** ($0.001 per title) — the lowest price on the Apify Store, with **no Actor start fee** and no monthly rental (the incumbents charge $35–$50/month before you scrape anything).

With **Scrape Full Title Details** on (and for title page URLs), each title — Metascore, full cast credits, box office, trailer, similar titles — is billed at **$2.50 per 1,000 detailed titles** in total. Every row is billed at exactly one rate — standard or detailed — and the detailed rate applies only when the full details are actually returned.

Apify gives you **$5 in free credits** every month, so you can scrape your first **5,000 titles** (or 2,000 fully-detailed titles) free and test the IMDb Scraper before paying anything.

### FAQs

#### Why scrape IMDb?

- **Content research & licensing** — map what exists in any genre/year range with ratings and vote counts as demand signals.
- **Streaming & media apps** — feed recommendation engines, watchlist tools, and catalogs with structured title data including posters and trailers.
- **Market analysis** — track the box office weekend by weekend, watch popularity charts move with weekly rank changes, benchmark against the Top 250.
- **Data science** — clean JSON with ratings, votes, Metascores, runtimes, and box-office numbers, ready for analysis.

#### Can I scrape an IMDb search URL?

Yes. Paste any `imdb.com/search/title/?…` URL from your browser and the Actor reads the filters embedded in it — title type, genres, release-date range, and sort order — and applies them automatically. URL parameters take priority over the form fields. Chart URLs (`imdb.com/chart/top`, `boxoffice`, …) and `imdb.com/find` search URLs work too.

#### What does "Scrape Full Title Details" add?

The complete title profile: **Metascore**, certificate, exact release date, Top 250 rank, directors/creators/writers/stars with IMDb IDs, top cast with character names and headshots, total cast count, trailer link, **box office** (budget, opening weekend, worldwide gross), similar titles, countries of origin, and spoken languages. Title page URLs pasted into `startUrls` always include these details.

#### Can I scrape the Top 250 in one run?

Yes — tick **Top 250 Movies** (or TV) and all 250 rows arrive from a single call, each with its rank. The whole chart costs $0.25 at the standard rate. Popularity charts include the weekly rank change; the box-office chart includes weekend and worldwide grosses.

#### Will I be charged twice if the same title appears in two searches?

No. Titles are deduplicated per run — a title matching several keywords, charts, or URLs is scraped and billed only once. Every row is billed at exactly one rate: $1/1,000 standard or $2.50/1,000 detailed. And if a full-details fetch fails, you keep the card row and pay only the standard rate for it.

#### How accurate is the scraped IMDb data?

It comes straight from live IMDb pages — real ratings and vote counts, current chart ranks, this weekend's box office, in the same structure you see on the site.

#### Is it legal to scrape IMDb?

The Actor extracts publicly available data only — titles, ratings, and charts visible to any visitor. It collects no personal data behind logins. You are responsible for how you use the data; consult a lawyer if unsure about your use case.

#### Need user reviews too?

Use our **[IMDb Reviews Scraper](https://apify.com/omkar-cloud/imdb-reviews-scraper)** — feed it the `link` values from this Actor's output and get full user reviews with ratings, review text, helpful votes, and spoiler flags, at $1 per 1,000 reviews.

### Support

Built by developers, for developers — when you reach out, you talk to the engineers who built the Actor, not a support script. Message us anytime and we'll resolve your query within 1 working day.

[![Contact Us on WhatsApp about IMDb Scraper](https://raw.githubusercontent.com/omkarcloud/assets/master/images/whatsapp-us.png)](https://api.whatsapp.com/send?phone=918178804274\&text=I%20have%20a%20question%20about%20the%20IMDb%20Scraper.)

Email: [happy.to.help@omkar.cloud](mailto:happy.to.help@omkar.cloud?subject=IMDb%20Scraper%20Question)

[![Email Us about IMDb Scraper](https://raw.githubusercontent.com/omkarcloud/assets/master/images/ask-on-email.png)](mailto:happy.to.help@omkar.cloud?subject=IMDb%20Scraper%20Question)

### Love It? Star It! ⭐

From one business owner to another: if this Actor saved you hours of copying ratings off IMDb, please [rate the IMDb Scraper on Apify](https://apify.com/omkar-cloud/imdb-scraper/reviews).

Here's why it matters: most people judge an Actor by its reviews before trying it. Your rating helps the next person — someone deciding whether this Actor really delivers clean IMDb data — hit "Try for free" with confidence, and it helps the Actor rank higher in the Apify Store.

It takes only 1 second, and means the world to me.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords matched against title names — each is searched separately. Rows carry a `query` field so you can tell keywords apart. Leave empty to scrape only charts or URLs.

## `type` (type: `string`):

Only include movies or only TV shows. Leave on All for both.

## `genre` (type: `string`):

Only include titles of this genre.

## `startYear` (type: `integer`):

Earliest release year to include.

## `endYear` (type: `integer`):

Latest release year to include.

## `sortBy` (type: `string`):

Order of search results.

## `charts` (type: `array`):

IMDb charts to scrape. Rows carry a `chart` field plus the rank (and rank change where IMDb shows it).

## `startUrls` (type: `array`):

Search, chart, and/or title page URLs — you can mix them. Title pages are always scraped with full details (billed at the detailed-title rate).

## `maxResultsPerSearch` (type: `integer`):

Maximum number of titles to scrape per keyword, search URL, or chart. Use this to control your cost (1,000 titles ≈ $1). Ignored for title page URLs.

## `scrapeTitleDetails` (type: `boolean`):

When enabled, every search and chart result is also scraped in full — Metascore, certificate, release date, directors/creators/writers, top cast with characters, total cast count, trailer, box office (budget & grosses), similar titles, countries, and languages. Still one dataset row per title, billed once at the detailed-title rate instead of the standard rate (1,000 detailed titles ≈ $2.50 vs $1 standard). Runs take longer because each title page is fetched individually.

## `country` (type: `string`):

2-letter country code that localizes release dates, certificates, and regional title names (US, GB, DE, IN, …).

## Actor input object example

```json
{
  "searchQueries": [
    "avengers"
  ],
  "type": "",
  "genre": "",
  "sortBy": "popularity",
  "charts": [
    "top-movies",
    "box-office"
  ],
  "startUrls": [
    "https://www.imdb.com/search/title/?genres=sci-fi&sort=user_rating,desc",
    "https://www.imdb.com/title/tt4154796/"
  ],
  "maxResultsPerSearch": 100,
  "scrapeTitleDetails": false,
  "country": "US"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "avengers"
    ],
    "maxResultsPerSearch": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("omkar-cloud/imdb-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["avengers"],
    "maxResultsPerSearch": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("omkar-cloud/imdb-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "avengers"
  ],
  "maxResultsPerSearch": 100
}' |
apify call omkar-cloud/imdb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omkar-cloud/imdb-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/yko2nusO5wiAYX1Ve/builds/RRSTgMgfVqCgh4TFC/openapi.json
