Review Mining

Como baixar avaliações do iOS App Store?

By Axel

Se você quer baixar avaliações da App Store, existem só dois cenários possíveis: você tem acesso ao app que quer analisar, ou não tem. 

Neste post, vamos mostrar soluções e estratégias para acessar avaliações da App Store nos dois casos, avaliando preço, tempo e escalabilidade de cada uma.

Mas antes de entrarmos nas soluções para exportar dados de avaliações da App Store, você precisa saber algumas coisas.

Como as avaliações do iOS funcionam de verdade

Se você já procurou avaliações na loja de apps, talvez não saiba que há dois objetos diferentes envolvidos:

  • Avaliações
  • Notas

Em uma plataforma como o Google Meu Negócio, há um único objeto: a avaliação. Ela pode ter conteúdo ou não.

No iOS, é um pouco diferente. 

Uma avaliação sem conteúdo vira uma nota. Já uma avaliação completa tem conteúdo e uma nota associada.

O problema é que, na maioria dos casos, as notas não estão disponíveis. Quem afirmar que te dá acesso a notas está mentindo ou inventando números a partir de dados agregados públicos.

Dá para fazer engenharia reversa usando as informações que a Apple disponibiliza publicamente nas páginas dos apps, como no exemplo abaixo 👇

Algumas APIs até vendem esses dados.

Na prática, é bastante confiável, e eu recomendo focar só nas avaliações. Elas costumam ser uma amostra representativa das notas, e são muito mais fáceis de usar e medir com precisão.

Uma palavra sobre países e idiomas

Você também já deve saber que cada app fica disponível em uma lista específica de países na App Store. 

Alguns apps ficam disponíveis em todos os países possíveis, enquanto outros aparecem só na Coreia, nos EUA, na França, ou em qualquer combinação dos 116 países disponíveis na loja.

Há algumas pegadinhas relacionadas à geolocalização na App Store. A principal delas: avaliações são associadas a um país, mas não a um idioma.

Não encontrei um endpoint "global" e suspeito que ele simplesmente não exista. 

Isso significa que você precisa buscar avaliações país por país para ter o conjunto completo. Você também pode optar por buscar só alguns países, mas corre o risco de deixar avaliações de fora. 

A App Store tem 116 países. 

Aqui vai a lista.

Você pode baixar em CSV aqui.

Como encontrar o ID de um app

Quase todas as soluções listadas abaixo exigem o ID do app para acessar as avaliações certas, incluindo a própria API App Store Connect. 

#1 Encontrando o ID do app no painel do App Store Connect

Se você tem acesso ao painel do App Store Connect, tudo certo.

É simples: faça login no console, selecione o app certo e encontre o Apple ID.

#2 Encontrando o ID do app na App Store pública

O ID também aparece nas URLs públicas das páginas geradas pela App Store. Basta acessar a App Store, procurar seu app e extrair o ID da URL.

Por exemplo, para o Instagram a URL é essa: https://apps.apple.com/us/app/instagram/id389801252, e o ID é a parte depois de "id": 389801252.

Pessoalmente, não gosto da busca deles, então costumo pesquisar no Google mesmo, com um filtro de site simples.

A busca por instagram seria: site:apps.apple.com instagram.

#3 Encontrando o ID de qualquer app de forma programática

Se você espera precisar de muitos IDs de apps, dá para usar a busca do iTunes da Apple via código. Está tudo documentado publicamente pela Apple aqui.

Para buscar, use o seguinte:

