---
title: "How to Scrape IMDb Data (2026 Guide) | Scrape.ly"
description: "Scrape IMDb ratings, votes, cast, plot, budget and box office by keyword, chart or filters. No-code steps, API code, a real run, costs and IMDb's terms."
url: https://scrape.ly/blog/scrape-imdb
markdown: https://scrape.ly/blog/scrape-imdb.md
---

[Tutorials](https://scrape.ly/blog/category/tutorials.md)

# How to Scrape IMDb: Titles, Ratings, Cast and Box Office

Scrape IMDb titles by keyword, chart, list, search URL or filters and get rating, votes, Metascore, genres, runtime, cast, directors, plot, budget and box office as clean rows. No-code steps, curl, Python, Node.js and MCP, a real run and what IMDb's terms say.

[Echofield Actor publisher on the Scrape.ly Store](https://scrape.ly/blog/author/echofield.md)

- Published

  Oct 26, 2026

- Reading time

  9 min read

![Pixel-art robot with an orange >\_ on its terminal head pulls a film card with a poster and a gold star rating out of a cinema whose bulb-lit marquee carries the yellow IMDb logo, and drops it into a crate](https://scrape.ly/media/scrape-imdb.png?w=1080)

To scrape IMDb, give a scraper title URLs, a chart, a list, an advanced-search URL or plain keywords, and let it save each movie or show with its rating, votes, genres, runtime, cast, directors, plot and box office. On Scrape.ly that's the IMDb Scraper: no login, no browser, about a cent per title, and a thousand titles in well under a minute.

This guide covers the fields you get, the no-code steps, the same job in curl, Python, Node.js and through an AI agent, a real run from 26 October 2026 for "blade runner", and what IMDb's Conditions of Use say, which matters more here than for most sites.

## What data you can scrape from IMDb

The [IMDb Scraper](https://scrape.ly/store/echofield/imdb-scraper.md) saves one row per title: movies, TV series, mini-series, episodes, shorts, video games and similar. The main fields:

| Field                                                 | What it holds                                                |
| ----------------------------------------------------- | ------------------------------------------------------------ |
| `id`, `url`, `title`, `originalTitle`                 | IMDb ID (`tt…`), page URL, title and original-language title |
| `type`, `typeLabel`, `year`, `endYear`, `releaseDate` | Kind of title and its dates                                  |
| `rating`, `ratingCount`, `metascore`                  | IMDb rating, number of votes and Metacritic score            |
| `topRank`, `popularityRank`                           | Chart rank and current popularity rank, when ranked          |
| `runtime`, `runtimeMinutes`, `certificate`            | Length and age rating (`R`, `TV-MA` …)                       |
| `genres`, `keywords`, `plot`, `tagline`               | Genres, optional plot keywords, plot summary and tagline     |
| `directors`, `writers`, `creators`, `stars`           | Main credits by name                                         |
| `cast`                                                | Credited cast with IMDb name IDs and character names         |
| `countries`, `languages`                              | Countries of origin and spoken languages                     |
| `budget`, `grossWorldwide`, `openingWeekendUs`        | Money fields as amount and currency, when IMDb lists them    |
| `prestigiousAward`, `awardWins`, `awardNominations`   | Summary for the headline award (Oscar, Emmy …)               |
| `series`, `seasons`, `episodeCount`, `posterUrl`      | Episode and season data, and the poster image                |

`title` has no year suffix (use `year`), and `genres`, `directors` and `stars` are arrays. Person pages, user reviews, trivia, showtimes and full credits aren't part of this Actor.

## How to scrape IMDb without code

1. Open the Actor's page in the Scrape.ly Store.
2. Pick the preset [Blade Runner titles, 5 results](https://scrape.ly/store/echofield/imdb-scraper/presets/keyword-search.md). "Try this input" loads it in the console. This is the exact input of our run:

```json
{
  "searchQueries": ["blade runner"],
  "maxItems": 5,
  "maxCastMembers": 5
}
```

3. Change the keyword, or paste IMDb URLs, and click **Start**.
4. Open the **Titles** view and export JSON, CSV, Excel or HTML.

The fields that matter most:

- `startUrls`: title pages or bare IDs (`tt0111161`), charts such as Top 250 or Most Popular, lists (`/list/ls…`), advanced-search URLs and find pages.
- `searchQueries`: keywords, one per line.
- `titleTypes`, `genres`, `minYear`, `maxYear`, `minRating`, `minVotes`: filters. With no URLs or keywords, the filters alone run an IMDb advanced search, as in the [Top 1990s drama movies](https://scrape.ly/store/echofield/imdb-scraper/presets/filter-search-keywords.md) preset.
- `maxItems`, `maxItemsPerInput`: the cap for the run and for each input. Duplicates found by two inputs are saved, and charged, once.
- `maxCastMembers`, `includeKeywords`, `expandEpisodes`: how much detail per title. `expandEpisodes` turns every series into all of its episodes, as in the [Breaking Bad with episodes](https://scrape.ly/store/echofield/imdb-scraper/presets/series-episodes.md) preset.

Scrape.ly Store IMDb Scraper Movies, TV shows and episodes by keyword, chart, list, search URL or filters: rating, votes, Metascore, cast, directors, plot, budget and box office. $10.02 per 1,000 titles.

[Try it free](https://scrape.ly/store/echofield/imdb-scraper.md) [Browse the Store](https://scrape.ly/store.md)

## Scrape IMDb with the API

Create a token under **Settings → API & Integrations** in the dashboard and export it as `SCRAPELY_TOKEN`. Our run took 7 seconds, so the synchronous endpoint returns the titles in one call:

```shell
curl -X POST "https://api.scrape.ly/v2/actors/echofield~imdb-scraper/run-sync-get-dataset-items"
  -H "Authorization: Bearer $SCRAPELY_TOKEN"
  -H "Content-Type: application/json"
  -d '{"searchQueries": ["blade runner"], "maxItems": 5, "maxCastMembers": 5}'
```

The call waits up to 45 seconds and returns a JSON array; `?format=csv` gives CSV. A thousand titles take 15 to 45 seconds, and 10,000 about 3 to 4 minutes, so for big jobs start the run with `POST /v2/actors/echofield~imdb-scraper/runs`, poll `/v2/actor-runs/RUN_ID?waitForFinish=60` and read `/v2/actor-runs/RUN_ID/dataset/items`. A sync call that times out answers `408` while the run keeps going, so don't call again. The [Actors API docs](https://scrape.ly/docs/api-actors.md) cover each step.

Python (`pip install scrapely-client-python`). This script runs a filter-only search, highly rated sci-fi movies with at least 100,000 votes, and prints them best first:

```python
import os
from scrapely_client import ScrapelyClient

client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")

run = client.actor("echofield/imdb-scraper").call(
    run_input={
        "titleTypes": ["movie"],
        "genres": ["Sci-Fi"],
        "minRating": 7.5,
        "minVotes": 100000,
        "sortBy": "rating",
        "maxItems": 20,
        "maxCastMembers": 0,
    }
)
print(run.status)  # SUCCEEDED, FAILED, ABORTED or TIMED-OUT
for t in client.dataset(run.default_dataset_id).iterate_items():
    gross = (t.get("grossWorldwide") or {}).get("amount")
    gross_text = f"${gross / 1e6:,.0f}M" if gross else "n/a"
    print(f'{t["rating"] or "-":>4}  {t["ratingCount"] or 0:>9,}  {t["year"]}  {t["title"]:40.40}  gross {gross_text}')
```

Twenty titles cost 20 × $0.01002 = $0.20 at list price.

Node.js (`npm install scrapely-client`):

```javascript
import { ScrapelyClient } from 'scrapely-client';

const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });

const run = await client.actor('echofield/imdb-scraper').call({
  startUrls: [{ url: 'https://www.imdb.com/chart/tvmeter/' }],
  maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((t) => [t.listPosition, t.title, t.rating, t.ratingCount]));
```

The [Python client docs](https://scrape.ly/docs/client-python.md) cover paging through large datasets; the JavaScript client works the same way.

### With an AI agent (MCP)

Scrape.ly runs a hosted MCP server at `https://mcp.scrape.ly`. In Cursor, add it to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "scrapely": {
      "url": "https://mcp.scrape.ly",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}
```

In Claude Code, run `claude mcp add --transport http scrapely https://mcp.scrape.ly` and sign in with `/mcp`. Add `?actors=echofield/imdb-scraper` to the URL to expose only this tool. Then ask: "Use scrapely to get IMDb's 10 most popular TV shows right now with rating, votes and genres, and tell me which genre shows up most." The agent calls `call-actor` and `get-actor-output`; our run below was started over MCP as well. The [MCP docs](https://scrape.ly/docs/mcp.md) list the other clients.

## A real run: everything IMDb finds for "blade runner"

We ran the preset on 26 October 2026. It saved 5 titles in 7 seconds from 3 requests (22 KB), and its list price was $0.0501. Directors are listed as IMDb credits them, in their professional capacity:

| Title                     | Year | Type           | Rating | Votes   | Runtime | Genres                                              | Directors        |
| ------------------------- | ---- | -------------- | ------ | ------- | ------- | --------------------------------------------------- | ---------------- |
| Blade Runner              | 1982 | Movie          | 8.1    | 895,127 | 1h 57m  | Action, Drama, Sci-Fi, Thriller                     | Ridley Scott     |
| Blade Runner 2049         | 2017 | Movie          | 8.0    | 773,911 | 2h 44m  | Action, Drama, Mystery, Sci-Fi, Thriller            | Denis Villeneuve |
| Blade Runner 2099         | 2026 | TV Mini Series | —      | 0       | —       | Action, Drama, Mystery, Sci-Fi, Thriller            | —                |
| Blade Runner: Black Lotus | 2021 | TV Series      | 6.3    | 4,144   | —       | Animation, Action, Drama, Mystery, Sci-Fi, Thriller | —                |
| 2036: Nexus Dawn          | 2017 | Short          | 6.9    | 9,725   | 6m      | Short, Sci-Fi, Thriller                             | Luke Scott       |

```plaintext
20261026T14:25:28.783Z [Scrapely] Container started (setup 0.9 s)
20261026T14:25:29.953Z [scrapely.actor] INFO  [Scrapely] Initializing API storage for run 0e718110b2354c2ea
20261026T14:25:30.113Z [scrapely.proxy_configuration] INFO  Platform proxy access check succeeded.
20261026T14:25:30.113Z [scrapely.actor] INFO  Inputs 1, limit 5, filters none.
20261026T14:25:33.937Z [scrapely.actor] INFO  [Status message]: Saved 5 titles from 1 of 1 inputs. Reached the limit of 5.
20261026T14:25:34.025Z [scrapely.actor] INFO  Done. Saved 5 titles from 1 of 1 inputs. Reached the limit of 5. requests=3 bytes=22366 group=DATACENTER
20261026T14:25:34.889Z [Scrapely] Container state: status=exited exitCode=0 oomKilled=false
```

What the five records show:

- **A keyword search finds the whole franchise.** Two films, a 2026 mini-series, an anime series and a 2017 short, each with its type, so you can filter to movies with one field.
- **The sequel made more, the original rates higher.** Blade Runner (1982) had a $28 million budget and $41.8 million in worldwide gross; Blade Runner 2049 cost $150 million and grossed $287.3 million. On ratings the original still leads, 8.1 from 895,127 votes against 8.0 from 773,911, and on Metascore too, 84 against 81.
- **Popularity is a different signal.** 2049 ranked 197 on IMDb's popularity chart, the new Blade Runner 2099 series 227 before it had a single rating, and the 1982 film 375. Rating tells you reputation; `popularityRank` tells you who's being looked up this week.
- **Awards come summarized.** The original had 2 Oscar nominations and no wins; 2049 won 2 Oscars.
- **Empty means unknown, not zero.** Blade Runner 2099 has `rating: null`, no runtime and no director credited yet. Series rows carry no budget. Plan your columns for nulls.

## What it costs

The Actor charges one event: **$0.01002 per title** saved ($10.02 per 1,000), with no start fee and platform usage (compute and proxy) included. Titles that fail a filter, duplicates and unknown IDs are free. Prices checked on 26 October 2026.

- **Our run:** 5 titles × $0.01002 = **$0.0501** at list price. Our account was billed $0.0401 after its plan's 20% Store discount.
- **The Top 250 movies:** 250 × $0.01002 = $2.51.
- **A weekly Most Popular TV check:** 100 titles × 4 weeks = $4.01 a month.

The Free plan's $5 of monthly credit covers 499 titles. Set a maximum charge per run and the run stops cleanly when it reaches it; see [pricing](https://scrape.ly/pricing.md) for plans.

## What to watch out for

- **Titles only.** Person pages, user reviews, trivia, showtimes and the full credits list aren't included, and `cast` stops at 250 members per title, the most IMDb returns.
- **10,000 results per search.** That's IMDb's cap. For filter searches that match more, the Actor splits the search by release date; titles without a release date are skipped, and the order across slices becomes newest first.
- **Some advanced-search options are ignored.** Plot text, companies, filming locations, sound mixes and colors aren't supported; the run log notes it when it drops one.
- **Money fields are mostly for films.** Budget and box office appear when IMDb lists them, and unreleased titles have no rating.
- **English text.** Titles known only under another name may be found only by that name, so search for the local title if a keyword misses.
- **Use the license that matches your use.** For commercial products, read the next section before you collect anything.

## Is it legal to scrape IMDb?

The Actor reads IMDb's public title data without logging in, and the rows hold facts about published films and shows. IMDb's own rules are strict, though, and you should read them before you start. Its [Conditions of Use](https://www.imdb.com/conditions) grant a license "to access and make personal and non-commercial use of the IMDb Services", and under "Robots and Screen Scraping" state: "You may not use data mining, robots, screen scraping, or similar data gathering and extraction tools on this site, except with our express written consent." They add that IMDb content "may not be reproduced, duplicated, copied, sold, resold, visited, or otherwise exploited for any commercial purpose without express written consent of IMDb", and point to IMDb's licensing department for permission.

IMDb offers two official routes. Its [non-commercial datasets](https://developer.imdb.com/non-commercial-datasets/) are daily TSV files for "personal and non-commercial use", and its help page on [using IMDb data in software](https://help.imdb.com/article/imdb/general-information/can-i-use-imdb-data-in-my-software/G5JTRESSHJBBHTGX) says the data "must be taken only from the datasets made available". For commercial use there's the [IMDb API on AWS Data Exchange](https://developer.imdb.com/documentation/api-documentation/getting-access/), which needs an AWS account and a subscription. If IMDb data powers a product you sell, license it.

Privacy is simpler than on social sites: the Actor collects no user reviews or reviewer names, and cast and crew appear in their credited, professional capacity. This is general information, not legal advice. Before any commercial use, get advice from a lawyer for your case.

## Why Scrape.ly for IMDb data

- **More fields than the free datasets.** IMDb's seven non-commercial TSV files cover titles, alternative titles, crew, episodes, principals, ratings and names. They don't include plots, Metascores, certificates, budgets, box office or posters; the Actor's rows do.
- **Exactly the slice you need.** Instead of downloading whole TSV files and joining them on IDs, ask for one chart, one list, a keyword or a filter search and get finished rows in seconds.
- **No markup to chase.** Classic tutorials such as [33rd Square's](https://33rdsquare.com/how-to-scrape-imdb/) parse generated class names like `sc-7ab21ed2-1` with BeautifulSoup. The Actor reads IMDb's public data endpoint over plain HTTP, with no selectors, no browser and no CAPTCHA.
- **Ready for pipelines and agents.** Schedule a weekly chart run, push rows to a sheet or webhook, or let an agent call it over MCP. Pair it with the [Letterboxd Scraper](https://scrape.ly/store/echofield/letterboxd-scraper.md) for another view of film audiences, and see our guides to [social media scraping](https://scrape.ly/blog/social-media-scraping.md) and [YouTube scraping](https://scrape.ly/blog/youtube-scraping.md) for trailers and fan reaction.

## FAQ

### Does IMDb have an API?

Yes, for licensed use. The IMDb API is a GraphQL API available only through AWS Data Exchange, and it needs an AWS account and a subscription. For personal and non-commercial projects, IMDb publishes daily TSV datasets instead.

### Can you scrape IMDb with Python?

Yes. Install `scrapely-client-python`, call `echofield/imdb-scraper` with keywords, URLs or filters, and iterate over the dataset, as in the sci-fi example above. The scraping runs in the cloud, so your script needs no requests, BeautifulSoup or browser code.

### How do I scrape the IMDb Top 250?

Put `https://www.imdb.com/chart/top/` in `startUrls` and set `maxItems` to 250. Each row carries `listPosition` and `topRank`. The full chart costs $2.51 at list price.

### Can I scrape every episode of a TV series?

Yes. Turn on `expandEpisodes` and every series the run finds expands into all of its episodes, with season and episode numbers. Episodes count toward `maxItems`, so raise it for long-running shows.

### Can I scrape IMDb reviews?

Not with this Actor. It covers titles, and it doesn't collect user reviews or reviewer names. Ratings, vote counts and Metascores are included for every title that has them.

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

$0.01002 per title, platform usage included, with no start fee: $10.02 per 1,000 titles. Our 5-title run cost $0.0501 at list price.

Scrape.ly Store Scrape IMDb titles Run the Blade Runner preset as-is, or paste a chart, list or search URL. Ratings, votes, cast, plot and box office for $10.02 per 1,000 titles.

[Try it free](https://scrape.ly/store/echofield/imdb-scraper.md) [Browse the Store](https://scrape.ly/store.md)

About the author

[Echofield](https://scrape.ly/blog/author/echofield.md) Actor publisher on the Scrape.ly Store

Posts, reels, comments and creator stats, from TikTok and YouTube to Weibo and Bluesky. For social listening, creator research and catching a trend while it is still small. A Scrapely studio.

- [Website](https://scrape.ly/users/echofield.md)

Keep reading

## More in Tutorials

- [![Pixel-art robot with an orange >\_ on its terminal head pulls a fare card with a blue plane and price off a departure board topped with the blue Google Flights logo, and drops it into a crate](https://scrape.ly/media/scrape-google-flights.png?w=750)](https://scrape.ly/blog/scrape-google-flights.md)
  ### [How to Scrape Google Flights: Fares, Airlines, Stops and Price History](https://scrape.ly/blog/scrape-google-flights.md)
  [Scrape Google Flights for any route and date and get every itinerary as JSON: fare, airline, flight numbers, times, stops, layovers, aircraft, legroom and carbon, plus Google's price insights. No-code steps, API and MCP code, and a real run that cost two cents.](https://scrape.ly/blog/scrape-google-flights.md)
- [![Pixel-art robot with an orange >\_ on its terminal head pulls a product card with a photo and a red price out of a stack of cardboard parcels marked with the red AliExpress logo, and drops it into a crate](https://scrape.ly/media/scrape-aliexpress.png?w=750)](https://scrape.ly/blog/scrape-aliexpress.md)
  ### [How to Scrape AliExpress: Products, Prices, Variants and Shipping](https://scrape.ly/blog/scrape-aliexpress.md)
  [Search AliExpress by keyword, then pull every product's variants, stock, shipping fees and seller record into clean rows. No code, curl, Python, Node.js or an AI agent, with two real runs from 26 October 2026 and the exact cost.](https://scrape.ly/blog/scrape-aliexpress.md)
- [![Pixel-art robot with an orange >\_ on its terminal head pulls a paper card with a blue title and two columns of text off a results page headed by the blue Google Scholar cap, and drops it into a crate](https://scrape.ly/media/scrape-google-scholar.png?w=750)](https://scrape.ly/blog/scrape-google-scholar.md)
  ### [How to Scrape Google Scholar: Papers, Citations and Author Profiles](https://scrape.ly/blog/scrape-google-scholar.md)
  [Scrape Google Scholar searches, cited-by lists and author profiles into clean rows: title, authors, venue, year, citation count, versions and the free PDF link. No-code steps, curl, Python, Node.js and MCP, plus a real 10-paper run that cost about a cent.](https://scrape.ly/blog/scrape-google-scholar.md)

## The internet is full of data. Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

[Get Started Free](https://my.scrape.ly/register) [Chat with Support](mailto:hello@scrape.ly?subject=Question%20about%20Scrape.ly\&body=Hi%2C%20I%20have%20a%20question%20about%20Scrape.ly.)

No credit card. No setup calls.
