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
- Análise pontual de algumas centenas de apps: a biblioteca basta.
- Uma tarefa diária, milhares de apps ou histórico de apps removidos: use a API.