Tony Wang6 分で読めます2026年版 IMDb のスクレイピング方法(API と Python)
2026年に IMDb をスクレイピングする方法。タイトル、キャスト・クルー、評価、レビュー、受賞歴を、DIY・ノーコード・構造化 API で取得し、IMDb の利用規約の実態も解説します。
2026年に IMDb をスクレイピングする最も手早い方法は、IMDb のサーバーレンダリングされたページを自分で解析するのではなく、正規化された JSON — タイトル詳細、キャストとクルー、評価、ユーザーレビュー、受賞歴 — を返す構造化 API を呼び出すことです。IMDb はウェブにおける映画・TV データベースの事実上の標準ですが、セルフサービス型の公開 API はなく、その利用規約はこのシリーズのほとんどのサイトよりも明示的に自動アクセスを制限しています。このガイドでは3つのアプローチすべてを取り上げ、それぞれが何を返し、どこで破綻するか、そして法律上の実態を最初に解説します。
なぜ IMDb をスクレイピングするのか?
IMDb のタイトルと人物のデータはほとんどの映画/TV 製品の基盤であり、次のような用途を支えます。
- カタログの拡充 — 正規のタイトル、キャスト、評価、ジャンルのデータをメディアアプリ、ウォッチリスト、社内データセットに紐づけられます。
- レコメンドと発見 — 「類似タイトル」やジャンル/年代ベースのレコメンド機能を構築できます。
- 評判・センチメントのリサーチ — あるタイトルの評価やレビューの論調が時間とともにどう変化するかを追跡できます。
- タレントとフィルモグラフィーのトラッキング — 監督や俳優の作品歴と受賞歴を追跡できます。
- ストリーミング比較のリサーチ — タイトル/評価のデータを実際にどこでそのタイトルが視聴可能かと組み合わせ、評価の高い作品と観やすい作品を見比べられます。
IMDb をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
IMDb のページはクリーンなセマンティック HTML ではなく、埋め込まれた JSON の塊からサーバーレンダリングされているため、DIY のスクレイパーはページからその塊を解析します。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.imdb.com/title/tt1375666/",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Title, rating, and genres live inside a __NEXT_DATA__ / structured-data
# JSON blob, not selectable markup — you parse JSON out of a <script> tag
デモは動きますが、その後破綻します。
- 利用規約が明示的であり、実際に運用されている。 このシリーズの他の多くのプラットフォームと異なり、IMDb の Conditions of Use と
robots.txtはログインが必要な機能を制限するだけではありません。データマイニングとスクリーンスクレイピングを直接名指ししており、ここから始まるのは理論上のリスクではなく現実のリスクです。 - 安定したマークアップがない。 ページは Next.js でレンダリングされ、データはスクリプトタグ内の JSON として埋め込まれています。この構造はリデザインや A/B テストのたびに変化し、予告なくパーサーを壊します。
- Amazon 規模のアンチボット。 IMDb は Amazon グレードのインフラの背後にあり、データセンター IP や単純なクライアントはすぐにレート制限やブロックを受けます。
- すべてが別々にページネーションされている。 全キャスト・クルー、レビュー、シーズンごとのエピソード、受賞歴はそれぞれ独自のページネーション付きサブページに存在します。1回のページ読み込みでタイトル全体を取得することは決してできません。
選択肢2: ノーコードツールと無料データセット
IMDb は自前のNon-Commercial Datasetsを公開しています。datasets.imdbws.com で毎日更新される TSV ファイルで、タイトル、名前、評価、クルーをカバーしています。オフラインでの個人的なバッチ処理には正直なところ最初の選択肢ですが、ライセンスは個人・非商用限定であり、ファイルにはあらすじ、レビュー、画像が一切含まれません。したがって商用利用や、これらのフィールドが必要な用途は別の手段に頼る必要があります。マーケットプレイスのスクレイパーアクターは単発の取得ではそのギャップの一部を埋めますが、パイプラインでは扱いにくく、DIY と同じ利用規約上のリスクを抱えています。
選択肢3: 構造化された IMDb API
繰り返し実行でき、許諾範囲が明確なワークフローには、IMDb スクレイピング API が正規化された JSON を返し、メンテナンスすべきページ解析はありません。タイトルまたは人物を検索するには次のようにします。
curl "https://api.crawlora.net/api/v1/imdb/search?query=inception" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "inception",
"limit": 10,
"results": [
{ "id": "tt1375666", "title": "Inception", "url": "https://www.imdb.com/title/tt1375666/", "year": "2010" }
]
}
}
続いて id を解決し、詳細・クレジット・レビューを Python で取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/imdb"
hits = requests.get(f"{base}/search", headers=h, params={"query": "inception"}).json()["data"]["results"]
title_id = hits[0]["id"]
title = requests.get(f"{base}/title", headers=h, params={"id": title_id}).json()["data"]
credits = requests.get(f"{base}/title/credits", headers=h, params={"id": title_id}).json()["data"]
reviews = requests.get(f"{base}/title/reviews", headers=h, params={"id": title_id, "limit": 20}).json()["data"]
タイトル詳細は正規化された JSON です(実際のフィールド。ドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"id": "tt1375666",
"title": "Inception",
"year": "2010",
"runtime_minutes": 148,
"genres": ["Action", "Adventure", "Sci-Fi"],
"rating_value": 8.8,
"public_page_derived": true
}
}
クレジットはセクション(Cast、Directed by、Writing Credits、…)ごとに返され、各行には name、url、そしてキャストの場合は character が含まれます。
{
"data": {
"id": "tt1375666",
"sections": [
{ "name": "Cast", "slug": "cast", "credits": [
{ "name": "Leonardo DiCaprio", "url": "https://www.imdb.com/name/nm0000138/", "character": "Dom Cobb" }
] }
]
}
}
人物についても同じ仕組みです。/imdb/name は id(nm0634240)を指定すると経歴、生年月日情報、職業、代表作を返し、/imdb/name/credits はそのフィルモグラフィーを返します。受賞歴(/imdb/title/awards)、シーズンごとのエピソード(/imdb/title/episodes)、キーワード、技術仕様、視聴者向けガイドもすべて同じ「id を渡して正規化された JSON を受け取る」形です。タイトル(あるいはレビュー、クレジット)1件につき1行を保存し、スケジュールを組んで再実行しましょう。
収集できるもの
公開されているタイトルと人物のメタデータです。検索結果(id、タイトル、url、年)、タイトル詳細(評価、ジャンル、上映時間、あらすじ、公開日、キャスト、監督)、セクションごとの全キャスト・クルー、ユーザーレビュー(タイトル、評価、参考になった数、ネタバレフラグ)、受賞歴、シーズンごとのエピソード、キーワード、技術仕様、視聴者向けガイド、トリビア、goof、名言、撮影地、企業クレジット、そして人物プロフィール(経歴、生年月日情報、職業、代表作、フィルモグラフィー)です。あくまで公開されているメタデータのみです。
制約とよくある課題
- このシリーズの中で最も法的に慎重を要するガイド。 IMDb の利用規約は自動収集を禁止することを明示しています。プロジェクトの範囲を公開されている参照用フィールドに限定し、レビュー全文を大量に再公開することは決してせず、大規模な商用利用については書面での許可を得てください。
- もろい、JSON-in-HTML なマークアップ。 DIY での解析は、IMDb のレンダリングが変わるたびに継続的なメンテナンスが必要です。
- Amazon 規模のアンチボット。 単純なクライアントやデータセンター IP からのリクエストはレート制限やブロックを受けると想定してください。
- タイトルごとのファンアウト。 レビュー、エピソード、全クレジットはそれぞれ別々にページネーションされているため、タイトルの完全なレコードを得るには複数回の呼び出しが必要です。
- 公開データのみ。 これは IMDb がすでに公開表示しているものを収集するだけであり、ログインの壁を回避したり、競合するカタログ製品を作ったりする手段では決してありません。
どこで使われるか
- カタログの拡充 — 正規のタイトル、キャスト、評価のデータをメディア製品に紐づけられます。
- レコメンドエンジン — 「類似タイトル」やジャンルベースの発見機能を支えます。
- 評判リサーチ — あるタイトルの評価やレビューの傾向を時系列で追跡できます。
- タレントのトラッキング — 監督や俳優のフィルモグラフィーと受賞歴を追跡できます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
検索・タイトル・クレジットのエンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。IMDb はタイトルが何であるか、誰が作ったか、どう評価されているかを教えてくれます。JustWatch は実際にどこでストリーミングされているかを教えてくれます。両者を組み合わせれば、「何が良くて、どこで観られるか」を網羅するパイプラインになります。実際に誰かがそのタイトルを検索しているか気になりますか? Google トレンドのスクレイピング方法は評価データと実際の検索需要を組み合わせます。評判の側面では、Trustpilot レビューのスクレイピング方法がタイトルの代わりに企業を対象に同じ評価/レビューのパターンを扱っています。あわせてウェブスクレイピング API の選び方とウェブスクレイピングは合法かもご覧ください。
よくある質問
IMDb には公式 API がありますか?
セルフサービス型のものはありません。IMDb の公式提供はエンタープライズ向けの B2B データライセンス(AWS Data Exchange 経由で提供され、6桁の最低料金がかかるとされています)であり、無料の Non-Commercial Datasets は個人・非商用限定のバルク TSV ファイルで、あらすじ、レビュー、画像は含まれません。商用利用やフィールドが豊富な用途には構造化 API が現実的な道筋です。
IMDb のスクレイピングは合法ですか?
IMDb はこのシリーズのほとんどのプラットフォームより厳しいです。その Conditions of Use と robots.txt は、書面による同意なしのデータマイニングやスクリーンスクレイピングを明示的に禁止しています。これは公開されている参照用データ — タイトル、クレジットされた名前、集計された評価、そして IMDb が公開表示しているレビュー本文 — としてのみ扱ってください。レビュー全文を大量に再公開することは決してせず、大規模な商用利用については IMDb のライセンスチームから書面での許可を得てください。法的助言ではありません。
映画やドラマのキャストとクルーはどうやって取得しますか?
IMDb のタイトル id(例: tt1375666)を検索するか、すでに持っている場合はそのまま使い、/imdb/title/credits を呼び出します。Cast、Directed by、Writing Credits などのセクションごとに、名前、プロフィール url、そしてキャストの場合は演じたキャラクターが返ってきます。
IMDb の評価やレビュー本文は取得できますか?
はい。/imdb/title はタイトルの集計された rating_value と rating_count を返し、/imdb/title/reviews は個々の公開レビュー行(タイトル、評価、参考になった数、ネタバレフラグ)を返します。公開レビューのみで、非公開のアカウント活動は返しません。
タイトルだけでなく俳優や監督も調べられますか?
はい。人物 id(例: nm0634240)で /imdb/name を呼び出すと、経歴、生年月日情報、職業、代表作が返り、/imdb/name/credits はその人物の完全なフィルモグラフィーを返します。
TV番組のエピソードやシーズンを追跡できますか?
はい — /imdb/title/episodes は season パラメータを受け付け、シーズンごとにページネーションされます。1シーズンずつ取得して、シリーズの完全なエピソード一覧を組み立てましょう。
IMDb の無料 Non-Commercial Datasets だけで API の代わりになりますか?
個人的なオフラインのバッチ処理で、中核フィールド(タイトル、年、ジャンル、基本的な評価)だけを扱うなら十分です。ただしライセンスは商用利用を禁止しており、ファイルにはあらすじ、レビュー、画像、そして毎日の更新より新しい情報は含まれません。ライブ API はその両方のギャップを埋めます。