# IMDb Scraper - Movies, TV Shows, Ratings, Cast & Box Office (`scrapesage/imdb-scraper`) Actor

Scrape IMDb movies, TV shows & celebrities: ratings, vote counts, box office, full cast & crew, episodes, awards, keywords & reviews. Search, discover by filters, charts (Top 250) & rating/popularity monitor. Keyless, no login.

- **URL**: https://apify.com/scrapesage/imdb-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Videos, News, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 title scrapeds

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/platform/actors/running/actors-in-store#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 — Movies, TV Shows, Ratings, Cast & Box Office (No API Key)

Extract **complete IMDb data** — including the fields most scrapers leave empty: **real box office (budget, worldwide/domestic/international gross, opening weekend), full cast & crew with characters, awards, plot keywords, episodes, technical specs, and celebrity profiles**. Search by keyword, browse IMDb's catalog with **advanced filters**, pull **Top 250 & popularity charts**, fetch any title or person by ID/URL, and **monitor rating & popularity changes** across runs.

No login, no API key, no browser — fast JSON extraction straight from IMDb's own GraphQL API.

### Why this IMDb scraper?

Most IMDb scrapers parse a list page and return a thin row — title, year, rating — and `null` for everything else. This actor pulls from IMDb's internal GraphQL API and ships the **richest dataset in the category**:

