Tony Wang4 分で読めます2026年版 JustWatch のスクレイピング方法(API と Python)
2026年に JustWatch のストリーミング視聴可否をスクレイピングする方法。視聴可能なオファー、タイトル、120以上の国のプロバイダーを、DIY・ノーコード・構造化 API で取得します。
2026年に JustWatch をスクレイピングする最も手早い方法は、JustWatch の GraphQL API を自分でリバースエンジニアリングするのではなく、正規化された JSON を返す構造化 API を呼び出すことです。返ってくるのは、視聴可能なオファー、タイトル詳細、プロバイダー、そして120以上の国にまたがる作品探索です。JustWatch は最大級の「どこで観られるか」データベースですが、セルフサービス型の公開 API はなく、よく使われる非公式ライブラリは商用利用を禁止しています。このガイドでは3つのアプローチすべてを取り上げ、それぞれが何を返し、どこで破綻し、そして法律上の基本を解説します。
なぜ JustWatch をスクレイピングするのか?
JustWatch はどの作品がどこでストリーミングされているかをマッピングしており、次のような用途を支えます。
- ストリーミング視聴可否のトラッキング — どのサービスがどの国で、いくらでその作品を扱っているかを把握できます。
- 「どこで観られるか」機能 — メディアアプリやガイドに視聴可否データを追加できます。
- カタログ&配信期間の分析 — 作品がいつサービスに登場し、いつ離脱するかを追跡できます。
- 競合 OTT のリサーチ — 各市場のプロバイダーのカタログを比較できます。
JustWatch をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
JustWatch のサイトは公開 GraphQL API 上で動作しているため、DIY のスクレイパーはそれらのクエリを再現します。
import requests
# JustWatch serves data from a GraphQL endpoint; you replicate its persisted queries
resp = requests.post(
"https://apis.justwatch.com/graphql",
json={"operationName": "GetSearchTitles", "variables": {"country": "US"}, "query": "..."},
)
デモは動きますが、その後破綻します。
- セルフサービス型の公式 API がない。 JustWatch の公式提供は提携/エンタープライズ向けの製品であり、
data-partner@justwatch.comを通じて手配するカスタムデータレポートやウィジェットです。サインアップして取得できる公開キーではありません。 - 非公式ライブラリは非商用。 人気の
JustWatchAPIPython ライブラリは GraphQL エンドポイントをラップしますが、その規約は商用利用を禁止しているため、製品には使えません。 - GraphQL のドリフト。 JustWatch は変化する persisted/ハッシュ化された GraphQL クエリを使っているため、ハッシュやスキーマが変わると再現したクエリは壊れます。
- 国ごとのファンアウト。 視聴可否は国ごとです。ある作品が世界のどこでストリーミングされているかを知るには、120以上のロケールそれぞれに問い合わせて結果をつなぎ合わせる必要があり、その間ずっとレート制限内に収める必要があります。
選択肢2: ノーコードツール
マーケットプレイスの「JustWatch 視聴可否」アクターは CSV/JSON をエクスポートし、単発の取得には向いていますが、製品内のパイプラインでは扱いにくく、同じ GraphQL の脆さを引き継ぎます。
選択肢3: 構造化された JustWatch API
繰り返し実行するワークフローには、JustWatch スクレイピング API が正規化された JSON を返し、メンテナンスすべき GraphQL はありません。タイトルを検索するには次のようにします。
curl "https://api.crawlora.net/api/v1/justwatch/search?query=inception&country=US" \
-H "x-api-key: $CRAWLORA_API_KEY"
続いてタイトルの id を解決し、その視聴可能なオファーを Python で取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/justwatch"
# search returns a JustWatch title id (e.g. tm92641)
hits = requests.get(f"{base}/search", headers=h, params={"query": "inception", "country": "US"}).json()["data"]["results"]
title_id = hits[0]["id"]
offers = requests.get(f"{base}/title/offers", headers=h, params={"id": title_id, "countries": "US,GB"}).json()["data"]
providers = requests.get(f"{base}/providers", headers=h, params={"country": "US"}).json()["data"]
検索レスポンスは正規化された JSON です(実際のフィールド)。
{
"code": 200,
"msg": "OK",
"data": {
"query": "inception",
"country": "US",
"language": "en",
"results": [
{ "id": "tm92641", "object_type": "MOVIE", "title": "Inception", "year": 2010, "path": "/us/movie/inception", "url": "https://www.justwatch.com/us/movie/inception", "poster_url": "https://images.justwatch.com/poster/302449148/s718/inception.jpg" }
]
}
}
オファーは国ごとに返ってきます(フィールドは説明用です。ドキュメントを確認してください)。それぞれに provider、monetization_type(flatrate/rent/buy/free/ads)、表示フォーマット(SD/HD/4K)、price、そしてディープリンクが含まれます。サービスの一覧には /justwatch/providers を使い、カタログを閲覧するには /justwatch/discover、/provider/titles、/genre/titles、/popular を使います。オファー1件につき1行を保存し、スケジュールを組んで再取得しましょう。
収集できるもの
公開されている視聴可否のメタデータです。検索結果(id、種別 MOVIE/SHOW、タイトル、年、path、url、poster)、タイトル詳細・メディア・類似タイトル、国ごとの視聴可能なオファー(プロバイダー、収益化タイプ、フォーマット、価格、ディープリンク)、プロバイダー一覧、そしてプロバイダー・ジャンル・収益化タイプ・人気度による作品探索です。あくまで公開されている視聴可否データのみです。
制約とよくある課題
- セルフサービス型の公式 API がない。 JustWatch の公式データは提携/エンタープライズ向けのみであり、非公式の Python ライブラリは非商用です。したがって商用製品を作るには、公開データを自分でスクレイピングするか、構造化 API を使うことになります。
- 視聴可否は国ごと。 オファーは国単位にスコープされるため、世界全体をカバーするには対象とする各市場に問い合わせて結果をつなぎ合わせる必要があります。
- 価格と配信期間は素早く変わる。 作品はサービスに登場し離脱し、価格も変動するため、一度きりのスナップショットを信頼するのではなく、スケジュールを組んで再取得しましょう。
- 公開データであり、アクセス権ではない。 これは作品がどこで視聴可能かを教えるものであり、プロバイダーのペイウォールや DRM を回避することは決してありません。
どこで使われるか
- ストリーミング視聴可否のトラッキング — 作品がどこで、どの国で、いくらでストリーミングされているかを監視できます。
- 「どこで観られるか」機能 — メディアアプリやガイドの視聴可否データを支えます。
- OTT カタログのリサーチ — 各市場のプロバイダーのライブラリや配信期間を比較できます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
検索とオファーのエンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。あわせてウェブスクレイピング API の選び方とウェブスクレイピングは合法かもご覧ください。または、JustWatch の視聴可否データから何が見えてくるかをストリーミング分断化の調査でご確認ください。
よくある質問
JustWatch には公式 API がありますか?
セルフサービス型のものはありません。JustWatch の公式提供は提携/エンタープライズ向けの製品で、data-partner@justwatch.com を通じて手配するカスタムデータレポート、ウィジェット、ダッシュボードであり、サインアップして取得できる公開キーではありません。人気の非公式 JustWatch Python ライブラリは GraphQL エンドポイントをラップしますが商用利用を禁止しているため、製品には公開データのスクレイピング(または構造化 API)が現実的な道筋です。
ブロックされずにストリーミング視聴可否をスクレイピングできますか?
JustWatch は、変化する persisted クエリを持つ公開 GraphQL API からデータを提供しており、さらにアンチボットや国ごとのファンアウトもあるため、DIY のスクレイパーには現実的なヘッダー、プロキシ、そして継続的なメンテナンスが必要です。構造化 API は、公開されている視聴可否データについて GraphQL とプロキシ処理を1つのキーの背後で処理します。
タイトルの視聴可能なオファーはどうやって取得しますか?
タイトルを検索して JustWatch の id(例: tm92641)を取得し、その id と対象とする国を指定して /justwatch/title/offers を呼び出します。各オファーにはプロバイダー、収益化タイプ(flatrate/rent/buy/free/ads)、フォーマット(SD/HD/4K)、価格、そしてディープリンクが含まれます。
なぜ視聴可否は国ごとなのですか?
ストリーミングの権利は市場ごとに異なるため、JustWatch はオファーを国単位にスコープしています。ある作品が世界のどこでストリーミングされているかを知るには、対象とする各国に問い合わせて結果をつなぎ合わせる必要があります。JustWatch は120以上の国をカバーしています。
JustWatch のどんなデータを収集できますか?
公開されている視聴可否のメタデータです。検索結果(id、種別、タイトル、年、poster)、タイトル詳細・メディア・類似タイトル、国ごとの視聴可能なオファー、プロバイダー一覧、そしてプロバイダー・ジャンル・収益化タイプ・人気度による作品探索です。
JustWatch のスクレイピングは合法ですか?
公開されている視聴可否の事実の収集は一般的に比較的リスクの低い公開ウェブのスクレイピングですが、JustWatch の利用規約は自動アクセスを制限しており、非公式ライブラリは非商用であり、これを使ってプロバイダーのペイウォールや DRM を回避することは決してしてはいけません。あくまで公開されている視聴可否データのみです。法的助言ではありません。