01Endereço base e autenticação
A base é https://storelift.net/v1. Crie uma chave em Configurações → API; ela é exibida uma única vez e guardada só como hash, então uma chave perdida é substituída, não recuperada.
Envie-a como x-api-key, ou como bearer token se o seu cliente só trabalha com cabeçalhos Authorization:
curl -s https://storelift.net/v1/apps \
-H "x-api-key: sl_live_..."02Os 9 endpoints
| Endpoint | O que retorna |
|---|---|
GET /v1/apps | Os apps que esta conta acompanha. Toda outra chamada começa aqui — o id vem desta. |
GET /v1/apps/{id} | Um app e o retrato da execução mais recente. |
GET /v1/apps/{id}/keywords | A posição atual de cada palavra-chave acompanhada em um storefront, com o estado da medição e a profundidade buscada. |
GET /v1/apps/{id}/rivals | Os apps que estão acima de você, cada um com os termos em que ganha de você e as duas posições. |
GET /v1/apps/{id}/ai | Se um assistente cita o seu app para a sua categoria, com a série armazenada. Medido no Studio. |
GET /v1/apps/{id}/history | A série de posições por palavra-chave, cortada na janela de histórico do plano. |
GET /v1/apps/{id}/page | A sua própria página como a loja a serve, nas duas plataformas, mais as mudanças datadas detectadas nela. |
GET /v1/apps/{id}/reviews | Avaliações recentes com o resumo de estrelas, quantas são novas nesta execução e o lado do Play quando medido. |
GET /v1/apps/{id}/charts | A posição no top chart do gênero e do storefront do app, com a série. |
Os endpoints abaixo de /apps/{id} aceitam country (um código de storefront como us; o padrão é o primeiro do app) e, quando as duas lojas são medidas, platform=ios|android.
03Os três estados de medição atravessam a fronteira
Esta é a parte que vale ler antes de escrever a integração. Um campo de posição pode ser um número, mas a ausência de número são duas coisas diferentes, e a API mantém as duas separadas:
measured: true,rank: 7— o app foi encontrado na posição 7.measured: true,rank: null— a busca rodou e o app não estava nos resultados até a profundidade que lemos.measured: false— a busca não pôde ser feita naquele dia. Nada se sabe sobre a posição.
{
"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 os dois últimos num zero descreveria uma queda que nunca aconteceu, e toda média construída em cima disso sairia errada. Se o seu código precisa de um único número, trate measured: false como uma lacuna na série, não como um valor.
04O que ela não faz
- Não escreve. Todo endpoint é
GET; qualquer outro método retornamethod_not_allowed. Não há caminho da API até a sua página, as suas palavras-chave acompanhadas ou a sua cobrança. - Não mede sob demanda. Os endpoints leem o que a execução noturna coletou. Perguntar duas vezes não envia uma segunda consulta às lojas.
- Não traz a camada de receita. As contas conectadas (App Store Connect, Apple Ads, RevenueCat, GA4) ficam no painel — uma linha traçada de propósito, não um esquecimento.
- O histórico é cortado pelo plano.
historyechartscortam os dois na janela do plano, então a mesma chave não vai mais longe por um endpoint do que pelo outro.
05Erros
| Status | error | Quando |
|---|---|---|
| 401 | missing_api_key | Nenhuma chave na requisição. |
| 401 | invalid_api_key | A chave é desconhecida ou foi revogada. |
| 401 | account_deleted | A conta por trás da chave não existe mais. |
| 403 | plan_required | O plano não inclui acesso à API. A resposta traz o plano atual. |
| 405 | method_not_allowed | Todo endpoint é GET. Nada escreve. |
| 404 | not_found | Esse id de app não está nesta conta. |
| 404 | unknown_endpoint | Não existe esse caminho em /v1. |
Todo erro é JSON com um campo error. plan_required também retorna plan, para que o cliente diga em qual plano a chave está em vez de adivinhar.
Perguntas frequentes
Existe limite de requisições?
Não há cota por chave. O gateway na frente da API tem um teto para a conta inteira, e cada chamada atualiza um contador de uso na chave, para você ver em Configurações se uma chave antiga ainda está em uso.
Posso usar no plano gratuito?
Não — o acesso à API começa no Pro. As ferramentas gratuitas deste site não exigem conta nenhuma, e o plano gratuito continua medindo um app por dia.
API ou servidor MCP?
Um script quer a API: formatos fixos, uma chamada, nenhum modelo no meio. Um assistente quer o servidor MCP, porque as ferramentas trazem as próprias descrições e ele escolhe a chamada certa sem você escrever a integração. Os dois leem as mesmas medições.
Veja isso para o seu próprio app
Cole o link da loja e adicione suas palavras-chave. Posição, apps acima de você e demanda são medidos todos os dias.
Plano grátis: 1 app, 25 palavras-chave em cada um de 2 storefronts, 30 dias de histórico, sem cartão e sem prazo. O Pro custa US$ 20/mês.
Começar grátis →