| Data | Typical scrapers | This actor |
|---|---|---|
| IMDb rating + vote count | ✅ | ✅ |
| Top 250 rank + Metascore + popularity rank | partial | ✅ |
| Budget + worldwide / domestic / international gross + opening weekend | ❌ | ✅ |
| Full cast & crew with **character names** | partial | ✅ (hundreds) |
| Directors / writers / creators | partial | ✅ |
| Plot keywords, production companies, filming locations | ❌ | ✅ |
| Awards (Oscars, wins & nominations) | ❌ | ✅ |
| Countries, spoken languages, AKAs, release dates by country | ❌ | ✅ |
| Technical specs (aspect ratio, sound mix, color) | ❌ | ✅ |
| Episodes (per-episode rating + season/episode #) | ❌ | ✅ opt-in |
| User reviews (text, author rating, helpful votes) | ❌ | ✅ opt-in |
| Celebrity profiles (bio, filmography, awards) | ❌ | ✅ |
| Advanced **Discover** (genre/year/rating/votes/country/keyword) | ❌ | ✅ |
| Rating / popularity **monitor** (only new or changed) | ❌ | ✅ |

### Use cases

- **Streaming & recommendation apps** — build and refresh a movie/TV metadata catalog (ratings, genres, cast, runtime, posters) for content discovery and recommendation engines. A clean, keyless **TMDB / OMDb alternative**.
- **Entertainment & market research** — track IMDb ratings, vote velocity, Metascore and box office across genres, years and countries; benchmark titles and franchises.
- **Data science & ML datasets** — assemble large, structured film/TV datasets with cast graphs, keywords and box office for analysis or model training.
- **Talent & casting research** — pull full filmographies, known-for titles, awards and credits for actors, directors and crew.
- **Box-office & franchise analysis** — compare budgets vs. worldwide gross, opening weekends and sequels/remakes via the connections graph.
- **New-release & rating monitoring** — schedule recurring runs to catch newly listed titles, rating changes and popularity swings for a watchlist, chart or genre.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **IMDb Scraper**, enter search keywords (or pick a chart, or turn on **Discover** with filters), and click **Start**.
3. Watch titles, people and reviews stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "discover": true,
    "genres": ["Sci-Fi"],
    "titleTypes": ["movie"],
    "ratingMin": 8,
    "minVotes": 200000,
    "sortBy": "rating",
    "includeTitleDetails": true,
    "maxItems": 50
}
```

Other ways to drive it:

- **searchQueries** — keywords like `Dune`, `Breaking Bad`, `Christopher Nolan`. Set **searchType** to titles, people, or both.
- **charts** — `top_250_movies`, `top_250_tv`, `most_popular_movies`, `most_popular_tv`, `top_rated_movies`, `top_rated_tv`, `bottom_100`, and more.
- **titleIds / nameIds** — direct IMDb IDs (`tt1375666`, `nm0634240`) or URLs for full detail.
- **startUrls** — IMDb `title/`, `name/` or `find?q=` URLs.
- **Discover filters** — `genres`, `titleTypes`, `releaseYearMin/Max`, `ratingMin/Max`, `minVotes`, `runtimeMin/MaxMinutes`, `countries`, `languages`, `keywords`, `sortBy`, `sortOrder`.
- **Enrichment** — `includeTitleDetails` *(default true)*, `castLimit`, `includeFullCast`, `includeEpisodes`, `includeReviews`.
- **monitorMode** — only output new or changed titles across runs (see below).

### Output

One record per title (`type: "title"`), per person (`type: "name"`), and optional review records (`type: "review"`):

```json
{
    "type": "title",
    "imdbId": "tt1375666",
    "url": "https://www.imdb.com/title/tt1375666/",
    "title": "Inception",
    "titleType": "Movie",
    "year": 2010,
    "rating": 8.8,
    "voteCount": 2826603,
    "top250Rank": 14,
    "metascore": 74,
    "popularityRank": 312,
    "genres": ["Adventure", "Sci-Fi", "Thriller"],
    "runtimeMinutes": 148,
    "contentRating": "PG-13",
    "plot": "A thief who steals corporate secrets through dream-sharing technology…",
    "budget": 160000000,
    "grossWorldwide": 839797462,
    "grossDomestic": 292587330,
    "openingWeekendGrossUS": 62785337,
    "boxOfficeCurrency": "USD",
    "directors": [{ "id": "nm0634240", "name": "Christopher Nolan" }],
    "writers": [{ "id": "nm0634240", "name": "Christopher Nolan" }],
    "stars": [{ "id": "nm0000138", "name": "Leonardo DiCaprio" }],
    "castCount": 1601,
    "cast": [{ "id": "nm0000138", "name": "Leonardo DiCaprio", "category": "Actor", "characters": ["Cobb"] }],
    "keywords": ["dream", "ambiguous ending", "subconscious"],
    "productionCompanies": [{ "name": "Warner Bros.", "category": "production" }],
    "countriesOfOrigin": ["United Kingdom", "United States"],
    "spokenLanguages": ["English", "Japanese", "French"],
    "awardNominationsTotal": 380,
    "prestigiousAward": { "award": "Oscar", "wins": 4, "nominations": 8 },
    "aspectRatios": ["2.39 : 1"],
    "moreLikeThis": [{ "id": "tt0816692", "title": "Interstellar", "rating": 8.7 }],
    "trailerUrl": "https://www.imdb.com/video/vi2876038169/",
    "image": "https://m.media-amazon.com/images/M/…jpg",
    "source": "discover",
    "scrapedAt": "2026-06-19T12:00:00.000Z"
}
```

TV series add `numberOfSeasons`, `numberOfEpisodes` and (with `includeEpisodes`) one record per episode. Person records (`type: "name"`) include `bio`, `birthDate`, `birthLocation`, `professions`, `knownFor`, full `credits` and an awards summary.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it hourly/daily/weekly to track new releases, rating changes or chart movements; perfect for newsletters and dashboards.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (database import, Slack alert, dataset refresh) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/imdb-scraper').call({
    charts: ['top_250_movies'],
    includeTitleDetails: true,
    maxItems: 250,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} titles`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new titles or rating changes into Sheets, Notion or your database.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored chart or genre changes.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "get the top 10 sci-fi movies since 2015 with their box office and cast" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **media & entertainment data stack**:

