Como extrair dados da Google Play Store com Python

Dois caminhos: o pacote de código aberto google-play-scraper para tarefas pequenas e uma API para tudo que precise rodar todo dia.

Caminho 1: uma biblioteca de scraping

O pacote de código aberto google-play-scraper baixa uma página da loja e a analisa:

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

É ótimo para um notebook. Em produção você vai encontrar três problemas: limites de requisição (o Google responde com 429 e captchas quando você envia muitas requisições de um IP), mudanças de marcação (os parsers quebram sem aviso) e memória (quando um app é removido, a página some e os dados também).

Caminho 2: consultar um índice já 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"])

Os mesmos campos, sem proxies. Apps removidos continuam respondendo, com status.removed marcado.

Extraindo uma categoria inteira

Em vez de rastrear as páginas de categoria, filtre:

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

Percorra page até r["pages"]. Cada página de até 100 apps custa 2 créditos.

Qual escolher