# La API de Storelift URL: https://storelift.net/es/guide/storelift-api/ Language: es Updated: 2026-09-20 Todo lo que muestra el panel es también un endpoint JSON. Son 9, todos GET, todos sobre sus propias apps seguidas, así que un script, una tarea de hoja de cálculo o un paso de CI pueden leer los mismos números sin hacer scraping de una página. La API está incluida en Pro y Studio; un asistente que lee los mismos datos normalmente prefiere el servidor MCP. ## Dirección base y autenticación La base es https://storelift.net/v1. Cree una clave en Settings → API; se muestra una sola vez y solo se guarda como hash, así que una clave perdida se sustituye, no se recupera. Envíela como x-api-key, o como token bearer si su cliente solo maneja cabeceras Authorization: curl -s https://storelift.net/v1/apps \ -H "x-api-key: sl_live_..." NOTE: El acceso a la API está en los planes Pro y Studio: desde $20 al mes, $60 en Studio. Si se baja de plan, la clave deja de funcionar pero no se elimina, así que al volver a subir de plan se reactiva la misma integración. ## Los 9 endpoints | Endpoint | Qué devuelve | | --- | --- | | GET /v1/apps | Las apps que sigue esta cuenta. Todas las demás llamadas empiezan aquí: el id sale de esta. | | GET /v1/apps/{id} | Una app más la instantánea de la última ejecución. | | GET /v1/apps/{id}/keywords | Posición actual por palabra clave seguida en un storefront, con el estado de medición y la profundidad buscada. | | GET /v1/apps/{id}/rivals | Las apps que tiene por encima, cada una con los términos en que le supera y ambas posiciones. | | GET /v1/apps/{id}/ai | Si un asistente menciona su app para su categoría, con la serie almacenada. Studio lo mide. | | GET /v1/apps/{id}/history | La serie de posiciones por palabra clave, recortada a la ventana de historial del plan. | | GET /v1/apps/{id}/page | Su propia ficha tal como la sirve la tienda, en ambas plataformas, más los cambios fechados detectados en ella. | | GET /v1/apps/{id}/reviews | Reseñas recientes con el resumen de estrellas, cuántas son nuevas en esta ejecución y la parte de Play cuando se mide. | | GET /v1/apps/{id}/charts | Posición en la lista top del género y el storefront de la app, con la serie. | Los endpoints por debajo de /apps/{id} aceptan country (un código de storefront como us; por defecto, el primero de la app) y, donde se miden ambas tiendas, platform=ios|android. ## Los tres estados de medición se conservan al cruzar el límite Esta es la parte que vale la pena leer antes de escribir la integración. Un campo de posición puede ser un número, pero la ausencia de un número son dos cosas distintas y la API las mantiene separadas: - measured: true, rank: 7: la app se encontró en la posición 7. - measured: true, rank: null: la búsqueda se ejecutó y la app no estaba en los resultados hasta la profundidad que leemos. - measured: false: la búsqueda no pudo ejecutarse ese día. No se sabe nada de la posición. { "country": "de", "platform": "ios", "live": true, "measuredAt": "2026-09-19T02:14:08.921Z", "keywords": [ { "term": "traumdeutung", "measured": true, "rank": 7, "demand": 6, "searchDepth": 200 }, { "term": "traumsymbole", "measured": true, "rank": null, "demand": 3, "searchDepth": 200 }, { "term": "traumtagebuch", "measured": false, "rank": null, "demand": null, "searchDepth": null } ] } Juntar los dos últimos en un cero describiría un desplome que nunca ocurrió, y cualquier promedio construido encima sería erróneo. Si su código necesita un solo número, trate measured: false como un hueco en la serie, no como un valor. ## Lo que no hace - No escribe. Todos los endpoints son GET; cualquier otra cosa devuelve method_not_allowed. No hay camino desde la API hasta su ficha, sus palabras clave seguidas o su facturación. - No mide bajo demanda. Los endpoints leen lo que recogió la ejecución nocturna. Preguntar dos veces no envía una segunda consulta a las tiendas. - No incluye la capa de ingresos. Las cuentas conectadas (App Store Connect, Apple Ads, RevenueCat, GA4) se quedan en el panel: una línea deliberada, no un descuido. - El historial se recorta según el plan. history y charts cortan ambos en la ventana del plan, así que la misma clave no puede llegar más lejos por un endpoint que por el otro. ## Errores | Estado | error | Cuándo | | --- | --- | --- | | 401 | missing_api_key | No hay clave en la solicitud. | | 401 | invalid_api_key | La clave es desconocida o se revocó. | | 401 | account_deleted | La cuenta asociada a la clave ya no existe. | | 403 | plan_required | El plan no incluye acceso a la API. La respuesta indica el plan actual. | | 405 | method_not_allowed | Todos los endpoints son GET. Nada escribe. | | 404 | not_found | Ese id de app no está en esta cuenta. | | 404 | unknown_endpoint | No existe esa ruta bajo /v1. | Todos los errores son JSON con un campo error. plan_required devuelve además plan, para que un cliente pueda decir en qué plan está la clave en lugar de adivinarlo. ## FAQ Q: ¿Hay un límite de solicitudes? A: No hay cuota por clave. El gateway que está delante de la API tiene un techo para toda la cuenta, y cada llamada actualiza un contador de uso en la clave para que pueda ver en Settings si una clave antigua sigue en uso. Q: ¿Puedo usarla en el plan gratuito? A: No: el acceso a la API empieza en Pro. Las herramientas gratuitas de este sitio no necesitan cuenta, y el plan gratuito sigue midiendo una app a diario. Q: ¿API o servidor MCP? A: Un script quiere la API: formas fijas, una llamada, ningún modelo de por medio. Un asistente quiere el servidor MCP, porque las herramientas llevan sus propias descripciones y puede elegir la llamada correcta sin que usted escriba la integración. Ambos leen las mismas mediciones.