Google Playのアプリページには、タイトル、評価、ジャンル、運営会社、インストール規模など、分析の土台になる公開情報があります。この記事では、Pythonライブラリgoogle-play-scraperのapp()を使い、1つのApp IDからアプリ基本情報を取得してCSVへ保存するまでを順番に確認します。
想定読者
- App IDからアプリ情報を取得したい方
- 評価・ジャンル・運営会社をPythonで扱いたい方
- 取得結果をCSVへ保存したい方
google-play-scraperとapp()の位置づけ
google-play-scraperは、Google Playの公開ストア情報を取得するための外部Pythonライブラリです。Googleが提供する公式APIではありません。この記事で使うapp()は、App IDを指定して1つのアプリの詳細情報をdictで返します。
レビュー本文を取得するreviews()や、検索語から候補を探すsearch()とは役割が異なります。まずアプリの基本情報を取得したいときに使う関数です。
この記事のゴール
- App IDと取得条件を決める
app()で公開ストア情報を取得する- 必要な項目だけをCSVへ保存する
App ID(Package name)を確認する
App IDは、Androidアプリを識別する文字列です。Google PlayのURLでは、id=の後ろに表示されます。
https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongoこの例のApp IDはcom.nianticlabs.pokemongoです。取得処理では、画面上のアプリ名ではなく、このApp IDを指定します。
ライブラリを準備する
作業用の仮想環境を有効にしてから、google-play-scraperとCSV整理用のpandasをインストールします。
python -m pip install -U google-play-scraper pandas動作確認に使ったバージョンを残しておくと、将来ライブラリの挙動が変わったときに比較しやすくなります。
python -m pip show google-play-scraperapp()でアプリ情報を取得する
次の順序で少量の取得から始めます。
- App IDを1つ決める
langとcountryを指定する- 返却されたdictのキーと値を確認する
基本コード
from google_play_scraper import app
app_id = "com.nianticlabs.pokemongo"
result = app(
app_id,
lang="ja",
country="jp",
)
print(result["title"])
print(result["score"])
print(result["genre"])
print(result["url"])現行ソースの基本シグネチャはapp(app_id, lang="en", country="us")です。langは表示言語、countryはストアの国・地域を指定します。同じApp IDでも、タイトル、価格、通貨、説明などが条件によって変わる場合があります。
dict全体を確認する
最初から特定のキーだけを前提にせず、利用中のバージョンで返るキーを確認します。
print(type(result))
print(sorted(result.keys()))主な取得項目を確認する
| キー | 内容 | 確認ポイント |
|---|---|---|
appId | App ID | データ結合用の主キーとして保存 |
title | アプリ名 | 言語・国によって表示が変わる場合がある |
score / ratings / reviews | 評価と件数 | 取得時点のストア表示値 |
installs / minInstalls / realInstalls | インストール規模 | フィールドの意味を区別して扱う |
developer / developerId | 運営会社 | 名称とIDを別々に保存 |
genre / genreId | ジャンル | 表示名と識別子を確認 |
price / free / currency | 価格 | 国・地域による違いに注意 |
released / updated / version | 公開・更新情報 | 欠損する可能性を考慮 |
url | 取得元URL | 確認・監査用に保存 |
フィールドはGoogle Play側の表示やライブラリのバージョンに依存します。常に存在すると決めつけず、dict.get()で欠損を許容すると安全です。
pandasで必要列を整理してCSV保存する
ストア値だけでなく、取得日時、App ID、言語、国を同じ行に保存します。これにより、あとで値が変わったときに取得条件を追跡できます。
from datetime import datetime, timezone
import pandas as pd
from google_play_scraper import app
app_id = "com.nianticlabs.pokemongo"
lang = "ja"
country = "jp"
result = app(app_id, lang=lang, country=country)
row = {
"fetched_at_utc": datetime.now(timezone.utc).isoformat(),
"app_id": app_id,
"lang": lang,
"country": country,
"title": result.get("title"),
"developer": result.get("developer"),
"developer_id": result.get("developerId"),
"genre": result.get("genre"),
"genre_id": result.get("genreId"),
"score": result.get("score"),
"ratings": result.get("ratings"),
"reviews": result.get("reviews"),
"installs": result.get("installs"),
"min_installs": result.get("minInstalls"),
"real_installs": result.get("realInstalls"),
"price": result.get("price"),
"free": result.get("free"),
"currency": result.get("currency"),
"released": result.get("released"),
"updated": result.get("updated"),
"version": result.get("version"),
"url": result.get("url"),
}
df = pd.DataFrame([row])
df.to_csv(
"google_play_app_details.csv",
index=False,
encoding="utf-8-sig",
)
print(df.T)複数のApp IDを取得する場合も、まず1件でキーと型を確認してから件数を増やします。途中結果を追記保存する設計にすると、失敗時の再実行範囲を小さくできます。
取得に失敗したときの確認
- App IDに余分な空白やURL全体が入っていないか
- 対象アプリが指定した国・地域で公開されているか
langとcountryが想定どおりか- 少数の既知App IDでも同じエラーが出るか
- ライブラリのバージョンとRepositoryのIssueを確認したか
存在しないApp IDや公開範囲外のアプリではNotFoundErrorなどが発生します。大量処理では1件の失敗で全体を止めず、App ID、取得条件、エラー内容を別ログへ残してください。
利用上の注意
google-play-scraperはGoogle公式APIではありません。- Google Play側の表示や内部仕様の変更により、取得項目や動作が変わる可能性があります。
- ストア値は時間とともに変化するため、App IDだけでなく取得日時・言語・国も保存します。
- 多数のApp IDを処理する前に、少量でレスポンス構造と保存形式を確認します。
- 利用規約、対象アプリの公開範囲、必要最小限のリクエストを確認して利用してください。
次に読む記事
基本情報を取得できたら、レビュー取得や検索結果の集計へ進めます。