Comment scraper les données du Google Play Store en Python

Deux voies : le paquet open source google-play-scraper pour les petites tâches, une API pour tout ce qui doit tourner chaque jour.

Voie 1 : une bibliothèque de scraping

Le paquet open source google-play-scraper récupère une page du Store et l'analyse :

pip install google-play-scraper

from google_play_scraper import app
d = app("com.whatsapp", lang="en", country="us")
print(d["title"], d["installs"], d["score"])

Parfait pour un notebook. En production, vous rencontrerez trois problèmes : les limites de débit (Google répond par des 429 et des captchas dès que vous envoyez beaucoup de requêtes depuis une IP), les changements de balisage (les parseurs cassent sans prévenir) et la mémoire (quand une app est retirée, la page disparaît, et ses données avec).

Voie 2 : interroger un index déjà scrapé

import os, requests

r = requests.get("https://apiplay.cc/api/v1/app",
                 params={"id": "com.whatsapp"},
                 headers={"X-API-Key": os.environ["API_KEY"]}, timeout=30)
app = r.json()["app"]
print(app["title"], app["installs"]["label"], app["rating"]["score"])

Les mêmes champs, sans proxy. Les apps retirées répondent toujours, avec status.removed renseigné.

Scraper une catégorie entière

Au lieu de parcourir les pages de catégorie, filtrez :

params = {"category": "GAME_PUZZLE", "min_installs": 100000, "per": 100, "page": 1}
r = requests.get("https://apiplay.cc/api/v1/search", params=params, headers=H).json()
for a in r["results"]:
    print(a["id"], a["installs"]["min"], a["rating"]["score"])

Bouclez sur page jusqu'à r["pages"]. Chaque page de 100 apps maximum coûte 2 crédits.

Lequel choisir