GET `https://itunes.apple.com/search?&media=software&entity=${entity}&term=${query}&country=${country.country_code}&limit=3

Se você está buscando apps móveis, o valor de entity é "software".

A query é o termo de busca, no formato URL encoded.

E o código do país é um ISO 3166-1 de 2 letras. Por algum motivo, não é o mesmo padrão usado pela API App Store Connect, que usa códigos de 3 letras.

Curiosidade: nesse endpoint, os IDs de app são chamados de "trackIDs", herança do antigo iTunes.

#1 Usando a API App Store Connect da Apple

Isso só funciona se você tem acesso à API App Store Connect e se o app do qual quer baixar avaliações é um app seu.

Se não for o caso, pode pular esse primeiro método.

Usar sua própria API traz basicamente três vantagens:

  • Você consegue publicar respostas às avaliações pela mesma conexão de API
  • Você tem esquemas de dados consistentes e confiáveis ao longo do tempo, o que importa se você planeja monitorar avaliações com polling regular, por exemplo.
  • Você acessa avaliações de todas as regiões em uma única chamada de API. Já vamos chegar lá, mas isso não dá pra fazer com as outras soluções.

O problema é que isso exige conhecimento técnico. 

Para autenticar na API App Store Connect da Apple, você precisa assinar JSON Web Tokens (JWTs). Isso está bem documentado aqui, e se você já tem experiência com JWTs, é bem tranquilo. 

Mas se você é da área de marketing, sem background técnico, e só quer baixar a lista das suas avaliações, pode ser bem mais fácil usar uma solução de terceiros.

#2 Usando a API não documentada da Apple

Chamar de "não documentada" já é meio exagero, porque essa URL está espalhada pela internet inteira. Se você quer dados de baixo nível e não tem medo de configurar alguns proxies, dá pra fazer isso sozinho sem muita dificuldade.

A principal desvantagem é que você precisa checar avaliações em cada um dos 116 países da loja, o que pode demorar. Aqui está de novo a lista de países com seus códigos, para consulta.

Para fazer scraping das avaliações da App Store, use este endpoint: `https://itunes.apple.com/{countryCode}/rss/customerreviews/page={page}/sortBy={sort}/id={app_id}/json`

Ele retorna até 50 avaliações por vez, em JSON. Bem simples mesmo.

Há 4 parâmetros para personalizar sua query:

  • countryCode: veja a lista completa de países acima.
  • page: você precisa implementar a paginação se quiser todas as avaliações disponíveis. Cada página traz 50 avaliações.
  • sortBy: a ordem de classificação que você quer. Provavelmente aceita outros valores, mas mostRecent funciona bem, então por que usar outra coisa?
  • app_id: você pega o ID do app na página do app no navegador. Por exemplo, o ID do app do Shopify é 324684580.

Pronto.

Você recebe um JSON bem carregado, com 50 avaliações, informações de paginação dentro do objeto "link" e mais alguns dados.

Só falta jogar essa saída no seu parser de JSON favorito e escrever um wrapper.

Pegadinhas para ficar de olho

Se você começar a bater no endpoint sem nenhum throttling, as respostas vão ficando cada vez mais lentas, até chegar em timeouts ou erros 403.

Aí você fica tentando descobrir onde deu errado para retomar do ponto certo. Nada divertido.

Com um pouco de throttling, as respostas continuam rápidas, e no fim das contas o processo todo é bem mais rápido. É o clássico caso de se colocar no lugar de quem você está raspando.

Use demais o mesmo IP (mesmo IPs residenciais limpos, se estiver rodando isso localmente) e você vai levar 403 por alguns minutos ou horas. Para lidar com volumes grandes de avaliações, você vai precisar de algum esquema de rotação de proxy ou de um serviço pronto. Proxies de servidor funcionam bem; no fundo é só a Apple se protegendo de scraping agressivo.

A forma mais fácil de contornar isso é usar APIs de scraping como a Scrapingbee, mas isso pode sair caro.

Bibliotecas e pacotes

Há algumas bibliotecas que economizam seu tempo aqui.

Esta biblioteca em Python usa exatamente esse endpoint e cuida da paginação para você. Esta biblioteca em Node adapta a versão Python e ainda traz alguns extras, como o histograma de notas (que é... pouco confiável, na melhor das hipóteses).

#3 Usando as exportações de avaliações do Reviewflowz

Se você não consegue ou não quer escrever um script que percorra os 116 países, gerencie a rotação de proxies, transforme o JSON da Apple em algo mais prático, remova avaliações duplicadas na hora (a mesma avaliação pode aparecer em vários países), detecte idioma etc., nós cuidamos disso pra você.

Nossas exportações Pay As You Go deixam você baixar avaliações de qualquer app, em qualquer país, em segundos.

Procure o app, selecione o que você quer e exporte.

Você pode baixar uma amostra de 25 linhas para conferir como fica o arquivo e se tem tudo que você precisa, e depois comprar a exportação completa por $0.10 por linha.

Se você tem volume alto ou requisitos específicos, entre em contato com nosso time. Na maioria das vezes conseguimos ajudar, ou indicamos alguém que talvez consiga.

Ready to get more reviews?

Set up in under five minutes. No demo required.