App Store & Google Play Review Intelligence

Busca aplicaciones en App Store y Google Play, obtén reseñas recientes, destaca las principales quejas con citas, calificación por versión, qué empeoró en la última actualización y comparaciones lado a lado con competidores. Sin claves de API de tiendas; MIT, se ejecuta localmente o alojado.

Servidor MCP alojado

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

Se instala en Claude Code, Codex, Cursor y más

Documentación

Servidor MCP de Inteligencia de Reseñas de App Store y Google Play

Pregúntale a tu agente de IA qué es lo que los usuarios odian de cualquier app de iOS o Android, y qué se rompió en la última actualización. Este servidor MCP busca en la App Store de Apple y en Google Play, obtiene reseñas recientes de cualquier app (la tuya o la de un competidor) y devuelve análisis que tu agente puede usar directamente: principales quejas con citas, calificación por versión, qué empeoró en la última versión y comparativas lado a lado con competidores. Sin claves API, sin necesidad de acceso a App Store Connect ni a Play Console.

Alojado (sin configuración): apify.com/parallelstudio/app-store-review-intelligence-mcp. Conecta cualquier cliente MCP a https://parallelstudio--app-store-review-intelligence-mcp.apify.actor/mcp con tu token de Apify y paga por llamada. También puedes ejecutar este código de código abierto localmente a través de stdio: npm install && npm run build && npx app-review-intel-mcp.

Ahora con Google Play: cada herramienta funciona tanto en la App Store de Apple como en Google Play, incluidas comparaciones entre iOS y Android.

Funciona con Claude Desktop, Claude Code, Cursor, VS Code, Windsurf y cualquier cliente que admita MCP a través de Streamable HTTP.

Lo que puedes preguntar

  • "¿Qué se rompió en la última actualización de Instagram?" review_insights compara la versión más reciente con la anterior: cambio de calificación, cambio en la proporción de reseñas negativas y las quejas que más aumentaron, con citas.
  • "Las 10 principales quejas sobre Duolingo en Android vs iOS." Misma herramienta, cualquier tienda. La tienda se deduce del id de la app.
  • "Compara Notion, Obsidian y Evernote. ¿Quién tiene a los usuarios más insatisfechos y por qué?" compare_apps ofrece una tabla con los líderes por métrica. Puedes mezclar ids de Apple y Google Play.
  • "Encuentra las mejores apps de meditación en Google Play." search_apps devuelve ids, calificaciones, instalaciones y precios.
  • "Muéstrame las reseñas más recientes que mencionen fallos." get_app_reviews devuelve el texto crudo de las reseñas para tu propio análisis.

Herramientas

HerramientaÚsala cuandoDevuelveFacturación
search_appsTienes un nombre de app o una categoría y necesitas su idid (id numérico de Apple o nombre de paquete de Play), nombre, desarrollador, calificación, número de calificaciones, precio, género, versión, URL; instalaciones en Google Playpor llamada
review_insightsEmpieza aquí para cualquier pregunta de "por qué los usuarios están insatisfechos / qué cambió / resume comentarios"distribución de calificaciones, calificación por versión, frases de queja principales (proporción de reseñas de 1–2★ + cita), versionDeltas (última vs versión anterior: cambio de calificación, quejas en aumento con citas), citas de muestratarifa plana por llamada
get_app_reviewsNecesitas el texto real de las reseñasreseñas con calificación, título (Apple), cuerpo, versión, fecha, votos útiles; respuestas del desarrollador en Google Playpor reseña devuelta
compare_appsComparativa de competidores de 2–10 apps (se pueden mezclar Apple y Google)calificación y recuento de la tienda, instalaciones, precio, versión, promedio reciente, % negativo/positivo, promedio de la última versión, 5 principales quejas, líderestarifa plana por llamada

Parámetros. app_id acepta un id de Apple (284882215, id284882215 o una URL de apps.apple.com) o un nombre de paquete de Google Play (com.instagram.android o una URL de play.google.com). store (apple | google) es opcional porque se deduce del id. En search_apps el valor predeterminado es apple. country es un código de tienda de 2 letras (us, gb, de…). pages es de 1 a 10, aproximadamente 50 reseñas cada uno. lang (solo Google Play, predeterminado en) selecciona el idioma de las reseñas. review_insights también acepta countries (agrupa hasta 10 tiendas), since_version (elige la versión a comparar), keyword_limit y quotes.

Todas las herramientas son de solo lectura. Los errores se devuelven como errores de herramientas MCP (isError: true), con el prefijo invalid_input, upstream_error o internal_error.

Ejemplo de salida

review_insights { "app_id": "389801252", "countries": ["us", "gb"] } (Instagram para iOS, llamada real, octubre de 2026, recortada):

