API de Búsqueda de App Store
Salud de la API
- Salud 24 h
- 12 %
- Tiempo medio 24 h
- 16.23 s
- Saludable / normal
- Disponible
- Limitada
- Casi sin servicio
Últimas 24 horas
Últimos 30 días
keyword acepta el nombre o la categoría que se quiere explorar. La respuesta separa app_id, bundle_id, aplicación, desarrollador, versión, precio y valoraciones; no devuelve descargas, ingresos o un historial de posiciones por palabra clave.
Envía POST https://api.everyinfra.com/api/v1/social con platform igual a app_store y action igual a search. Precio $1.39 por 1.000 solicitudes ($0.001389 por llamada). Las llamadas fallidas y los resultados vacíos no se cobran. Síncrona. Para tareas lentas añade "mode": "async" al cuerpo, recibe un job_id y consúltalo.
Prompt para IA
#Ayúdame a escribir un script de recopilación de datos con el endpoint de EveryInfra App Store: Búsqueda (app_store/search).
Cómo funciona el endpoint:
- Solicitud: POST https://api.everyinfra.com/api/v1/social con la cabecera Authorization: Bearer <clave API>. Lee la clave de la variable de entorno EVERYINFRA_API_KEY y no la escribas en el código.
- En el cuerpo de la solicitud, pon platform en app_store y action en search, y los parámetros dentro de params.
- Parámetros obligatorios:
- keyword: Término de búsqueda de aplicaciones en la App Store, como «habit tracker» o el nombre de la aplicación. No es el Bundle ID.
- Parámetros opcionales:
- country: Selecciona la tienda regional de App Store para search, profile y reviews mediante un código de país de dos letras en minúsculas, como us, cn o jp. El valor predeterminado es us.
- limit: Número máximo de filas que devuelve esta llamada, un entero de 1 a 200. Si no lo envías, se usa el valor predeterminado, y una llamada puede devolver menos filas. (por defecto: 20)
- Devuelve una lista de registros. Campos principales de cada registro: app_id, name, url, bundle_id, developer, developer_id, developer_url, description, release_notes, version, price, currency; 28 campos en total, lista completa en https://api.everyinfra.com/api/v1/social/catalog?platform=app_store.
- Cuerpo de solicitud de ejemplo:
{
"platform": "app_store",
"action": "search",
"params": {
"keyword": "habit tracker"
}
}
- Precio: $1.39 por 1.000 solicitudes; los resultados fallidos y vacíos no se cobran.
- Para decenas o cientos de objetivos, añade "mode": "async" al cuerpo: recibes un job_id al instante y consultas GET https://api.everyinfra.com/api/v1/jobs/{job_id} para obtener el resultado.
- Ante un 422, corrige la solicitud con los nombres de parámetros y los valores admitidos que sugiere el error; ante un 429 o un 503, espera lo que indique Retry-After y vuelve a intentarlo.
Antes de escribir código, pregúntame qué objetivos necesito, cuántos, qué campos y en qué formato quiero el resultado; luego confirma conmigo el plan y el coste aproximado.Parámetros de la solicitud
#| Nombre | Ubicación | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|---|
Authorization | header | string | Sí | - | Bearer seguido de tu clave de API. Créala en la consola; nunca la pongas en una URL ni en un repositorio de código. |
platform | body | string | Sí | app_store | Identificador de la plataforma, valor fijo. |
action | body | string | Sí | search | Identificador de la capacidad, valor fijo. |
keyword | body.params | string | Sí | - | Término de búsqueda de aplicaciones en la App Store, como «habit tracker» o el nombre de la aplicación. No es el Bundle ID. El app_id de los resultados de búsqueda se puede usar después para obtener detalles y reseñas de la app. |
country | body.params | string | No | - | Selecciona la tienda regional de App Store para search, profile y reviews mediante un código de país de dos letras en minúsculas, como us, cn o jp. El valor predeterminado es us. Cambia la tienda consultada, no la región de la cuenta ni la facturación de EveryInfra. |
limit | body.params | integer (1–200) | No | 20 | Número máximo de filas que devuelve esta llamada, un entero de 1 a 200. Si no lo envías, se usa el valor predeterminado, y una llamada puede devolver menos filas. Los valores mayores devuelven 422 antes de cualquier cobro. |
Ejemplos de código
#curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "app_store",
"action": "search",
"params": {
"keyword": "habit tracker"
}
}'Definición OpenAPI (JSON)Los ejemplos leen la clave de la variable de entorno EVERYINFRA_API_KEY; el código copiado nunca contiene tu clave.
Ejemplo de respuesta
#{ "id": "req_…", "platform": "app_store", "action": "search", "results": [ { "app_id": 1438388363, "name": "Habit Tracker", "url": "https://apps.apple.com/us/app/habit-tracker/id1438388363?uo=4", "bundle_id": "com.davetech.habit", "developer": "InnerGrow", "developer_url": "https://apps.apple.com/us/developer/innergrow/id1828382777?uo=4", "description": "Habit Tracker: A simple daily planner to schedule and track your routine, making it easy to build lasting habits. \nJoin 15M+ happy users, achieve your goals, and make every day count!\nMore than a self-care companion, it lets you share with others to grow and improve together. \n\n-…", "release_notes": "- add shortcut supports \n- add custom repeat interval \n- fix bugs\n----- Beta Tester needed -----\nIf you want to help us to test new version, contact us: •••\nIf your widget is not working, restart your iPhone.\nOur IG: Tiny Useful Apps", "version": "2.14.23", "price": 0, "currency": "USD", "formatted_price": "Free", "rating": 4.79, "rating_count": 147260, "current_version_rating_count": 147260, "content_rating": "4+", "category": "Productivity", "icon_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/d3/ef/00/d3ef00c2-9b1c-b5ef-0464-2e08231b80de/AppIcon-pink-gr-0-0-1x_U007epad-0-1-0-sRGB-85-220.png/512x512bb.jpg", "min_os": "15.0", "file_size_bytes": 339836928, "released_at": "2019-01-31T09:10:14+00:00", "updated_at": "2026-08-15T15:18:18+00:00", "platform": "app_store", "genres": [ "Productivity", "Health & Fitness" ], "languages": [ "EN", "FR", "DE" ], "screenshot_urls": [ "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/5c/b8/05/5cb8051e-e125-e84e-f0b5-2551b6e9d69d/_U767d1.jpg/320x480bb.jpg", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/13/5d/32/135d32df-678d-5c7e-d940-4f16d5c4e396/_U767d2.jpg/320x480bb.jpg", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/2e/a8/66/2ea866a0-2271-4d8a-e380-8386b935283f/_U767d3.jpg/320x480bb.jpg" ], "rating_scale": 5 }, { "app_id": 6443918070, "name": "Habit Tracker - HabitKit", "url": "https://apps.apple.com/us/app/habit-tracker-habitkit/id6443918070?uo=4", "bundle_id": "com.roehl.habitkit", "developer": "Sebastian Roehl", "developer_url": "https://apps.apple.com/us/developer/sebastian-roehl/id1602956482?uo=4", "description": "Big life changes do not start big. They start with one small habit, done today, done again tomorrow. HabitKit turns those daily wins into a colorful grid of tiles, one square for every day you show up, so you can finally see yourself becoming the person you want to be.\n\nThat visi…", "release_notes": "- Choose Yes/No, Count or Measure with decimals and custom units\n- Change habit types without losing history or streaks\n- At a Count goal above 1, tap to edit instead of clearing\n- New iOS Shortcuts to log amounts and notes, get progress and open habits; translated labels and cle…", "version": "1.18.0", "price": 0, "currency": "USD", "formatted_price": "Free", "rating": 4.85, "rating_count": 2430, "current_version_rating_count": 2430, "content_rating": "4+", "category": "Productivity", "icon_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/79/91/fe/7991fe78-b459-1397-205f-54525a639bde/NewAppIcon-0-0-1x_U007ephone-0-1-sRGB-85-220.png/512x512bb.jpg", "min_os": "15.0", "file_size_bytes": 230910976, "released_at": "2022-11-26T08:00:00+00:00", "updated_at": "2026-09-21T08:40:41+00:00", "platform": "app_store", "genres": [ "Productivity" ], "languages": [ "AR", "BE", "CA" ], "screenshot_urls": [ "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/cb/27/c1/cb27c143-49f7-12ba-a1f1-68fd4caf0634/Apple_iPhone_11_Pro_Max_Screenshot_0.png/320x480bb.jpg", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/18/ba/4e/18ba4eac-d29a-94ae-88a5-92204e14eb24/Apple_iPhone_11_Pro_Max_Screenshot_1.png/320x480bb.jpg", "https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/23/59/4e/23594e53-c451-7772-0dbb-7cd58b8470bb/Apple_iPhone_11_Pro_Max_Screenshot_2.png/320x480bb.jpg" ], "rating_scale": 5 } ], "count": 18, "billing": { "charged": …, "charged_usd": …, "balance_after_usd": …, … }, "quota": { … }}
Campos de la respuesta
#Los datos están en results. La tabla lista los campos que puede tener cada registro; los valores que la plataforma no muestra nunca se inventan.
| Campo | Significado |
|---|---|
app_id | Conserva el significado de la plataforma |
name | Nombre del propio objeto, en capacidades de cuentas, productos y negocios. |
url | Enlace al registro en la plataforma. |
bundle_id | Conserva el significado de la plataforma |
developer | Conserva el significado de la plataforma |
developer_id | Conserva el significado de la plataforma |
developer_url | Conserva el significado de la plataforma |
description | Resumen o descripción, normalmente más breve que text. |
release_notes | Conserva el significado de la plataforma |
version | Conserva el significado de la plataforma |
price | Precio como número, sin símbolo de moneda; ver currency. |
currency | Código de moneda del precio (por ejemplo CNY, USD). Si hay price pero currency es null, no supongas una moneda. |
formatted_price | Conserva el significado de la plataforma |
rating | Valoración. La escala depende de la plataforma: rating_scale en la misma fila indica el máximo (normalmente 5; Booking, Douban, iQIYI y NAVER usan 10). Convierte con rating_scale antes de comparar entre plataformas o la comparación puede salir al revés. |
rating_scale | Máximo de rating en la misma fila: 5 en escalas de cinco estrellas y 10 en escalas de diez puntos. Solo aparece si la fila tiene rating. |
rating_count | Número de personas que valoraron. null significa no publicado, no 0. |
current_version_rating | Conserva el significado de la plataforma |
current_version_rating_count | Conserva el significado de la plataforma |
content_rating | Conserva el significado de la plataforma |
category | Nombre de la categoría según la taxonomía propia de la plataforma, sin normalizar entre plataformas. |
icon_url | Conserva el significado de la plataforma |
min_os | Conserva el significado de la plataforma |
file_size_bytes | Conserva el significado de la plataforma |
released_at | Conserva el significado de la plataforma |
updated_at | Conserva el significado de la plataforma |
platform | Identificador de la plataforma, igual que platform en la solicitud (por ejemplo xiaohongshu, tiktok). |
genres | Conserva el significado de la plataforma |
languages | Conserva el significado de la plataforma |
screenshot_urls | Conserva el significado de la plataforma |
Errores y facturación
#- 401
- Falta la clave o no es válida.
- 402
- Saldo insuficiente. Recarga primero.
- 422
- Nombre o valor de parámetro incorrecto. Corrígelo según las opciones indicadas en el error. Sin cargo.
- 429
- Se alcanzó el límite de solicitudes por minuto. Espera el tiempo indicado en Retry-After y vuelve a intentarlo.
- 503
- No se pudo completar. El cargo retenido vuelve a tu saldo. Si el resultado es incierto, compruébalo antes de reenviar.
- 200 vacío
- Sin datos. Sin cargo.