App Store & Google Play Review Intelligence

Pesquise aplicativos na App Store e no Google Play, obtenha avaliações recentes, destaque as principais reclamações com citações, classificação por versão, o que piorou na última atualização e comparações lado a lado com concorrentes. Sem chaves de API das lojas; MIT, roda localmente ou hospedado.

Servidor MCP hospedado

npx add-mcp 'https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

Servidor MCP de Inteligência de Avaliações da App Store e Google Play

Pergunte ao seu agente de IA o que os usuários odeiam em qualquer app iOS ou Android e o que quebrou na última atualização. Este servidor MCP pesquisa a Apple App Store e o Google Play, coleta avaliações recentes de qualquer app (seu ou de um concorrente) e retorna análises que seu agente pode usar diretamente: principais reclamações com citações, avaliação por versão, o que piorou na versão mais recente e comparações lado a lado com concorrentes. Sem chaves de API, sem necessidade de acesso ao App Store Connect ou Play Console.

Hospedado (sem configuração): apify.com/parallelstudio/app-store-review-intelligence-mcp. Conecte qualquer cliente MCP a https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp com seu token Apify e pague por chamada. Você também pode executar este código open-source localmente via stdio: npm install && npm run build && npx app-review-intel-mcp.

Agora com Google Play: todas as ferramentas funcionam tanto na Apple App Store quanto no Google Play, incluindo comparações iOS vs Android.

Funciona com Claude Desktop, Claude Code, Cursor, VS Code, Windsurf e qualquer cliente que suporte MCP via Streamable HTTP.

O que você pode perguntar

  • "O que quebrou na última atualização do Instagram?" review_insights compara a versão mais recente com a anterior: mudança de avaliação, mudança na proporção de avaliações negativas e as reclamações que mais aumentaram, com citações.
  • "Top 10 reclamações sobre o Duolingo no Android vs iOS." Mesma ferramenta, em qualquer loja. A loja é inferida pelo id do app.
  • "Compare Notion, Obsidian e Evernote. Quem tem os usuários mais insatisfeitos e por quê?" compare_apps retorna uma tabela com os líderes por métrica. Você pode misturar ids da Apple e do Google Play.
  • "Encontre os melhores apps de meditação no Google Play." search_apps retorna ids, avaliações, instalações e preços.
  • "Mostre as avaliações mais recentes mencionando crashes." get_app_reviews retorna o texto bruto das avaliações para sua própria análise.

Ferramentas

FerramentaUse quandoRetornaCobrança
search_appsVocê tem um nome de app ou uma categoria e precisa do idid (id numérico da Apple ou nome do pacote no Play), nome, desenvolvedor, avaliação, número de avaliações, preço, gênero, versão, URL; instalações no Google Playpor chamada
review_insightsComece aqui para qualquer pergunta do tipo "por que os usuários estão insatisfeitos / o que mudou / resuma o feedback"distribuição de avaliações, avaliação por versão, principais frases de reclamação (proporção de avaliações de 1–2★ + citação), versionDeltas (versão mais recente vs anterior: mudança de avaliação, reclamações em alta com citações), citações de exemplovalor fixo por chamada
get_app_reviewsVocê precisa do texto real das avaliaçõesavaliações com nota, título (Apple), corpo, versão, data, votos úteis; respostas do desenvolvedor no Google Playpor avaliação retornada
compare_appsBenchmark de concorrentes com 2–10 apps (Apple e Google podem ser misturados)avaliação e contagem da loja, instalações, preço, versão, média recente, % negativas/positivas, média da versão mais recente, top 5 reclamações, líderesvalor fixo por chamada

Parâmetros. app_id aceita um id da Apple (284882215, id284882215 ou uma URL apps.apple.com) ou um nome de pacote do Google Play (com.instagram.android ou uma URL play.google.com). store (apple | google) é opcional porque é inferido pelo id. No search_apps, o padrão é apple. country é um código de loja de 2 letras (us, gb, de…). pages é de 1 a 10, cerca de 50 avaliações cada. lang (somente Google Play, padrão en) seleciona o idioma das avaliações. review_insights também aceita countries (agrupe até 10 lojas), since_version (escolha a versão para comparar), keyword_limit e quotes.

Todas as ferramentas são somente leitura. Erros retornam como erros de ferramenta MCP (isError: true), prefixados com invalid_input, upstream_error ou internal_error.

Exemplo de saída

review_insights { "app_id": "389801252", "countries": ["us", "gb"] } (Instagram para iOS, chamada real, outubro de 2026, resumido):

