Tony Wang6 分で読めますApp Store と Google Play のレビューをスクレイピングする方法(2026年版・API と Python)
2026 年に App Store と Google Play のレビューと評価をスクレイピング — 自作 Python、ノーコード、または構造化 API で。法律とレート制限の基本もあわせて解説します。
2026 年に App Store と Google Play のレビューをスクレイピングする最速の方法は、Apple のレート制限された RSS フィードをループさせたり Google Play のアンチボット・スロットリングと戦ったりする代わりに、正規化された JSON(両ストアのレビュー・評価・アプリのメタデータ・カテゴリランキング)を返す構造化 API を呼び出すことです。自作のスクレイパーを作ることもできますが、どちらのストアもデータに厳しい上限をかけて手厚く防御しており、公式 API は自分が所有するアプリしかカバーしません。本ガイドでは 3 つのアプローチすべて、それぞれが何を返すか、どこで破綻するか、そして法律の基本を解説します。
なぜアプリのレビューをスクレイピングするのか
アプリのレビューと評価のデータは、プロダクトとマーケティングの作業カテゴリ全体を支えています。
- レビュー監視とサポート — バージョンや国をまたいでバグ・クラッシュ・苦情を検知します。
- アプリストア最適化(ASO) — 自社アプリと競合の評価・ランキング・キーワードの露出を追跡します。
- プロダクトフィードバックとセンチメント — 機能別・リリース別に、ユーザーが賞賛する点と嫌う点を定量化します。
- 市場調査 — 両ストアにわたってカテゴリのリーダー、インストール数の範囲、伸びているアプリを見つけます。
アプリのレビューをスクレイピングするのは合法か
選択肢 1: Python での自作(そしてなぜ破綻するか)
2 つのストアは仕組みが異なるため、自作のスクレイパーは実質的に 2 つのスクレイパーになります。Apple は文書化されていない RSS レビューフィードを公開しています。
import requests
# Apple's undocumented RSS reviews feed: 50 reviews/page, JSON
r = requests.get(
"https://itunes.apple.com/us/rss/customerreviews/page=1/id=389801252/sortby=mostrecent/json"
).json()
reviews = r["feed"].get("entry", [])
Google Play には公開のレビュー API がないため、自作は非公式の google-play-scraper に頼ることになります。
from google_play_scraper import reviews, Sort
result, token = reviews("com.shopify.mobile", lang="en", country="us",
sort=Sort.NEWEST, count=200) # 503s with a captcha under load
デモでは動きますが、その後こう破綻します。
- Apple の約 500 件・国ごとの上限。 RSS フィードは約 10 ページ(≈500 件)しか返さず、グローバルなエンドポイントを公開していません。しかもレビューは言語ではなく国に紐づいています。そのためアプリのレビュー全体を取得するには、App Store の 116 か国すべてをループして重複を排除する必要があります(同じレビューが複数の国に現れることがあります)。それでも合計はアプリページに表示される件数とは一致しません。
- Apple のレート制限は厳しい。 フィードを叩き続けるとレスポンスが遅くなり、やがてタイムアウトと 403 を返します。クリーンな residential IP でも数分から数時間ブロックされるため、プロキシのローテーションが必要です。
- Google Play のスロットリング。 非公式ライブラリは Google の内部エンドポイントをパースしてスロットリングに引っかかり、captcha 付きの 503 と約 1 時間の IP バン(プロキシなしで ≈500〜1,000 アプリ/IP/日)を招きます。しかもレビューはカーソルでページングされ、内部の RPC が変わると壊れます。
- 公式 API は自分のアプリ専用。 App Store Connect(JWT 署名)と Google Play Developer API(≈60 レビューリクエスト/時)は自分が所有するアプリしかカバーせず、競合や市場の調査には役に立ちません。
選択肢 2: ノーコードツール
ビジュアル抽出ツールやマーケットプレイスの「アプリレビュー」アクターは CSV/JSON をエクスポートし、単発の取得には向いていますが、フィールドが予測可能なプロダクト内のパイプラインでは扱いづらく、同じ上限とスロットリングで破綻します。
選択肢 3: 構造化 API(両ストア)
繰り返し行うワークフローには、構造化された App Store API と Google Play API が、動かすスクレイパーなしで正規化された JSON を返します。App Store のレビューを取得します。
curl "https://api.crawlora.net/api/v1/appstore/reviews?id=389801252&country=us&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"
Python で両ストアを扱う場合 — 各アプリの指定方法に注目してください。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
# Apple App Store — apps are addressed by numeric track id
ios = requests.get("https://api.crawlora.net/api/v1/appstore/reviews",
headers=h, params={"id": "389801252", "country": "us", "page": 1}).json()["data"]
# Google Play — apps are addressed by package name
android = requests.get("https://api.crawlora.net/api/v1/googleplay/reviews",
headers=h, params={"app_id": "com.shopify.mobile", "country": "us"}).json()["data"]
App Store のレビューは正規化された JSON で返ってきます(フィールドは説明用です。ドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": [
{ "id": "review-1", "title": "Helpful assistant", "score": 5, "author": "App Store User", "content": "Great for writing and research." }
]
}
Google Play のレビューはストア独自のフィールド名を使います(ドキュメント)。
{
"code": 200,
"msg": "OK",
"data": [
{ "id": "review-1", "user_name": "Play User", "score": 5, "content": "Very useful for daily work.", "thumbs_up_count": 42 }
]
}
レビューはその一部にすぎません。同じキーで評価・アプリのメタデータ・ランキング・検索にも届きます。
base = "https://api.crawlora.net/api/v1"
hist = requests.get(f"{base}/appstore/ratings", headers=h,
params={"id": "389801252", "country": "us"}).json()["data"] # star histogram
app = requests.get(f"{base}/appstore/app", headers=h,
params={"id": "389801252", "country": "us"}).json()["data"] # title, developer, score, version
top = requests.get(f"{base}/googleplay/list", headers=h,
params={"collection": "TOP_FREE", "category": "PRODUCTIVITY", "country": "us"}).json()["data"] # rankings
hits = requests.get(f"{base}/appstore/search", headers=h,
params={"term": "shopify", "country": "us"}).json()["data"] # find an app id by name
App Store のレビューは page でページングし sort でソートします。Google Play のレビューはカーソルでページングされ、返された next_pagination_token を paginate で渡します。ストアごとに country(と lang)を渡し、レビュー 1 件につき 1 行を保存し、スケジュールに沿って再取得することで、評価とセンチメントの推移を追跡できます。
収集できるもの
- App Store: アプリのメタデータ(title、developer、score、ratings count、version、url)、星評価のヒストグラム、レビュー(id、title、score、author、content)、検索、トップチャートのリスト、類似アプリ、バージョン履歴、プライバシーラベル。
- Google Play: アプリのメタデータ(title、description、installs)、レビュー(id、user_name、score、content、thumbs_up_count)、検索、トップチャートのリスト、類似アプリ、データセーフティ、権限。
すべてがストアと国でスコープされます。公開された事実に基づくフィールドにとどめてください。
制約とよくある課題
- 任意のアプリ向けの公開レビュー API は存在しない。 Apple の RSS フィードは 1 か国あたり約 500 件で頭打ちになり、グローバルなエンドポイントはありません。公式の App Store Connect と Google Play Developer API は自分が所有するアプリしかカバーしません。そのため公開アプリの調査はスクレイピングを意味し、構造化 API は 1 つのキーの背後でそれを処理します。
- レビューは国ごとの部分集合。 表示されるレビュー件数はどのフィードが返す件数とも一致せず、Apple はレビューを言語ではなく国に紐づけます。対象としたい国を収集して重複を排除してください。
- レート制限とバン。 直接スクレイピングすると Apple では 403、Google Play では captcha 付きの 503 と約 1 時間の IP バンを招きます。構造化 API はプロキシとスロットリングを吸収します。
- レビューと名前は個人データ。 author 名やユーザー名、レビュー本文は GDPR/CCPA のもとで個人データとして扱ってください。適法な根拠のもとで、公開された事実に基づくフィールドを収集します。
どこで使われるか
- レビューと評判の監視 — 両ストアにわたって評価とレビューのセンチメントを見張ります。レビューと評判の監視のユースケースを参照してください。
- アプリストア最適化(ASO) — 競合の評価・ランキング・バージョン更新のペースを追跡します。
- プロダクトフィードバック — レビューからの苦情や機能要望をバックログに振り分けます。
出典
収集を始める
まず無料で試す: 任意の公開 URL を Free Web Scraper で実行するか、Anti-Bot Checker でサイトがボットをブロックするかどうかを確認できます。サインアップは不要です。
レビューのエンドポイントを Playground でテストし、API ドキュメントでスキーマを確認し、料金を確認してください。フルカタログ — App Store と Google Play にまたがる 410 万件のアプリ — をモバイルアプリのデータセットで閲覧するか、アプリレビューのセンチメントデータセットでクロールを完全にスキップできます。トップアプリの、すでにスクレイピング済みの数百万件のレビューを API 経由でクエリできます。ウェブレビュー側についてはTrustpilot のレビューをスクレイピングする方法、ウェブスクレイピング API の選び方、ウェブスクレイピングは合法かも参照してください。
よくある質問
App Store と Google Play のレビューをブロックされずにスクレイピングできますか?
直接スクレイピングするとブロックを招きます。Apple の RSS レビューフィードは速くループしすぎると(residential IP でも)403 を返し、Google Play のスロットリングは captcha 付きの 503 と約 1 時間の IP バン(プロキシなしでおおよそ 500〜1,000 アプリ/IP/日)を返します。構造化 API は両ストアの公開レビューデータについて、1 つのキーの背後でプロキシとスロットリングを処理します。
アプリのレビューに公式 API はありますか?
自分が所有するアプリに限ります。Apple の App Store Connect API と Google の Play Developer API では自社アプリのレビューの読み取りと返信ができますが(Play のレビューエンドポイントは約 60 リクエスト/時)、どちらも任意の公開アプリのレビューは返しません。そのため競合や市場の調査はスクレイピングを意味します。
App Store のレビューはどれくらい取得できますか?
Apple の公開 RSS フィードは 1 か国あたりおよそ 500 件(50 件×約 10 ページ)で頭打ちになり、グローバルなエンドポイントはありません。しかもレビューは言語ではなく国に紐づいているため、全体を取得するには対象としたい App Store の国をループして重複を排除する必要があります。合計はアプリページに表示される件数とは一致しません。
各ストアでアプリをどう指定しますか?
App Store のアプリは数値の track id(apps.apple.com/.../id389801252 の id の後ろの数字)を使い、レビューは page でページングします。Google Play のアプリはパッケージ名(例: com.shopify.mobile)を使い、レビューは next_pagination_token でカーソルページングされます。どちらの id もアプリ名から検索エンドポイントで調べられます。
どんなアプリデータを収集できますか?
公開フィールドです。アプリのメタデータ(title、developer/installs、score、version)、App Store の評価ヒストグラム、レビュー(score、author/ユーザー名、content)、検索、トップチャートのリスト、類似アプリ、バージョン履歴、プライバシー/データセーフティのラベル — ストアと国でスコープされます。
アプリのレビューは個人データですか?
はい。レビュアー名やユーザー名、レビュー本文は GDPR/CCPA のもとで個人データです。適法な根拠のもとで公開された事実に基づくフィールドのみを収集し、レビュアーの身元を再公開しないでください。
どれくらいの頻度で更新できますか?
継続的にポーリングするのではなく、プランと責任ある利用の制限の範囲内で、スケジュールに沿って再取得し、評価とセンチメントの推移を追跡してください。