Tony Wang6 分で読めますBox Office Mojo をスクレイピングする方法(2026年版 API & Python)
Box Office Mojo には公開 API がありません。DIY スクレイピング、エンタープライズライセンス、または構造化 API でグロス・週末チャート・フランチャイズデータを取得する方法。
正直に最初に言っておくと、Box Office Mojo には登録できる公開 API がありません。IMDb が所有し、その IMDb を Amazon が所有しており、興行収入データへの公式な経路はAWS Data Exchange を通じて販売されるエンタープライズデータライセンスだけです。週末にソロ開発者が申し込めるようなものではありません。このガイドでは、DIY スクレイピングが実際にどう見えるか、ライセンス経路にかかるコスト、そして Box Office Mojo のグロス・チャート・フランチャイズ集計を正規化された JSON として返す構造化 API について解説します。
なぜ Box Office Mojo のデータを使うのか?
Box Office Mojo は、「この作品はいくら稼いだか」という問いに答えるとき、映画/TV 系や金融系のツールの多くが頼りにする基準ソースです。次のような用途を支えています。
- 興行収入トレンドのリサーチ — 特定のタイトル、ジャンル、公開時期が過去の水準と比べてどう推移しているかを追跡できます。
- フランチャイズ・スタジオ別の実績分析 — フランチャイズ、ブランド(スタジオ/制作会社)、ジャンルごとに生涯グロスを集計できます。
- 週末チャートの追跡 — 国内週末トップ10、配給会社別のマーケットシェア、そして予想値と実績値の精度を追えます。
- 市場調査とジャーナリズム — SNS 投稿やプレスリリースからの推定値ではなく、検証済みのグロスを引用できます。
- AI・分析パイプライン — 正規化された興行収入データセットを予測モデルやメディア業界向けダッシュボードに投入できます。
Box Office Mojo のスクレイピングは合法か?
選択肢1: Python で DIY(そしてなぜ破綻するか)
Box Office Mojo のページは依然として主にサーバーレンダリングされた HTML テーブルなので、DIY スクレイパーはマークアップから行をパースすることになります。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.boxofficemojo.com/year/2025/",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
rows = soup.select("table tr")
# Rank, release title, and gross figures live in <td> cells with
# formatted currency strings ("$423,778,855") you have to re-parse to int
これはデモとしては動きますが、実運用では破綻します。
- 利用規約がこの行為を直接名指ししている。 ログインが必要な機能だけを制限しているサイトとは異なり、Box Office Mojo の規約はデータマイニングとスクリーンスクレイピングを明示的に禁止しています — 理論上のリスクではなく現実のリスクです。
- Amazon 級のアンチボット対策。 Box Office Mojo は IMDb と同じインフラの上に乗っており、単純なクライアントやデータセンター IP はすぐにレート制限やブロックを受けます。
- 数値が生の値ではなく整形済みである。 すべてのグロス数値はテーブルセル内で通貨形式の文字列(
$423,778,855)としてレンダリングされ、自分で整数に再パースする必要があります。しかもテーブル構造は週末・年間・タイトル詳細ページのテンプレート間で異なります。 - すべてが個別にページ分割・分岐している。 フランチャイズ、ブランド、ジャンル、対決(showdown)の集計はそれぞれ別ページに存在し、1つのタイトルの全公開履歴も別のリリースグループ用サブページに分かれています。
選択肢2: ノーコード/既製ツール
Box Office Mojo の公開ページ向けにマーケットプレイスのスクレイパーアクターが存在し、レポートやスプレッドシート用に一度限りの CSV エクスポートを作れます。これらは DIY スクレイピングと同じ利用規約上のリスクを抱えており、「通貨文字列を整数に変換する」というパース問題を代わりに解決してくれるわけでもなく、他のプラットフォームと合わせて定期実行するには扱いにくいものです。
選択肢3: 構造化された Box Office Mojo API
Box Office Mojo のグロスを、通貨文字列がすでに数値としてパースされたクリーンで型付きの JSON として取得したいなら、Box Office Mojo API がそれを実現します。id 不要で、まずは年間の国内チャートから始められます。
curl "https://api.crawlora.net/api/v1/boxofficemojo/year/domestic?year=2025" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"year": 2025,
"grosses_option": "calendar_grosses",
"results": [
{ "rank": 1, "release": "Lilo & Stitch", "gross_raw": "$423,778,855" }
],
"public_page_derived": true
}
}
続いて、タイトル詳細、週末チャート、歴代生涯グロスリスト、フランチャイズ集計を Python で取得します — タイトルは IMDb と同じ tt から始まる id を使います。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/boxofficemojo"
title = requests.get(f"{base}/title", headers=h, params={"id": "tt0499549"}).json()["data"]
weekend = requests.get(f"{base}/weekend/domestic", headers=h, params={"year": 2025, "week": 52}).json()["data"]
lifetime = requests.get(f"{base}/lifetime-grosses", headers=h, params={"area": "worldwide"}).json()["data"]
franchise = requests.get(f"{base}/franchise", headers=h, params={"id": "fr541495045"}).json()["data"]
タイトル詳細は、劇場公開と再上映のすべてを1つのレコードにまとめます(実際のフィールドです — ドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"title": "Avatar",
"title_id": "tt0499549",
"release_groups": [
{ "name": "Original Release", "markets": "77 markets", "worldwide": 2743577587, "worldwide_raw": "$2,743,577,587" }
],
"public_page_derived": true
}
}
週末チャートは、その年・ISO 週における上位公開作品をランキング形式で返します。
{
"code": 200,
"msg": "OK",
"data": {
"year": 2025,
"week": 52,
"results": [
{ "rank": 1, "release": "Avatar: Fire and Ash", "gross_raw": "$63,087,667" }
],
"public_page_derived": true
}
}
フランチャイズ集計(/boxofficemojo/franchise)とブランド集計(/boxofficemojo/brand)は、そのグループに属するすべての作品を summary.movie_count と summary.top_release とともに返します。/boxofficemojo/franchises、/brands、/genres は掘り下げるための利用可能なグループと id を一覧表示します。/boxofficemojo/calendar と /calendar/date は今後の公開スケジュールをカバーし、/weekend/domestic/estimates は金曜の予想値と日曜の実績値を比較し、/date/domestic と /showdown はそれぞれ日次グロスとフランチャイズ同士の一騎打ち比較をカバーします。公開作品ごと(または週末ごと)に1行を保存し、スケジュールを組んで再実行しましょう。
収集できるもの
公開されている興行収入の数字です。年間の国内・世界興行チャート、週末国内チャート(ランキング、配給会社別、予想値対実績値)、日付別の日次国内グロス、公開グループとマーケット別の内訳を含むタイトル詳細、歴代生涯グロスランキング(国内・海外・世界)、映画数と生涯累計を含むフランチャイズ・ブランド(スタジオ)・ジャンル別集計、公開スケジュールとその変更履歴、そして対決(フランチャイズ対フランチャイズ)比較です。
制約
- 利用規約が明確かつ実際に運用されている。 プロジェクトの範囲は公開されている参考数値に留め、コンテンツをウェブ上の他の場所に一括再公開することは避け、大規模な商用利用には書面による許可を得てください。
- セルフサービス型の API 階層がない。 唯一の公式な商用経路は IMDb のエンタープライズ向け AWS Data Exchange ライセンスです。Box Office Mojo に特化した、TMDB の無料キーや IMDb の非商用 TSV データセットに相当するものはありません。
- ページ上にあるのは生の数値ではなく通貨文字列。 すべてのグロスが整形済みテキストとしてレンダリングされ、自分でパースするにはカンマ、ドル記号、そして未公開・未報告の数値を示す「N/A」への対応が必要です。
- id がすべて統一されているわけではない。 タイトルは IMDb の
ttid を再利用しますが、フランチャイズ、ブランド、ジャンル、対決、リリースはそれぞれ独自の接頭辞付き id を使い、まず対応する一覧エンドポイントから見つける必要があります。 - 公開データのみ。 これは Box Office Mojo が公開ページですでに公開しているのと同じグロスを収集するだけであり、ライセンス条件を回避したり完全なデータベースを再構築したりする手段では決してありません。
どこで使われるか
- 興行収入分析ダッシュボード — 週末の実績と前年同期比のトレンドを追跡できます。
- フランチャイズ・スタジオ別スコアカード — スタジオやフランチャイズの全公開履歴にわたる生涯グロスを比較できます。
- メディア・金融ジャーナリズム — 推定値ではなく検証済みのグロスを引用できます。
- プラットフォーム横断の評価リサーチ — 興行収入の実績を TMDB や IMDb の評価データ、あるいは Rotten Tomatoes の批評家スコアと組み合わせることで、お金と評価が実際にどう相関しているかを見られます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
プレイグラウンドで年間・週末・タイトルのエンドポイントを試し、API ドキュメントでスキーマを確認し、料金をご覧ください。Box Office Mojo はあるタイトルが実際にいくら稼いだかを教えてくれます。TMDB はカタログとキャストのメタデータを、Rotten Tomatoes は批評家・観客スコアを加えます — どちらか一方だけを信頼するのではなく、グロスと評価データを組み合わせましょう。あわせてウェブスクレイピング API の選び方とウェブスクレイピングは合法かもご覧ください。
よくある質問
Box Office Mojo に公開 API はありますか?
いいえ。Box Office Mojo はセルフサービス型の開発者 API を提供していません。2008年以降 IMDb の一部として運営されており、唯一の公式な商用データ経路は AWS Data Exchange を通じた IMDb のエンタープライズライセンス(「IMDb and Box Office Mojo for Movies/TV/OTT」)で、ソロ開発者ではなくエンタープライズ向けの価格設定・提供範囲になっています。
Box Office Mojo をスクレイピングするのは合法ですか?
Box Office Mojo の利用条件は、書面による明示的な同意なしのデータマイニング、ロボット、スクリーンスクレイピングを明確に禁止しており、robots.txt は指名されたアローリストを除くすべてのクローラーをブロックしています。収集は公開されている参考数値に留め、他所での再公開は避け、大規模利用や商用利用には書面による許可を得てください。これは法的助言ではありません。
タイトルの Box Office Mojo の id はどうやって調べますか?
タイトルは IMDb と同じ tt から始まる id を使います(例:Avatar なら tt0499549)。まず IMDb 検索でタイトルを解決し、その id をそのまま Box Office Mojo のタイトルエンドポイントに使い回せます。フランチャイズ、ブランド(スタジオ)、ジャンル、対決(showdown)はそれぞれ独自の接頭辞付き id を使い、対応する一覧エンドポイント(franchises、brands、genres、showdowns)から見つけられます。
実際にどんな興行収入データを収集できますか?
年間の国内・世界興行チャート、週末国内チャート(ランキング、配給会社別、予想値対実績値)、日付別の日次グロス、公開グループ別のマーケット内訳を含む完全なタイトル詳細、歴代生涯グロスランキング、映画数と生涯累計を含むフランチャイズ/ブランド/ジャンル別集計、公開スケジュール、そしてフランチャイズ対フランチャイズの対決比較です。
なぜ Box Office Mojo はグロスの数値を整形済みの通貨文字列として表示するのですか?
公開サイトはすべてのグロスを生の数値ではなく表示用テキスト(例:「$423,778,855」)としてテーブルセル内にレンダリングするため、DIY スクレイパーは自分でカンマとドル記号を取り除いて各数値を整数に再パースし、未公開・未報告のグロスを示す「N/A」にも対応する必要があります。
スクレイピングという観点で、Box Office Mojo は IMDb や TMDB とどう違いますか?
IMDb と TMDB は主にカタログのメタデータ、キャスト・クルー、評価を扱います。Box Office Mojo はレビューやスター評価ではなく、グロス・週末チャート・フランチャイズ/スタジオ別集計といった財務パフォーマンスデータに特化しています。Box Office Mojo の数値を IMDb や TMDB のカタログ・評価データと組み合わせることで、ある作品が実際にいくら稼ぎ、どう評価されたかの全体像がより明確になります。
Box Office Mojo を自分でスクレイピングする代わりに構造化 API を使えますか?
はい。構造化された Box Office Mojo API は、サイトのグロス・週末チャート・フランチャイズ/ブランド/ジャンル別集計を、通貨の数値がすでにパース済みの正規化 JSON として返します。サイトの HTML を直接スクレイピングする際に伴うパースの保守作業や利用規約上のリスクを避けられます。