{
  "sample": { "reviews": 300, "negativeReviews": 188, "byCountry": { "us": 150, "gb": 150 } },
  "ratingDistribution": { "average": 2.42, "total": 300 },
  "storeRating": { "averageRating": 4.69, "ratingCount": 29583259 },
  "versionDeltas": {
    "basis": "version",
    "latest":   { "label": "450.1.0", "reviews": 210, "averageRating": 2.17, "negativeShare": 0.695 },
    "previous": { "label": "previous versions 448.0.0–450.0.0", "reviews": 90, "averageRating": 3.0, "negativeShare": 0.467 },
    "change": { "averageRating": -0.83, "negativeShare": 0.228 },
    "whatGotWorse": [
      { "phrase": "ipad", "status": "new", "latestShare": 0.24, "previousShare": 0, "change": 0.24,
        "examples": [{ "rating": 1, "text": "iPad Update Ruined Reels. Tiny, unchangeable aspect ratio that hovers over the search page?…" }] },
      { "phrase": "reels", "status": "increased", "latestShare": 0.281, "previousShare": 0.095, "change": 0.186 },
      { "phrase": "full screen", "status": "new", "latestShare": 0.11, "previousShare": 0, "change": 0.11,
        "examples": [{ "rating": 1, "text": "Broken UI in latest update. Can no longer see full screen reels in iPad. They now crop reels to square format…" }] }
    ],
    "confidence": "high",
    "summary": "Version 450.1.0 (210 reviews) average 2.17★ vs 3.00★ for previous versions 448.0.0–450.0.0 (90 reviews), −0.83; negative share 69.5% vs 46.7% (+22.8 pp). Rising complaints: \"ipad\" (new, 24% of negative reviews), …"
  },
  "complaintKeywords": [
    { "phrase": "reels", "reviews": 45, "share": 0.239, "example": "…" },
    { "phrase": "ipad", "reviews": 35, "share": 0.186, "example": "…" },
    { "phrase": "account", "reviews": 34, "share": 0.181, "example": "…" },
    { "phrase": "full screen", "reviews": 16, "share": 0.085, "example": "…" }
  ]
}

search_apps { "term": "meditation", "store": "google", "limit": 3 }:

idnomedesenvolvedoravaliaçãoinstalações
com.spotlightsix.zentimerlite2Insight Timer - Meditation AppInsight Network Inc4.7010.000.000+
meditofoundation.meditoMedito: Meditation & SleepMedito for Mindfulness, Meditation and Sleep4.791.000.000+
com.getsomeheadspace.androidHeadspace: Sleep & MeditationHeadspace for Meditation, Mindfulness and Sleep4.2610.000.000+

compare_apps { "app_ids": ["324684580", "com.spotify.music"], "pages": 1 } compara o Spotify no iOS e no Android. Ele reporta uma avaliação de loja de 4,77 vs 4,35, uma média recente de 4,18 vs 3,90 e 16% vs 28% de avaliações negativas. Principais reclamações no Android: premium, música, anúncios.

Veja demo/transcript.md para respostas completas e sem cortes de todas as ferramentas.

Receitas passo a passo (verificação de lançamento, análise de concorrente, iOS vs Android, um acompanhamento semanal no Claude Code) com resultados reais e custo por fluxo de trabalho: docs/workflows.md.

Preços

Pague por evento: você paga apenas por chamadas bem-sucedidas. Chamadas que falham na validação ou não conseguem acessar a loja não são cobradas. Os preços atuais estão na aba Preços do Actor.

EventoPreçoCobrado por
search-apps$0,002cada chamada de search_apps da App Store
review$0,001cada avaliação da App Store retornada por get_app_reviews (50 avaliações = 50 eventos; 0 = grátis)
review-insights$0,03cada chamada de review_insights da App Store, valor fixo. Avaliações analisadas internamente não são cobradas como eventos de review
compare-apps$0,05cada chamada de compare_apps com apenas apps da App Store, valor fixo independentemente de quantos apps ou avaliações

Chamadas do Google Play são cobradas como eventos separados pelos mesmos preços: play-search $0,002 por pesquisa, play-review $0,001 por avaliação, play-review-insights $0,03 por chamada, play-compare-apps $0,05 por comparação que inclua qualquer app do Google Play.

Dica: review_insights e compare_apps custam o mesmo independentemente de quantas avaliações analisam. Para agregados, são muito mais baratas do que puxar centenas de avaliações brutas.

Conecte seu cliente MCP

Endpoint (Streamable HTTP):

https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp

Autentique com seu token de API Apify enviando-o como Authorization: Bearer <APIFY_TOKEN>.

Claude Desktop, Cursor, Windsurf (configuração JSON)