- **[YouTube Scraper](https://apify.com/scrapesage/youtube-scraper)** — channels, videos and creator leads.
- **[Spotify Scraper](https://apify.com/scrapesage/spotify-scraper)** — artists, monthly listeners, play counts and podcasts.
- **[Apple Podcasts Scraper](https://apify.com/scrapesage/apple-podcasts-scraper)** — shows, episodes, reviews and host leads.
- **[SoundCloud Scraper](https://apify.com/scrapesage/soundcloud-scraper)** — artists, tracks and creator leads.
- **[Goodreads Scraper](https://apify.com/scrapesage/goodreads-scraper)** — books, authors, ratings and reviews.
- **[Steam Scraper](https://apify.com/scrapesage/steam-scraper)** — games, prices, reviews and charts.
- **[Apple App Store Scraper](https://apify.com/scrapesage/app-store-scraper)** — apps, reviews and charts.
- **[Google Play Scraper](https://apify.com/scrapesage/google-play-scraper)** — apps, reviews and developer leads.

### Tips

- **Big catalogs**: Discover can match hundreds of thousands of titles — set `maxItems` and a `sortBy` (e.g. `popularity` or `numVotes`) to get the most relevant slice first.
- **Cost control**: turn `includeTitleDetails` OFF for a fast/cheap pass that still returns rating, votes, genres, runtime, plot and content rating. Turn it ON only when you need box office, full cast and awards.
- **Full cast**: titles can have 1,000+ credits — use `includeFullCast` with `castLimit` to control how deep to go.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to emit only new or rating-changed titles each run.

### FAQ

**Do I need an IMDb API key?** No. This actor reads the same public data the IMDb website uses — no key, login or browser required.

**How do I scrape a specific movie or person?** Put its IMDb ID (`tt…` for titles, `nm…` for people) or URL into `titleIds` / `nameIds`, or paste the URL into `startUrls`.

**Can I get box office and full cast?** Yes — keep `includeTitleDetails` on. Each title then includes budget, worldwide/domestic/international gross, opening weekend, and the full cast & crew with character names.

**Can I browse by genre, year and rating like IMDb Advanced Search?** Yes — turn on **Discover** and set the filters (`genres`, `releaseYearMin/Max`, `ratingMin`, `minVotes`, `keywords`, `countries`, `languages`) plus a `sortBy`.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor rating changes automatically?** Create a [Schedule](https://docs.apify.com/platform/schedules) and turn on `monitorMode` — the actor outputs only titles that are new or whose rating/votes/popularity changed, each tagged with a `changeType`.

**Is scraping IMDb legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws and IMDb's terms; IMDb data is for personal and non-commercial use unless you have a license.

**A field is null — why?** Some titles genuinely don't publish a budget, box office, content rating or runtime. Fields are `null` only when the data doesn't exist, not because the scraper skipped them.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

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

Keywords to search IMDb for, e.g. <code>Dune</code>, <code>Breaking Bad</code>, <code>Christopher Nolan</code>. Each keyword is searched separately. Use the <b>Search in</b> option to search movies/TV titles, people, or both. Leave empty if you only use IDs, charts, discover or Start URLs.

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

What the keywords above search: movie/TV titles, people (actors, directors, …), or both.

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

IMDb URLs to scrape directly: title pages (<code>imdb.com/title/tt…</code>), person pages (<code>imdb.com/name/nm…</code>) or find/search pages (<code>imdb.com/find?q=…</code>). Used in addition to the keyword search.

## `titleIds` (type: `array`):

IMDb title IDs (<code>tt1375666</code>) or title URLs to fetch full enriched detail for directly — box office, full cast, awards, keywords, episodes count and more.

## `nameIds` (type: `array`):

IMDb person IDs (<code>nm0634240</code>) or person URLs to fetch full celebrity/crew profiles for directly — bio, filmography, awards.

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

Scrape IMDb's ranked charts. Top-250 charts include the chart rank; popularity charts reflect what's trending right now.

## `discover` (type: `boolean`):

Browse IMDb's full catalog using the filters below (genre, year, rating, votes, runtime, country, language, keywords) sorted however you like — like IMDb's Advanced Search. Returns the matching titles even without a keyword.

## `genres` (type: `array`):

Keep only titles in these genres (also a Discover constraint).

## `titleTypes` (type: `array`):

Keep only these title types (also a Discover constraint).

## `releaseYearMin` (type: `integer`):

Only keep titles released in or after this year.

## `releaseYearMax` (type: `integer`):

Only keep titles released in or before this year.

## `ratingMin` (type: `integer`):

Only keep titles with at least this IMDb rating (0–10).

## `ratingMax` (type: `integer`):

Only keep titles with at most this IMDb rating (0–10).

## `minVotes` (type: `integer`):

Only keep titles with at least this many IMDb votes (filters out obscure entries).

## `runtimeMinMinutes` (type: `integer`):

Discover only — minimum runtime in minutes.

## `runtimeMaxMinutes` (type: `integer`):

Discover only — maximum runtime in minutes.

## `countries` (type: `array`):

Discover only — ISO country codes of origin, e.g. <code>US</code>, <code>GB</code>, <code>FR</code>, <code>IN</code>, <code>JP</code>, <code>KR</code>.

## `languages` (type: `array`):

Discover only — ISO language codes, e.g. <code>en</code>, <code>es</code>, <code>fr</code>, <code>hi</code>, <code>ja</code>, <code>ko</code>.

## `keywords` (type: `array`):

Discover only — IMDb plot keywords, e.g. <code>heist</code>, <code>time-travel</code>, <code>based-on-true-story</code>, <code>superhero</code>.

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

How Discover orders matching titles.

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

Ascending or descending.

## `includeTitleDetails` (type: `boolean`):

Enrich every movie/TV title with the full record: box office (budget + worldwide/domestic/international gross + opening weekend), full cast & crew with characters, directors/writers/creators, keywords, production companies, countries, languages, filming locations, akas, release dates, awards, technical specs, season/episode counts, connections and 'more like this'. Turn OFF for a faster/cheaper run that returns the still-rich core fields (rating, votes, genres, runtime, plot, content rating). Adds one request per title.

## `castLimit` (type: `integer`):

How many cast/crew members to include per title (top-billed first).

## `includeFullCast` (type: `boolean`):

Paginate the complete cast & crew list up to the limit above (titles can have hundreds of credits). Adds extra requests for large casts.

## `includeEpisodes` (type: `boolean`):

For every TV series scraped, also output each episode as its own title record with season/episode number and episode rating.

## `maxEpisodesPerSeries` (type: `integer`):

Cap on episodes output per series.

## `includeReviews` (type: `boolean`):

For every detailed title, also output IMDb user reviews (text, author, author rating, helpful votes, spoiler flag, date) as separate review records. Requires full title details to be ON.

## `maxReviewsPerTitle` (type: `integer`):

Cap on user reviews output per title.

## `maxItems` (type: `integer`):

Maximum number of title + person records to scrape across all searches, charts, discover and IDs. (Reviews and episodes are extra sub-records.)

## `deduplicate` (type: `boolean`):

Drop duplicate titles/people that appear in more than one feed in the same run.

## `monitorMode` (type: `boolean`):

Remember items across runs in a named key-value store and emit ONLY items that are new OR whose IMDb rating / vote count / popularity changed since the last run (each carries a <code>changeType</code>: new / rating\_up / rating\_down / updated). Pair with Apify Schedules for new-release & rating-change alerts — it complements the scheduler (the schedule starts the run; monitor mode dedupes against prior runs).

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

Names the monitor's memory store so you can run several independent monitors (e.g. one per chart or search). Reuse the same key to keep tracking the same feed.

## `maxConcurrency` (type: `integer`):

Parallel detail requests. IMDb's GraphQL is fast — 4–8 is a good range.

## `proxyConfiguration` (type: `object`):

Proxies for the IMDb GraphQL API. The API is datacenter-clean, so the default Apify Proxy (automatic) is plenty — it rotates IPs for reliability at scale.

## Actor input object example

```json
{
  "searchQueries": [
    "Dune"
  ],
  "searchType": "title",
  "discover": false,
  "sortBy": "popularity",
  "sortOrder": "DESC",
  "includeTitleDetails": true,
  "castLimit": 20,
  "includeFullCast": false,
  "includeEpisodes": false,
  "maxEpisodesPerSeries": 2000,
  "includeReviews": false,
  "maxReviewsPerTitle": 25,
  "maxItems": 100,
  "deduplicate": true,
  "monitorMode": false,
  "monitorKey": "default",
  "maxConcurrency": 6,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped IMDb title, person and review records as JSON items in the default dataset.

# 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": [
        "Dune"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/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": ["Dune"],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "Dune"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapesage/imdb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/imdb-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Yrv0NUCRzTzazrU8D/builds/dZi9VJSZJnWe5kZNQ/openapi.json