{
  "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 }:

idnombredesarrolladorcalificacióninstalaciones
com.spotlightsix.zentimerlite2Insight Timer - App de MeditaciónInsight Network Inc4.7010.000.000+
meditofoundation.meditoMedito: Meditación y SueñoMedito para Mindfulness, Meditación y Sueño4.791.000.000+
com.getsomeheadspace.androidHeadspace: Sueño y MeditaciónHeadspace para Meditación, Mindfulness y Sueño4.2610.000.000+

compare_apps { "app_ids": ["324684580", "com.spotify.music"], "pages": 1 } compara Spotify en iOS y Android. Informa una calificación de tienda de 4.77 frente a 4.35, un promedio reciente de 4.18 frente a 3.90 y un 16% frente a un 28% de reseñas negativas. Principales quejas en Android: premium, canción, anuncios.

Consulta demo/transcript.md para ver respuestas completas y sin recortar de cada herramienta.

Recetas paso a paso (verificación de lanzamiento, análisis de competidores, iOS vs Android, un seguimiento semanal en Claude Code) con resultados reales y costo por flujo de trabajo: docs/workflows.md.

Precios

Pago por evento: solo pagas por llamadas exitosas. Las llamadas que fallan la validación o no pueden llegar a la tienda no se cobran. Los precios actuales están en la pestaña Pricing del Actor.

EventoPrecioSe cobra por
search-apps$0.002cada llamada de search_apps de App Store
review$0.001cada reseña de App Store devuelta por get_app_reviews (50 reseñas = 50 eventos; 0 = gratis)
review-insights$0.03cada llamada de review_insights de App Store, tarifa plana. Las reseñas analizadas internamente no se cobran como eventos de review
compare-apps$0.05cada llamada de compare_apps con solo apps de App Store, tarifa plana sin importar cuántas apps o reseñas

Las llamadas de Google Play se facturan como eventos separados a los mismos precios: play-search $0.002 por búsqueda, play-review $0.001 por reseña, play-review-insights $0.03 por llamada, play-compare-apps $0.05 por comparación que incluya cualquier app de Google Play.

Consejo: review_insights y compare_apps cuestan lo mismo sin importar cuántas reseñas analicen. Para agregados, son mucho más baratas que obtener cientos de reseñas crudas.

Conecta tu cliente MCP

Endpoint (Streamable HTTP):

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

Autentícate con tu token de API de Apify enviándolo como Authorization: Bearer <APIFY_TOKEN>.

Claude Desktop, Cursor, Windsurf (configuración JSON)

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

Si tu cliente solo admite servidores stdio, haz un puente con 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 }]
}

Ejemplos de prompts

Cuatro flujos de trabajo listos para usar, con el prompt, las llamadas a herramientas y los resultados reales en docs/workflows.md:

Flujo de trabajoHerramientasCosto en el servidor alojado
Verificación de lanzamiento: ¿nuestra última actualización empeoró las cosas?review_insights$0.03
Análisis de competidores antes de una reunión de hoja de ruta o preciossearch_apps, compare_apps$0.052
iOS vs Android: ¿qué plataforma está más insatisfecha?compare_apps$0.05
Seguimiento semanal de reseñas en Claude Code (cron + claude -p)review_insights$0.06 por semana
  • "Encuentra el id de la app de Duolingo y resume de qué se quejaron los usuarios en las últimas 300 reseñas de EE. UU."
  • "¿La última versión de Instagram para iOS empeoró las cosas? Usa us, gb y ca."
  • "Compara Spotify en iOS y Android: ¿qué plataforma tiene usuarios más insatisfechos y por qué?"
  • "Compara Spotify, Apple Music y YouTube Music en reseñas recientes y dime cuál es la mayor queja de cada una."

Cómo se calculan las palabras clave de quejas y "qué empeoró"

El método es transparente y determinista. No usa LLM ni modelos de caja negra:

  1. Tokeniza cada reseña de 1–2★. Los apóstrofos curvos y rectos se tratan igual.
  2. Construye frases de 1, 2 y 3 palabras hechas solo de palabras de contenido. Se excluyen palabras vacías, relleno ("never", "just", "still", "really", "keep"…), texto estándar de reseñas ("app", "update", "star"…), números y el propio nombre de la app y su desarrollador. Los plurales y posesivos se fusionan (account/accounts).
  3. Clasifica las frases por cuántas reseñas las mencionan, para que una queja larga no domine. Las frases de varias palabras reciben un pequeño impulso.
  4. Elimina frases redundantes. Una palabra desaparece cuando una frase más larga cubre la mayoría de sus menciones (screen → full screen), y las frases casi duplicadas se fusionan.
  5. Deltas de versión: divide la muestra en la versión más reciente de la app y la(s) versión(es) inmediatamente anterior(es), o usa since_version. Compara la calificación promedio y la proporción negativa, luego clasifica las frases por cuánto aumentó su proporción de reseñas negativas. Si la muestra contiene una sola versión, recurre a los últimos 3 días (o 24 horas) frente a antes. Si eso tampoco es posible, dilo y sugiere más pages o countries. Un nivel de confidence refleja cuántas reseñas negativas tiene cada lado.