{
  "mcpServers": {
    "app-store-reviews": {
      "type": "http",
      "url": "https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp",
      "headers": {
        "Authorization": "Bearer <APIFY_TOKEN>"
      }
    }
  }
}

Se seu cliente só suporta servidores stdio, faça a ponte com mcp-remote:

{
  "mcpServers": {
    "app-store-reviews": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp",
        "--header", "Authorization: Bearer ${APIFY_TOKEN}"
      ],
      "env": { "APIFY_TOKEN": "<APIFY_TOKEN>" }
    }
  }
}

Claude Code

claude mcp add --transport http app-store-reviews \
  https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp \
  --header "Authorization: Bearer $APIFY_TOKEN"

VS Code (.vscode/mcp.json)

{
  "servers": {
    "app-store-reviews": {
      "type": "http",
      "url": "https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp",
      "headers": { "Authorization": "Bearer ${input:apifyToken}" }
    }
  },
  "inputs": [{ "id": "apifyToken", "type": "promptString", "description": "Apify API token", "password": true }]
}

Exemplos de prompts

Quatro fluxos de trabalho prontos, com o prompt, chamadas de ferramentas e resultados reais em docs/workflows.md:

Fluxo de trabalhoFerramentasCusto no servidor hospedado
Verificação de lançamento: nossa última atualização piorou as coisas?review_insights$0,03
Análise de concorrente antes de uma reunião de roadmap ou preçossearch_apps, compare_apps$0,052
iOS vs Android: qual plataforma está mais insatisfeita?compare_apps$0,05
Acompanhamento semanal de avaliações no Claude Code (cron + claude -p)review_insights$0,06 por semana
  • "Encontre o id do app Duolingo e resuma o que os usuários reclamaram nas últimas 300 avaliações dos EUA."
  • "A última versão iOS do Instagram piorou as coisas? Use us, gb e ca."
  • "Compare o Spotify no iOS e no Android: qual plataforma tem usuários mais insatisfeitos e sobre o quê?"
  • "Compare Spotify, Apple Music e YouTube Music nas avaliações recentes e me diga a maior reclamação de cada um."

Como as palavras-chave de reclamação e "o que piorou" são calculadas

O método é transparente e determinístico. Não usa LLM nem modelo de caixa-preta:

  1. Tokenize cada avaliação de 1–2★. Apóstrofos curvos e retos são tratados da mesma forma.
  2. Construa frases de 1, 2 e 3 palavras feitas apenas de palavras de conteúdo. Stopwords, palavras de preenchimento ("never", "just", "still", "really", "keep"…), texto padrão de avaliação ("app", "update", "star"…), números e o próprio nome do app e do desenvolvedor são excluídos. Plurais e possessivos são mesclados (account/accounts).
  3. Classifique as frases por quantas avaliações as mencionam, para que uma reclamação longa não domine. Frases com múltiplas palavras recebem um pequeno bônus.
  4. Remova frases redundantes. Uma palavra desaparece quando uma frase mais longa cobre a maioria de suas menções (screen → full screen), e frases quase duplicadas são mescladas.
  5. Deltas de versão: divida a amostra entre a versão mais recente do app e a(s) versão(ões) imediatamente anterior(es), ou use since_version. Compare a avaliação média e a proporção de negativas, depois classifique as frases por quanto sua proporção de avaliações negativas aumentou. Se a amostra contém apenas uma versão, use como fallback os últimos 3 dias (ou 24 horas) vs o período anterior. Se isso também não for possível, informe e sugira mais pages ou countries. Um nível de confidence reflete quantas avaliações negativas cada lado tem.

Limitações

  • Avaliações recentes, não todo o histórico. Até 500 avaliações por app, loja e chamada (o feed da Apple serve 10 páginas de 50; o mesmo limite se aplica ao Google Play). Os insights descrevem avaliações escritas recentes. A avaliação e a contagem gerais da loja são reportadas separadamente.
  • Apps movimentados cobrem apenas alguns dias. Para apps como Instagram, 150 avaliações podem abranger um único dia e uma única versão. versionDeltas então explica isso e sugere mais pages ou countries.
  • Endpoints não oficiais. As APIs iTunes Search/Lookup e o feed RSS da Apple, e os endpoints web públicos do Google Play, não têm chave, mas não são documentados para esse uso. Eles podem mudar ou limitar a taxa de requisições. O servidor tenta novamente com backoff, armazena respostas em cache por 5 minutos e retorna resultados parciais com warnings quando uma página ou loja falha.
  • Especificidades do Google Play. Avaliações não têm título, e a filtragem é por lang (padrão en) mais do que por país. As lojas se sobrepõem, então review_insights remove duplicatas de avaliações entre países. Muitos apps reportam "varies with device" em vez de um número de versão. O tamanho do app não está disponível.
  • Especificidades da Apple. O feed não tem respostas do desenvolvedor nem avaliações apenas com nota (sem texto escrito).
  • Palavras-chave centradas em inglês. Avaliações em qualquer idioma são retornadas e contadas, mas a lista de stopwords é principalmente em inglês, com espanhol, francês e alemão básicos.

