Cómo extraer datos de Google Play Store con Python

Dos caminos: el paquete de código abierto google-play-scraper para trabajos pequeños y una API para todo lo que deba ejecutarse a diario.

Camino 1: una biblioteca de scraping

El paquete de código abierto google-play-scraper descarga una página de la tienda y la analiza:

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"])

Es estupendo para un notebook. En producción te encontrarás con tres problemas: límites de peticiones (Google responde con 429 y captchas en cuanto envías muchas peticiones desde una IP), cambios de marcado (los parsers se rompen sin aviso) y memoria (cuando una app se retira, la página desaparece y sus datos con ella).

Camino 2: consultar un índice ya extraído

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"])

Los mismos campos, sin proxies. Las apps retiradas siguen respondiendo, con status.removed activado.

Extraer una categoría entera

En lugar de rastrear las páginas de categoría, filtra:

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"])

Recorre page hasta r["pages"]. Cada página de hasta 100 apps cuesta 2 créditos.

Cuál elegir