IMDb Search Scraper
Search IMDb for titles, people and companies: IMDb ID, year, category, cast line, poster, URL. About 8 per query. $2.50 per 1,000.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
query,queries,startUrls(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0025 per item = $2.5 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Item returned | Charged per title/person returned. | $0.0025 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-03, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
query | A single thing to search IMDb for, a movie, TV show or person name, e.g. "breaking bad" or "tom hanks". For several searches at once, use the "queries" field below instead (or as well). | string |
queries | Run several searches in one go, one request per term, results merged and de-duplicated by IMDb id. Use this to get more than the ~8 results a single query returns (the suggestion API has no pagination). Example: ["inception", "the matrix"]. If both "query" and "queries" are set, all are searched. | array |
startUrls | Title or name pages copied from IMDb, like https://www.imdb.com/title/tt0903747/ or https://www.imdb.com/name/nm0000158/, or bare ids like tt0903747. Each comes back as exactly that title or person, one row each, and Result type does not filter them. A link IMDb has no entry for gets a free NOT_FOUND row. Lists, charts, company and search pages are not supported, and the run stops before reading anything if one is in the list. | array |
type | Which kinds of results to keep: "all" (titles + people + companies), "titles" (movies/shows only, IMDb ids starting tt), or "people" (cast/crew only, ids starting nm). | string |
maxItems | Maximum number of de-duplicated rows to return across all queries. NOTE: a single query returns a fixed ~8 results (the suggestion API has no pagination); to get more, add more terms to "queries". If maxItems exceeds what's available, the actor just returns what it found. | integer |
notionConnector | Optional. Write each item as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless. | string |
notionParentId | Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead. | string |
What you get
A structured dataset — each result includes fields like:
categoryidimagekindrankstarsOrKnownFortitleurlyearyearRangeExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
3 ready-to-run use cases
Find IMDb ID for Any Movie or TV Title
Type a title, get back the tt ID, the year, the poster URL and the lead cast line. Reads IMDb's own suggestion feed, so there is no API key to get.
IMDb Actor Search: Name to Person ID and Headshot
Any actor, director or writer by name, returning the nm person ID, the known-for line and a headshot URL. Companies and titles are filtered out.
Build an IMDb ID List From a Batch of Titles
Paste a column of film and show titles, get one table of IMDb IDs and years, de-duplicated by ID across every query so a repeat title lands once.
Related tools in Media & Entertainment Data
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Steam Games Scraper
Scrape Steam games with no API key. Get price, discount, genres, developers, Metacritic, platforms, SteamSpy stats and player reviews. $2 per 1,000 rows.
Books Scraper (Google Books + Open Library)
Search Open Library or Google Books: title, authors, ISBN, publisher, year, rating and cover. Open Library needs no key. $1.00 per 1,000 books.
TVMaze TV Show Scraper
Search TVMaze for TV shows and people. Get ratings, genres, network, IMDb IDs, images and full episode lists, as JSON. $2 per 1,000 rows.
MusicBrainz Scraper
Scrape MusicBrainz artists, releases, recordings and labels. Every row has an MBID, plus names, types, dates and tags. No API key. $0.20 per 1,000 records.
Where this tool sits
- Categories
- Media & Entertainment Data
- Platforms
- IMDb
IMDb Search Scraper: resolve a name to an IMDb ID, for titles and people
Type breaking bad or tom hanks and get back the IMDb ID, the title or name, what kind of thing it is, the year, the stars or known-for line, the poster or headshot, IMDb's popularity rank and the imdb.com URL. No API key, no account.
Read this bit before you build on it: this is the index behind IMDb's own search box, so about 8 results come back per query and there is no page two. No ratings, no vote counts, no genre, no runtime, no plot. It is very good at turning a name into an ID, which is usually the first thing you need, and it is the wrong tool for full title metadata.
| Input | Search terms, or IMDb title and name links |
| Output | One row per result |
| Ceiling | 1,000 rows per run, but only about 8 per query |
| Account needed | None, and no IMDb API key |
| Price | $2.50 per 1,000 rows, flat on every plan |
🔍 What IMDb Search Scraper does
It searches the same index IMDb's own search box uses. One term in query, or a list in queries, or both at once. Every term is searched separately and the rows are merged and deduplicated on IMDb ID, so inception and the matrix in one run come back as one clean list.
That list is the only way past the per-query ceiling. Setting maxItems to 200 does not turn one term into 200 rows, because the index hands out about 8 and offers no pagination. Twenty-five terms will get you there; one term will not.
Titles, people and companies all come back. type narrows it to one of the first two.
Links work too. Paste title or name pages into startUrls and each one comes back as exactly that title or person, one row per link. Handy when you already have the pages and want the clean ID, year and poster in a table.
📥 What you give it
{
"queries": ["inception", "the matrix", "arrival"],
"type": "titles",
"maxItems": 50
}
| Field | Default | What it is |
|---|---|---|
query | none | A single thing to search for, a film, a show or a person. The Console box starts at breaking bad; an API call has to send its own. |
queries | empty list | Several terms in one run, searched one request each, merged and deduplicated by IMDb ID. Set this and query together and all of them are searched. |
startUrls | none | IMDb title or name pages, such as https://www.imdb.com/title/tt0903747/, or bare IDs like tt0903747. One request and one row per link, exactly the title or person it points to. Lists, charts, company and search pages are refused before anything is read. |
type | all | all keeps titles, people and companies. titles keeps IDs starting tt. people keeps IDs starting nm. Companies only appear under all. Links are not filtered by it. |
maxItems | 50 | 1 to 1,000, counted after deduplication across every term. Ask for more than exists and you get what exists. |
notionConnector | none | Optional. Writes one Notion page per row when the run finishes. Authorise the connector once under Settings, API & Integrations, MCP connectors. |
notionParentId | none | Optional. The Notion data source to write into. Leave it empty and the pages land privately in your workspace. |
proxyConfiguration | off | Optional network settings. A normal run does not need them. |
Send none of query, queries or startUrls and the run returns a BAD_INPUT row instead of results.
📤 What you get back
A real row from a recent run, trimmed where the poster URL runs long:
{
"ok": true,
"id": "tt0903747",
"kind": "title",
"title": "Breaking Bad",
"category": "TV series",
"year": 2008,
"yearRange": "2008-2013",
"starsOrKnownFor": "Bryan Cranston, Aaron Paul",
"rank": 46,
"image": "https://m.media-amazon.com/images/M/MV5BOWE4NTc3YmYt...jpg",
"url": "https://www.imdb.com/title/tt0903747/"
}
| Field | What it is |
|---|---|
id | The IMDb ID, and the reason most people run this. tt for titles, nm for people, co for companies. |
kind | title, person, company or other, worked out from the ID prefix. |
title | The title, or the person's name. |
category | IMDb's own label, such as feature, TV series or video game. null for people. |
year, yearRange | Release year, and the run span for a series like 2008-2013. null where neither applies. |
starsOrKnownFor | The main cast for a title, the known-for line for a person. |
rank | IMDb's popularity rank. Lower is more popular. |
image | Poster or headshot. null when IMDb has none. |
url | The imdb.com page. A company ID gets a company search URL. null on the odd kind: "other" row, which has no page of its own. |
🧾 Reading the output
Two kinds of row land in your dataset.
| Row | How to spot it | Charged |
|---|---|---|
| A result | ok: true and an id | yes |
| A diagnostic | ok: false and an errorCode | no |
| Code | What it means |
|---|---|
BAD_INPUT | None of query, queries or startUrls was set, or a link was not an IMDb title or name page. Nothing was searched and no rows were charged. |
NO_RESULTS | The search ran but type removed everything it found. Try type: "all". |
NOT_FOUND | A link's ID is not in IMDb's index, so that link has no row of its own. The row carries the link and id. |
TIME_LIMIT | The run got close to its time limit and stopped early. Every result delivered before that is in your dataset; give the run more time, or send fewer terms and links, to get the rest. If none came back at all, the run is marked as failed. |
Other diagnostics carry their own errorCode in the same shape. One thing to know about multi-term runs: if some terms work and others fail, the failures show up in the run log rather than as rows, so compare the row count against the number of terms you sent.
▶️ How to run it
1. Open IMDb Search Scraper and click Try for free. 2. Type one thing into Search query, paste a list into Multiple queries, or paste pages into IMDb links. 3. Set Result type if you only want titles or only people. 4. Leave Max results alone for a first run, then click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$2.50 per 1,000 rows. Flat on every Apify plan, no volume tiers.
You pay per row delivered. Duplicates removed across your terms are not charged, diagnostic rows are not charged, and if nothing is found, no rows are charged. Since a term returns about 8 rows, a 20-term run lands near 160 rows.
💡 What people use it for
- Turning a spreadsheet of film or show names into IMDb IDs, so the rest of a pipeline has a key to
join on.
- Checking that a title people typed by hand actually exists, and catching the ones that matched
nothing.
- Pulling posters and headshots for a set of titles or actors without touching a page.
- Ranking a shortlist by
rankto see which of them anyone is actually looking up.
🚧 What it does not do
- No ratings, vote counts, genres, runtime, plot or full cast. Those live on the title page,
which this does not read.
- About 8 rows per query, and no second page. More rows means more terms, not a bigger
maxItems.
typefilters on the ID prefix only. It is not a search-side filter, so narrowing can empty a
run that did find things.
- Companies are only returned under
type: "all". - A
kind: "other"row has nourl. Franchise-style entries have no page of their own. - Search ranking is IMDb's. This actor does not re-order what comes back.
- No watchlists, no reviews, no box office.
🧭 Which reference scraper do you need?
| If you want | Use |
|---|---|
| IMDb IDs for titles and people | This one |
| TV shows, episodes and cast records | TV Show Scraper |
| Artists, releases and labels | MusicBrainz Scraper |
| Books, editions and ISBNs | Books Scraper |
| Mobile apps and their listings | App Store Scraper |
❓ Questions people ask
Can I get a film's rating out of this? No. The index behind IMDb's search box does not carry ratings, and neither does this actor.
Why did I only get 8 rows? That is the ceiling per term. Put more terms into queries.
Do repeated terms cost me twice? No. Terms that differ only in capitalisation are searched once, and identical IDs across terms are merged before anything is charged.
Can I search people and titles at once? Yes, that is what type: "all" does. It is the default.
Can I schedule it? Yes, like any Apify actor. A saved list of terms in queries makes it repeatable.
Is scraping IMDb search results legal? These are public search results. They can still describe real people, which GDPR and similar laws cover, so have a reason for collecting them. Apify's write-up on scraping and the law is a good place to start, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the terms you searched and the run ID. The errorCode on the diagnostic row usually names the problem on its own.