FAQ

Preciso de uma conta de desenvolvedor Apple, acesso ao Play Console ou uma chave de API? Não. Todos os dados vêm de endpoints públicos da App Store e do Google Play. Você só precisa de uma conta e token Apify para chamar este servidor hospedado.

Posso analisar apps que não possuo? Sim. Qualquer app listado na App Store ou no Google Play funciona, incluindo apps de concorrentes.

Como analiso a versão Android de um app? Use o nome do pacote do Google Play (com.spotify.music) ou a URL do Play como app_id, ou chame search_apps com store: "google" para encontrá-lo.

Por que a média da amostra é tão diferente da avaliação da loja? A avaliação da loja cobre todas as avaliações que o app já teve, incluindo os muitos toques silenciosos de 5★. A amostra cobre apenas as avaliações escritas mais recentes, e pessoas que escrevem avaliações costumam estar mais insatisfeitas. A diferença é útil: uma queda acentuada na média recente geralmente aponta para um problema em um lançamento recente.

Quantas avaliações o review_insights analisa? pages × 50 por loja, até 500 por país. Com pages: 10 e 10 países, são até 5.000 avaliações em uma única chamada, cobrada como um único evento.

Quais países são suportados? Qualquer loja, pelo código de 2 letras. As avaliações da App Store são separadas por loja, então passe vários países para review_insights para uma cobertura mais ampla. No Google Play, use lang para obter avaliações em outros idiomas.

Algum dado é armazenado? Não. O servidor não tem estado. Ele mantém apenas um cache curto de respostas em memória e não grava nada em datasets ou key-value stores.

Posso hospedar eu mesmo? Sim. Execute npm install && npm run build, depois node dist/index.js para stdio ou node dist/index.js --http para Streamable HTTP em http://127.0.0.1:3000/mcp. Na hospedagem própria, a cobrança fica desativada a menos que você defina BILLING=apify.

Self-hosting e desenvolvimento

npm install
npm run build
npm start              # MCP over stdio
npm run start:http     # Streamable HTTP at http://127.0.0.1:3000/mcp (GET / and /health = health check)
npm test               # build + unit checks + end-to-end smoke test against live Apple and Google Play endpoints
variável de ambientepadrãofinalidade
PORT / HOST3000 / 127.0.0.1bind HTTP (--http); também --port, --host
HTTP_TIMEOUT_MS15000timeout por requisição para Apple / Google Play
HTTP_MAX_RETRIES2tentativas em erros 408/425/429/5xx/erros de rede
CACHE_TTL_MS300000TTL do cache em memória (0 desativa)
BILLING(não definido); apify na imagem Dockerapify ativa Actor.charge() cobrança por evento
GOOGLE_PLAY_ENABLEDativadofalse oculta o Google Play dos esquemas de ferramentas e rejeita IDs do Google Play com um erro "em breve"

No Apify (modo Standby). Quando APIFY_IS_AT_HOME está definido, o servidor chama Actor.init(), força o modo HTTP e escuta em 0.0.0.0:$ACTOR_WEB_SERVER_PORT, com fallback para ACTOR_STANDBY_PORT e depois PORT. GET / responde à sonda de prontidão do Standby e o MCP é servido em /mcp. O servidor HTTP não tem autenticação própria: no Apify, a plataforma autentica as requisições com seu token de API. Se você fizer self-hosting além do localhost, coloque-o atrás de um proxy de autenticação.

.actor/        actor.json, input_schema.json (empty), output_schema.json (MCP endpoint)
Dockerfile     apify/actor-node:20, multi-stage TypeScript build, BILLING=apify
src/
  index.ts     entry: stdio or stateless Streamable HTTP; Apify Standby wiring
  server.ts    MCP tool registrations (zod schemas, error mapping, billing)
  http.ts      shared HTTP client: timeout, retry, cache
  itunes.ts    Apple API client: search, lookup, review feed parsing
  googleplay.ts Google Play client: search, app details, reviews (batchexecute)
  insights.ts  distribution, by-version stats, n-gram keywords, version deltas, quotes
  billing.ts   chargeEvent() → Actor.charge() when BILLING=apify
  util.ts      errors, cache, concurrency limiter, input normalization
test/smoke.mjs unit checks + end-to-end test via the MCP SDK client (stdio + HTTP)

Licença

MIT