IMDb Search Scraper - Titles, People & IMDb IDs avatar

IMDb Search Scraper - Titles, People & IMDb IDs

Pricing

from $2.44 / 1,000 items

Go to Apify Store
IMDb Search Scraper - Titles, People & IMDb IDs

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

2

Monthly active users

4 days ago

Last modified

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.

InputSearch terms, or IMDb title and name links
OutputOne row per result: IMDb ID, kind, title or name, category, year or run, stars or known-for, popularity rank, image, link
Ceiling1,000 rows per run, but only about 8 per search term
Account neededNone, 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 getField
The IMDb ID, and what kind of thing it isid, kind
The title, or the person's nametitle
IMDb's own label, such as feature or TV seriescategory
Release year, and the run of a seriesyear, yearRange
The main cast, or what a person is known forstarsOrKnownFor
IMDb's popularity rankrank
Poster or headshot, and the imdb.com pageimage, url

▶️ How to scrape IMDb

  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 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
}
FieldDefaultWhat it is
querynone, the form starts with breaking badA single thing to search for, a film, a show or a person. An API call has to send its own.
queriesempty listSeveral 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.
startUrlsnoneIMDb 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.
typeallall keeps titles and people. titles keeps IDs starting tt. people keeps IDs starting nm. Links are not filtered by it.
maxItems501 to 1,000, counted after deduplication across every term. Ask for more than exists and you get what exists.
notionConnectornoneOptional. Writes one Notion page per row when the run finishes.
notionParentIdnoneOptional. The Notion data source to write into. Leave it empty and the pages land privately in your workspace.
proxyConfigurationoffOptional 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/"
}
FieldHow to read it
idThe IMDb ID, and the reason most people run this. tt for titles, nm for people.
kindtitle or person, worked out from the ID prefix.
categoryIMDb's own label, such as feature, TV series or video game. null for people.
year, yearRangeRelease year, and the run span for a series like 2008-2013. null where neither applies.
rankIMDb's popularity rank. Lower is more popular, and it moves from week to week.
imagePoster or headshot. null when IMDb has none.
urlThe imdb.com page of the title or person.

🧾 Reading the output

Two kinds of row land in your dataset.

RowHow to spot itBilled
A resultok: true and an idyes
A diagnosticok: false and an errorCodeno
CodeWhat it means
BAD_INPUTNone 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_RESULTSThe search ran but type removed everything it found. Try type: "all".
NOT_FOUNDA 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_LIMITThe 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 rank to 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.
  • type filters 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 wantUse
IMDb IDs for films, shows and peopleThis one
Critic and audience scores for a film or showRotten Tomatoes Scraper
TV shows, full episode lists and main castTV Show Scraper
Artists, releases, recordings and labels, with their MBIDsMusicBrainz Scraper
Steam games, store details and player reviewsSteam Scraper
Goodreads ratings and rating counts for booksGoodreads Books Scraper
Wikidata Q-ids and claims for the same people and worksWikidata 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.

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.