IMDb Search Scraper - Titles, People & IMDb IDs
Pricing
from $2.44 / 1,000 items
IMDb Search Scraper - Titles, People & IMDb IDs
Turn film, show and people names into IMDb IDs, or paste IMDb links. Each row holds the ID, kind, title or name, category, year, the stars or known-for line, popularity rank, poster and link. About 8 results per search term and no ratings. $2.50 per 1,000 rows.
Pricing
from $2.44 / 1,000 items
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Type a film, a show or a person and get the IMDb ID back, with 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. Paste IMDb links instead and you get exactly those titles or people.
Read this bit before you build on it: this is IMDb's public search, 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: IMDb ID, kind, title or name, category, year or run, stars or known-for, popularity rank, image, link |
| Ceiling | 1,000 rows per run, but only about 8 per search term |
| Account needed | None, and no IMDb API key |
| Price | $2.50 per 1,000 rows on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 2,000 |
🔍 What IMDb Search Scraper does
It runs your terms through IMDb's public search. 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 and people both come back. type narrows it to one of the 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 data you get from each IMDb result
| What you get | Field |
|---|---|
| The IMDb ID, and what kind of thing it is | id, kind |
| The title, or the person's name | title |
| IMDb's own label, such as feature or TV series | category |
| Release year, and the run of a series | year, yearRange |
| The main cast, or what a person is known for | starsOrKnownFor |
| IMDb's popularity rank | rank |
| Poster or headshot, and the imdb.com page | image, url |
▶️ How to scrape IMDb
- Open IMDb Search Scraper and click Try for free.
- Type one thing into Search query, paste a list into Multiple queries, or paste pages into IMDb links.
- Set Result type if you only want titles or only people.
- Leave Max results alone for a first run, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost to scrape IMDb?
$2.50 per 1,000 rows on the Free plan. Paid plans pay a little less: $2.48 on Starter, $2.46 on Scale and $2.44 on Business. On the free plan, the $5 Apify gives you each month covers about 2,000 rows.
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. Set a maximum cost on the run and it stops when it gets there.
📥 What you give it
{"queries": ["inception", "the matrix", "arrival"],"type": "titles","maxItems": 50}
| Field | Default | What it is |
|---|---|---|
query | none, the form starts with breaking bad | A single thing to search for, a film, a show or a person. 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 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 and people. titles keeps IDs starting tt. people keeps IDs starting nm. 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. |
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 run on 2 October 2026, with the poster URL cut short:
{"ok": true,"id": "tt0903747","kind": "title","title": "Breaking Bad","category": "TV series","year": 2008,"yearRange": "2008-2013","starsOrKnownFor": "Bryan Cranston, Aaron Paul","rank": 40,"image": "https://m.media-amazon.com/images/M/MV5BMzU5ZGYzNmQt...jpg","url": "https://www.imdb.com/title/tt0903747/"}
| Field | How to read it |
|---|---|
id | The IMDb ID, and the reason most people run this. tt for titles, nm for people. |
kind | title or person, worked out from the ID prefix. |
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. |
rank | IMDb's popularity rank. Lower is more popular, and it moves from week to week. |
image | Poster or headshot. null when IMDb has none. |
url | The imdb.com page of the title or person. |
🧾 Reading the output
Two kinds of row land in your dataset.
| Row | How to spot it | Billed |
|---|---|---|
| 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.
💡 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.
- Getting the poster or headshot link for a set of titles or actors.
- 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.- No companies, franchises or IMDb guide pages. IMDb's search sometimes lists a franchise or one of its own guides next to the films. Those are left out and never charged, so a term can come back with 6 or 7 rows instead of 8.
- Search ranking is IMDb's. This actor does not re-order what comes back.
- No watchlists, no reviews, no box office.
- It is not an official IMDb tool. Dami's Studio is independent and is not affiliated with or endorsed by IMDb, or by any other company named on this page.
🧭 Which film, TV, music or game scraper do you need?
| If you want | Use |
|---|---|
| IMDb IDs for films, shows and people | This one |
| Critic and audience scores for a film or show | Rotten Tomatoes Scraper |
| TV shows, full episode lists and main cast | TV Show Scraper |
| Artists, releases, recordings and labels, with their MBIDs | MusicBrainz Scraper |
| Steam games, store details and player reviews | Steam Scraper |
| Goodreads ratings and rating counts for books | Goodreads Books Scraper |
| Wikidata Q-ids and claims for the same people and works | Wikidata Scraper |
❓ Questions people ask
Can I get a film's IMDb rating out of this?
No. IMDb's public search does not carry ratings, and neither does this actor. For a critic and audience score, look at the Rotten Tomatoes row in the table above.
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 call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code for
Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/imdb-scraper. Either way the run
happens on your Apify account at the same price.
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 the legality of web scraping is a good starting point, 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.
