Documentation développeur › Référence de l'API
Endpoints de vos apps
Les apps que suit cet espace de travail : rangs, concurrents, avis, page du store, chronologie de la fiche, mises en avant, top charts et contrôles de la fiche.
Authentification · Crédits · Paramètres communs · Codes d'erreur · openapi.json
GET /apps
Liste les apps suivies dans ce compte Storelift (identifiant, nom, pays, mots-clés). À appeler en premier — tous les autres outils ont besoin d’un appId issu d’ici.
curl "https://storelift.net/v1/apps" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/keywords
Positions des mots-clés d’une app dans un pays de l’App Store / de Google Play. TROIS ÉTATS SONT DISTINCTS : measured=false signifie que la requête n’a pas pu être mesurée, rank=null qu’elle a été mesurée mais que l’app est absente des premiers résultats, rank=<nombre> est la position. Ne les confondez jamais — compter un jour non mesuré comme zéro donne une réponse fausse.
Accepte aussi: appId (obligatoire) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/keywords?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/rivals
Apps classées AU-DESSUS de cette app dans la recherche. Pour chaque concurrent, vous obtenez les mots-clés sur lesquels il vous devance, sa position (theirRank) et la vôtre (ourRank) — ourRank null signifie que l’app n’apparaît pas du tout pour ce mot-clé.
Accepte aussi: appId (obligatoire) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/rivals?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/ai
Mentions de l’app dans un échantillon daté de réponses de moteurs d’IA ; cela ne reproduit pas ce que ChatGPT, Claude ou Gemini montrent à chaque utilisateur. Studio ou Enterprise et la portée ai:read sont requis. engines contient les réponses de chaque moteur mesuré ; providers donne les états measured, failed ou not_measured. Un moteur indisponible n’est pas un score de zéro. Lisez l’échantillon daté et son nombre de questions ; ce n’est ni un classement universel ni une mesure de toutes les réponses grand public.
Accepte aussi: appId (obligatoire) · country
curl "https://storelift.net/v1/apps/sbx-lumen/ai?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/ai-check
Lance un échantillon de visibilité IA pour une app dans un pays, avec les moteurs disponibles pour l’exécution. Nécessite Studio ou Enterprise et la portée ai:read ; le quota de Pro dans le tableau de bord ne donne pas accès à cet outil MCP. Consomme une mesure de visibilité IA du forfait ou achetée ; get_ai_visibility renvoie le résultat. Une seule mesure par app s’exécute à la fois.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
country | query | string | code pays, p. ex. tr, us (vide = les trois premiers pays de l’app) |
Accepte aussi: appId (obligatoire)
En plus de ses crédits, cet appel consomme une passe de visibilité IA, comprise dans le plan ou achetée ; il n'y a donc pas de commande à copier ici.
GET /apps/{appId}/history
Historique des positions des mots-clés pour un pays. Les points de la série sont [jour, position] ; une position null signifie que l’app était absente des premiers résultats ce jour-là, ce qui n’est pas la même chose qu’une mauvaise position. Forfait Pro.
Accepte aussi: appId (obligatoire) · country
curl "https://storelift.net/v1/apps/sbx-lumen/history?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/page
Les signaux de la fiche de l’app elle-même pour un pays (le nom et le sous-titre ne sont pas inclus) : version, événements dans l’app, mises en avant éditoriales, rayons d’apps similaires et jeu de captures d’écran (iOS), plus la page Google Play (nombre exact d’installations, répartition des notes, indicateurs publicité/achats intégrés, badge de classement). ios.listingExtras contient les langues prises en charge par l’app, sa répartition des étoiles (de 1★ à 5★), les événements dans l’app en cours et à venir, le texte promotionnel et les achats intégrés mis en avant ; en Free, il donne le nombre de langues, les 5 premières langues et la répartition des étoiles, et locked indique combien il y en a pour le reste. timeline liste les modifications datées que nous avons détectées sur la fiche — l’explication la moins coûteuse d’un mouvement de position. measured=false signifie que la page n’a jamais été lue ; ce n’est pas la même chose qu’une page vide.
Accepte aussi: appId (obligatoire) · country
curl "https://storelift.net/v1/apps/sbx-lumen/page?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/reviews
Avis récents pour un pays : list contient les avis de l’App Store, android ceux de Google Play (une fenêtre plus courte), chacun avec son texte, sa note et sa date. newCount indique combien sont arrivés depuis la mesure précédente ; sur un enregistrement plus ancien il vaut null, à lire comme inconnu plutôt que zéro. android: null signifie que cette page Play attend sa première mesure, et une liste vide que la page n’a aucun avis.
Accepte aussi: appId (obligatoire) · country
curl "https://storelift.net/v1/apps/sbx-lumen/reviews?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/charts
Position dans les classements de l’App Store pour un pays : positions actuelles par liste (gratuit / payant / plus rentables, général et dans la catégorie) et leur historique. Google Play est absent volontairement — il n’a pas de classement public, et un chiffre ici serait inventé.
Accepte aussi: appId (obligatoire) · country
curl "https://storelift.net/v1/apps/sbx-lumen/charts?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/reviews/search
Recherche dans les avis d’une app dans un pays par texte, note en étoiles, version de l’app et période, du plus récent au plus ancien — jusqu’à 1 000 lignes issues de l’archive complète des avis, dans la fenêtre d’avis de votre forfait. total est le nombre de correspondances ; truncated vous indique quand plus de lignes correspondaient que vous n’en avez demandé.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
q | query | string | texte à chercher dans le titre ou le corps de l’avis |
rating | query | string | notes en étoiles, séparées par des virgules, p. ex. 1,2 |
version | query | string | version de l’app sur laquelle l’avis a été écrit, p. ex. 2.4.0 |
from | query | string | premier jour, YYYY-MM-DD |
to | query | string | dernier jour, YYYY-MM-DD |
limit | query | number | lignes, jusqu’à 1000 (100 par défaut) |
Accepte aussi: appId (obligatoire) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/reviews/search?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/reviews/stats
Répartition des étoiles, moyenne et part des avis à 1–2 étoiles pour une app dans un pays, plus une courbe jour par jour (nombre et moyenne par jour) et une ventilation par version — pour qu’une baisse s’aligne sur la version qui l’a provoquée. Par défaut, les 90 derniers jours.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
days | query | number | N derniers jours, jusqu’à 365 (90 par défaut) |
from | query | string | premier jour, YYYY-MM-DD (prioritaire sur days) |
to | query | string | dernier jour, YYYY-MM-DD |
Accepte aussi: appId (obligatoire) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/reviews/stats?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/reviews/summary
IA des avis pour une app dans un pays : un résumé des avis récents et de leurs thèmes — réclamations, demandes, éloges — chacun avec les avis cités comme preuve. Le même jour et le même lot d’avis renvoient le résumé stocké sans toucher au quota ; un nouveau résumé consomme un crédit IA des avis du quota mensuel (tous les forfaits ; Free en a un aperçu). Répond state: "too_few" avec le nombre tant qu’il y a trop peu d’avis à résumer.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
store | query | ios | android | ios par défaut |
lang | query | en | tr | de | es | fr | pt | ru | ja | ko | zh | langue du résumé (en par défaut) |
Accepte aussi: appId (obligatoire) · country
En plus de ses crédits, cet appel consomme un crédit d'IA des avis du quota mensuel ; il n'y a donc pas de commande à copier ici.
GET /apps/{appId}/reviews/reply-draft
Un brouillon de réponse du développeur pour un avis, dans la langue du pays. La note et le texte de l’avis proviennent de l’avis stocké chez nous, le brouillon répond donc à ce que l’auteur a réellement écrit ; note ajoute ce que vous voulez que la réponse dise (un correctif publié, un réglage à essayer). Le brouillon est seulement renvoyé — reply_review publie une réponse après votre confirmation. Consomme un crédit IA des avis.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
store | query | ios | android | ios par défaut |
reviewIdobligatoire | query | string | identifiant d’avis issu de get_reviews ou search_reviews |
note | query | string | ce que la réponse doit dire, p. ex. corrigé dans la 2.4.1 |
Accepte aussi: appId (obligatoire) · country
En plus de ses crédits, cet appel consomme un crédit d'IA des avis ; il n'y a donc pas de commande à copier ici.
GET /apps/{appId}/timeline
Modifications datées de la fiche d’une app — nouvelle version, captures d’écran, événements dans l’app, mises en avant relevées sur la page du store et modifications du champ de mots-clés depuis App Store Connect — chacune avec le mouvement des positions des mots-clés autour d’elle : termes qui ont monté, baissé, sont entrés ou sortis entre la dernière mesure avant la modification et la dernière dans les window jours qui suivent, plus les cinq plus grands mouvements.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
window | query | number | jours après chaque modification pour lire les positions, jusqu’à 30 (7 par défaut) |
Accepte aussi: appId (obligatoire) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/timeline?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/today
La journée d’une app en une seule réponse — l’écran Aujourd’hui : achats, essais et renouvellements issus des sources connectées, nouveaux avis, mouvements de position et de catégorie par rapport à hier, nouveaux entrants au-dessus de vous, nouveaux événements dans l’app et chiffres d’hier pour l’App Store, Google Play, les revenus nets et la publicité, chacun marqué de sa source. tz fait d’« aujourd’hui » la journée de l’utilisateur.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
tz | query | string | fuseau horaire IANA, p. ex. Europe/Istanbul (UTC par défaut) |
day | query | string | un autre jour à lire, YYYY-MM-DD |
Accepte aussi: appId (obligatoire)
curl "https://storelift.net/v1/apps/sbx-lumen/today" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/competition
Combien d’apps sont en concurrence sur chaque mot-clé dans un pays, renvoyé pour les termes vus sur deux apps ou plus. Par défaut, les mots-clés suivis de l’app ; passez terms pour compter des candidats avant de les suivre. corpus est la taille de l’ensemble sur lequel repose le décompte.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
terms | query | string | jusqu’à 100 termes, séparés par des virgules (par défaut, les mots-clés suivis) |
Accepte aussi: appId (obligatoire) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/competition?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/rivals/{rivalId}
Un concurrent de votre app dans un pays : son nom, sa note et son nombre de notes avec leur historique sur 90 jours (un changement de nom révèle une réécriture de fiche), et les mots-clés sur lesquels il est classé avec sa position sur chacun. La liste de mots-clés consomme un espion de mots-clés du quota mensuel et reste ouverte 30 jours ; une fois le quota épuisé, la réponse contient les chiffres propres au concurrent avec locked: true.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
rivalIdobligatoire | path | string | identifiant de concurrent issu de get_rivals |
Accepte aussi: appId (obligatoire) · country · platform
En plus de ses crédits, cet appel consomme une consultation des mots-clés d'un concurrent sur le quota mensuel ; il n'y a donc pas de commande à copier ici.
GET /apps/{appId}/rivals/{rivalId}/adnetworks
Comment un concurrent monétise par la publicité : les régies publicitaires avec lesquelles il travaille, chacune marquée DIRECT ou RESELLER. L’état distingue les cas — les régies trouvées, un développeur qui ne déclare aucune régie (no_file), une vérification qui n’a pas pu aboutir cette fois (unreachable) ou une fiche sans site de développeur (no_site). Conservé 14 jours.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
rivalIdobligatoire | path | string | identifiant de concurrent issu de get_rivals |
Accepte aussi: appId (obligatoire) · platform
curl "https://storelift.net/v1/apps/sbx-lumen/rivals/1000000001/adnetworks" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/rivals/{rivalId}/market
Le marché d’un concurrent dans un pays : sur Google Play, le nombre exact d’installations et la fourchette de prix des achats intégrés, et les installations entre deux mesures dès qu’il y en a deux ; sur l’App Store, son prix, son nombre de notes, sa date de sortie et s’il vend des achats intégrés. Mesuré à la demande et conservé 7 jours.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
rivalIdobligatoire | path | string | identifiant de concurrent issu de get_rivals |
Accepte aussi: appId (obligatoire) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/rivals/1000000001/market?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/storefront-audit
Votre fiche iOS dans chaque pays de l’App Store : où l’app est vendue, quels pays affichent le texte ou les captures d’écran de repli au lieu de leur propre langue, et la deuxième langue que chaque pays indexe aussi. Renvoie la dernière analyse ; refresh: true en lance une nouvelle lorsque la dernière date de plus de 12 heures et répond 202 avec eta secondes — rappelez ensuite. Le tableau complet est disponible à partir de Pro ; Free reçoit l’aperçu.
Accepte aussi: appId (obligatoire)
curl "https://storelift.net/v1/apps/sbx-lumen/storefront-audit" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/suggest
De nouvelles idées de mots-clés pour une app dans un pays, rédigées dans la langue de recherche de ce pays : des termes de 1 à 3 mots que les gens tapent dans le champ de recherche du store, chacun avec une raison d’une ligne indiquant qui le recherche et pourquoi l’app répond à ce besoin. Les mots-clés suivis, ceux que vous avez écartés et les noms de marque restent en dehors. Consomme un crédit de rédaction IA du quota mensuel (à partir de Pro) ; mesurez les idées avec get_keyword_metrics avant de les suivre.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
cc | query | string | code pays, p. ex. tr, us (par défaut, le premier pays de l’app) |
lang | query | en | tr | de | es | fr | pt | ru | ja | ko | zh | langue des raisons (en par défaut) |
Accepte aussi: appId (obligatoire)
En plus de ses crédits, cet appel consomme un crédit de rédaction IA du quota mensuel ; il n'y a donc pas de commande à copier ici.
POST /apps/{appId}/validate-listing
Vérifie un brouillon de fiche App Store avant son envoi à App Store Connect. Il signale les limites de caractères par champ, la place perdue en espaces dans le champ de mots-clés, les répétitions, les mots déjà présents dans le nom ou le sous-titre, les mots de marque et de remplissage, les répétitions entre nom et sous-titre, les noms de produits Apple et les mots liés au prix, si le texte est bien dans la langue et l’écriture de la langue choisie, et quels mots-clés suivis de l’app le brouillon laisse de côté. N’écrit rien ; passez uniquement les champs à vérifier.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
locale | body | string | langue de la fiche, p. ex. en-US, de-DE, ja |
country | body | string | pays dont les mots-clés suivis servent à vérifier la couverture, p. ex. us (par défaut, le premier pays de l’app) |
name | body | string | nom de l’app, jusqu’à 30 caractères |
subtitle | body | string | sous-titre, jusqu’à 30 caractères |
keywords | body | string | champ de mots-clés, séparés par des virgules, jusqu’à 100 caractères |
promotionalText | body | string | texte promotionnel, jusqu’à 170 caractères |
description | body | string | description, jusqu’à 4000 caractères |
Accepte aussi: appId (obligatoire)
curl -X POST "https://storelift.net/v1/apps/sbx-lumen/validate-listing" \
-H "Authorization: Bearer $STORELIFT_API_KEY" \
-H "content-type: application/json" \
-d '{"locale":"en-US","name":"Lumen: Sleep Sounds","subtitle":"White noise and rain for sleep","keywords":"calm,relax,nap,baby,fan,ocean,lullaby"}'GET /apps/{appId}/draft
Un brouillon de fiche — titre, sous-titre, texte promotionnel et description — construit à partir des mots-clés mesurés pour cette app dans un pays, classés par demande. Chaque champ est accompagné de son nombre de caractères par rapport à la limite du store, plus deux vérifications liées à la validation : un nom de produit Apple dans le titre ou le sous-titre (App Store uniquement) et des mentions de prix. termsUsed liste les termes mesurés utilisés ; excluded les termes suivis qui restent à mesurer. Rien n’est écrit dans le store — c’est update_listing qui s’en charge. Consomme un crédit de rédaction IA (à partir de Pro).
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
cc | query | string | code pays, p. ex. tr, us (par défaut, le premier pays de l’app) |
Accepte aussi: appId (obligatoire) · platform
En plus de ses crédits, cet appel consomme un crédit de rédaction IA ; il n'y a donc pas de commande à copier ici.
GET /apps/{appId}/localize
Rédige la fiche App Store complète pour une nouvelle langue — nom, sous-titre, champ de mots-clés et description — à partir de la fiche source de l’app, chaque mot-clé étant d’abord mesuré dans ce pays. Le premier appel lance la rédaction et répond pending (il consomme une rédaction de fiche du forfait : Free 1 au total, Pro 20 et Studio 75 par mois) ; rappelez avec poll=true jusqu’au retour de la fiche. Avec shots=true, les légendes des captures d’écran reviennent aussi dans la même langue. Nécessite que get_storefront_audit ait été exécuté pour l’app. N’écrit rien dans App Store Connect ; c’est update_listing qui s’en charge.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
localeobligatoire | query | string | langue cible, p. ex. de_de, pt_br, ja_jp (de-DE fonctionne aussi) |
Accepte aussi: appId (obligatoire)
En plus de ses crédits, cet appel prélève une rédaction de fiche sur le plan ; il n'y a donc pas de commande à copier ici.
GET /apps/{appId}/shot-text
Le texte des légendes de vos quatre premières captures d’écran App Store dans un pays. Apple indexe le texte de la fiche ; ce texte agit donc sur la conversion plutôt que sur la position dans la recherche — la réponse le dit avec indexed: false. Conservé jusqu’au changement des captures ; une nouvelle lecture consomme un crédit de rédaction IA (à partir de Pro).
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
cc | query | string | code pays, p. ex. tr, us (par défaut, le premier pays de l’app) |
Accepte aussi: appId (obligatoire)
En plus de ses crédits, cet appel consomme un crédit de rédaction IA ; il n'y a donc pas de commande à copier ici.
GET /apps/{appId}/chart-movers
Qui a bougé dans le classement de la catégorie de l’app : hausses et baisses (3 places et plus), nouveaux entrants et sortants, avec les noms, plus la position de l’app elle-même et de ses concurrents choisis les deux jours. La catégorie vient de l’enregistrement de classement de l’app ; passez genre pour en consulter une autre. Forfait Pro.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
kind | query | free | paid | grossing | classement (free par défaut) |
genre | query | string | identifiant de genre App Store, p. ex. 6013 (par défaut, la catégorie de l’app) |
days | query | number | comparer avec il y a ce nombre de jours, 1-90 (1 par défaut) |
limit | query | number | lignes par groupe, jusqu’à 100 (25 par défaut) |
Accepte aussi: appId (obligatoire) · country
curl "https://storelift.net/v1/apps/sbx-lumen/chart-movers?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/featuring
Où Apple montre l’app aujourd’hui, par pays : cartes éditoriales (dedicated: true quand l’article porte sur cette app, false quand elle figure dans une collection), événements dans l’app en cours et programmés, le rayon You Might Also Like d’Apple, et l’historique daté des mises en avant et des nouveaux événements. Laissez country vide pour tous les pays que l’app suit.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
country | query | string | code pays, p. ex. tr, us (vide = tous les pays que l’app suit) |
Accepte aussi: appId (obligatoire)
curl "https://storelift.net/v1/apps/sbx-lumen/featuring?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}
Une app suivie avec ses identifiants de plateforme, ses pays, ses mots-clés suivis par pays et le dernier instantané de mesure (tableaux de mots-clés par pays). Utilisez d’abord list_apps pour obtenir l’appId.
Accepte aussi: appId (obligatoire)
curl "https://storelift.net/v1/apps/sbx-lumen" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Exemple de réponse
GET /apps/{appId}/weekly-plan
Les suggestions de fiche de la semaine pour l’app — la même liste que la carte « Cette semaine » du tableau de bord, les meilleures en premier. Une suggestion n’apparaît que si elle passe des contrôles stricts : un mot-clé n’entre dans le titre ou le sous-titre que s’il s’agit d’un terme central et très demandé de la niche de l’app, que l’app y est déjà classée entre la 4e et la 15e place, que des apps concurrentes au-dessus le portent dans leur nom et qu’il tient sans faire tomber la marque ni rien de ce qui est classé ; les mots-clés de niche ou de longue traîne vont au mieux dans le champ de mots-clés, et seulement s’il reste de la place ; les autres catégories, les autres langues et les mots-clés refusés par l’utilisateur n’apparaissent jamais ; rien n’est suggéré tant qu’une modification récente de la fiche se stabilise encore (settling indique jusqu’à quand). Chaque tâche comprend la phrase, le texte actuel et le texte proposé, les mots qu’elle ajoute et retire, les raisons (des faits mesurés), le compromis et un niveau de confiance. Sans country, tous les pays sont fusionnés et une même modification forme une seule tâche avec ses pays. Souvent vide — c’est voulu. Forfait Pro.
| Paramètre | Emplacement | Type | Description |
|---|---|---|---|
country | query | string | un pays, p. ex. tr, us (omettre pour fusionner tous les pays) |
goal | query | downloads | rank | revenue | accepté pour compatibilité ; les suggestions sont classées par valeur attendue |
platform | query | ios | android | store (ios par défaut) |
limit | query | integer | tâches à renvoyer, 1–10 (5 par défaut) |
Accepte aussi: appId (obligatoire)
curl "https://storelift.net/v1/apps/sbx-lumen/weekly-plan?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"