Limitaciones

  • Reseñas recientes, no todo el historial. Hasta 500 reseñas por app, tienda y llamada (el feed de Apple sirve 10 páginas de 50; el mismo límite aplica a Google Play). Los conocimientos describen reseñas escritas recientes. La calificación y el recuento de toda la tienda se informan por separado.
  • Las apps con mucho tráfico cubren solo unos días. Para apps como Instagram, 150 reseñas pueden abarcar un día y una sola versión. versionDeltas entonces explica esto y sugiere más pages o countries.
  • Endpoints no oficiales. Las APIs de iTunes Search/Lookup y el feed RSS de Apple, y los endpoints web públicos de Google Play, no requieren clave pero no están documentados para este uso. Pueden cambiar o limitar la velocidad. El servidor reintenta con retroceso, almacena en caché las respuestas durante 5 minutos y devuelve resultados parciales con warnings cuando una página o tienda falla.
  • Particularidades de Google Play. Las reseñas no tienen título, y el filtrado es por lang (predeterminado en) más que por país. Las tiendas se superponen, por lo que review_insights elimina reseñas duplicadas entre países. Muchas apps informan "varies with device" en lugar de un número de versión. El tamaño de la app no está disponible.
  • Particularidades de Apple. El feed no tiene respuestas del desarrollador ni reseñas solo de calificación (sin texto).
  • Palabras clave centradas en inglés. Las reseñas en cualquier idioma se devuelven y cuentan, pero la lista de palabras vacías es principalmente en inglés, con español, francés y alemán básicos.

Preguntas frecuentes

¿Necesito una cuenta de desarrollador de Apple, acceso a Play Console o una clave API? No. Todos los datos provienen de endpoints públicos de App Store y Google Play. Solo necesitas una cuenta y token de Apify para llamar a este servidor alojado.

¿Puedo analizar apps que no poseo? Sí. Cualquier app listada en App Store o Google Play funciona, incluidas las apps de competidores.

¿Cómo analizo la versión de Android de una app? Usa su nombre de paquete de Google Play (com.spotify.music) o URL de Play como app_id, o llama a search_apps con store: "google" para encontrarla.

¿Por qué el promedio de la muestra es tan diferente de la calificación de la tienda? La calificación de la tienda cubre todas las calificaciones que la app ha tenido, incluyendo los muchos toques silenciosos de 5★. La muestra cubre solo las reseñas escritas más recientes, y las personas que escriben reseñas suelen estar más insatisfechas. La brecha es útil: una caída pronunciada en el promedio reciente generalmente apunta a un problema en una versión reciente.

¿Cuántas reseñas analiza review_insights? pages × 50 por tienda, hasta 500 por país. Con pages: 10 y 10 países, eso es hasta 5,000 reseñas en una sola llamada, cobrada como un solo evento.

¿Qué países están soportados? Cualquier tienda, por su código de 2 letras. Las reseñas de App Store son separadas por tienda, así que pasa varios países a review_insights para una cobertura más amplia. En Google Play, usa lang para obtener reseñas en otros idiomas.

¿Se almacena algún dato? No. El servidor no tiene estado. Solo mantiene una caché de respuestas en memoria de corta duración y no escribe nada en conjuntos de datos ni almacenes de clave-valor.

¿Puedo autoalojarlo? Sí. Ejecuta npm install && npm run build, luego node dist/index.js para stdio o node dist/index.js --http para Streamable HTTP en http://127.0.0.1:3000/mcp. Autoalojado, la facturación está desactivada a menos que establezcas BILLING=apify.

Autoalojamiento y desarrollo

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
variable de entornopredeterminadopropósito
PORT / HOST3000 / 127.0.0.1Enlace HTTP (--http); también --port, --host
HTTP_TIMEOUT_MS15000tiempo de espera por solicitud a Apple / Google Play
HTTP_MAX_RETRIES2reintentos en errores 408/425/429/5xx/red
CACHE_TTL_MS300000TTL de caché en memoria (0 lo desactiva)
BILLING(sin establecer); apify en la imagen Dockerapify habilita la facturación de pago por evento de Actor.charge()
GOOGLE_PLAY_ENABLEDhabilitadofalse oculta Google Play de los esquemas de herramientas y rechaza los IDs de Google Play con un error de "próximamente"

En Apify (modo Standby). Cuando APIFY_IS_AT_HOME está establecido, el servidor llama a Actor.init(), fuerza el modo HTTP y escucha en 0.0.0.0:$ACTOR_WEB_SERVER_PORT, con respaldo a ACTOR_STANDBY_PORT y luego PORT. GET / responde a la sonda de preparación de Standby y MCP se sirve en /mcp. El servidor HTTP no tiene autenticación propia: en Apify, la plataforma autentica las solicitudes con tu token de API. Si lo autoalojas más allá de localhost, colócalo detrás de un proxy de autenticación.

.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)

Licencia

MIT