01Базовый адрес и аутентификация
Базовый адрес — https://storelift.net/v1. Создайте ключ в Settings → API; он показывается один раз и хранится только в виде хеша, поэтому потерянный ключ заменяют, а не восстанавливают.
Передавайте его как x-api-key или как bearer-токен, если клиент умеет только заголовки Authorization:
curl -s https://storelift.net/v1/apps \
-H "x-api-key: sl_live_..."029 эндпоинтов
| Эндпоинт | Что возвращает |
|---|---|
GET /v1/apps | Приложения, которые отслеживает этот аккаунт. Любой другой вызов начинается отсюда — id берётся из него. |
GET /v1/apps/{id} | Одно приложение плюс снимок последнего замера. |
GET /v1/apps/{id}/keywords | Текущая позиция по каждому отслеживаемому ключевому слову в одной витрине, с состоянием замера и глубиной поиска. |
GET /v1/apps/{id}/rivals | Приложения выше вас, каждое — с запросами, по которым оно вас обходит, и обеими позициями. |
GET /v1/apps/{id}/ai | Называет ли ассистент ваше приложение для вашей категории, с сохранённым рядом. Замер выполняется на Studio. |
GET /v1/apps/{id}/history | Ряд позиций по каждому ключевому слову, обрезанный до окна истории тарифа. |
GET /v1/apps/{id}/page | Ваша собственная страница в том виде, в каком её отдаёт стор, для обеих платформ, плюс обнаруженные на ней датированные изменения. |
GET /v1/apps/{id}/reviews | Свежие отзывы со сводкой звёзд, числом новых в этом замере и данными Play, если они измеряются. |
GET /v1/apps/{id}/charts | Позиция в топ-чарте для жанра и витрины приложения, с рядом. |
Эндпоинты ниже /apps/{id} принимают country (код витрины, например us, по умолчанию — первая витрина приложения) и, если измеряются оба стора, platform=ios|android.
03Три состояния замера сохраняются при передаче
Эту часть стоит прочитать до того, как писать интеграцию. Поле позиции может быть числом, но отсутствие числа означает две разные вещи, и API их разделяет:
measured: true,rank: 7— приложение найдено на позиции 7.measured: true,rank: null— поиск выполнен, но приложения не было в результатах на прочитанной нами глубине.measured: false— в этот день поиск выполнить не удалось. О позиции ничего не известно.
{
"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 }
]
}Если свести два последних случая к нулю, получится обвал, которого не было, и все средние, построенные поверх, будут неверны. Если вашему коду нужно одно число, считайте measured: false пропуском в ряду, а не значением.
04Чего он не делает
- Он не записывает. Все эндпоинты —
GET; всё остальное возвращаетmethod_not_allowed. Из API нет пути к вашей странице, отслеживаемым ключевым словам или оплате. - Он не измеряет по запросу. Эндпоинты читают то, что собрал ночной замер. Повторный запрос не отправляет в сторы второй поиск.
- Он не передаёт слой выручки. Подключённые аккаунты (App Store Connect, Apple Ads, RevenueCat, GA4) остаются в дашборде — это сознательная граница, а не упущение.
- История обрезается по тарифу.
historyиchartsобрезаются по окну тарифа, поэтому один и тот же ключ не может через один эндпоинт заглянуть дальше, чем через другой.
05Ошибки
| Статус | error | Когда |
|---|---|---|
| 401 | missing_api_key | В запросе нет ключа. |
| 401 | invalid_api_key | Ключ неизвестен или отозван. |
| 401 | account_deleted | Аккаунт, которому принадлежал ключ, удалён. |
| 403 | plan_required | Тариф не включает доступ к API. В ответе указан текущий тариф. |
| 405 | method_not_allowed | Все эндпоинты — GET. Ничего не записывается. |
| 404 | not_found | Такого id приложения нет в этом аккаунте. |
| 404 | unknown_endpoint | Такого пути под /v1 нет. |
Каждая ошибка — это JSON с полем error. plan_required также возвращает plan, чтобы клиент мог сообщить, на каком тарифе ключ, а не гадать.
Частые вопросы
Есть ли ограничение частоты запросов?
Квоты на ключ нет. У шлюза перед API есть общий потолок на аккаунт, а каждый вызов обновляет счётчик использования ключа, чтобы в Settings было видно, используется ли ещё старый ключ.
Можно ли пользоваться им на бесплатном тарифе?
Нет — доступ к API начинается с Pro. Бесплатным инструментам на этом сайте аккаунт не нужен, а бесплатный тариф всё равно ежедневно измеряет одно приложение.
API или MCP-сервер?
Скрипту нужен API: фиксированные структуры, один вызов, без модели в цепочке. Ассистенту нужен MCP-сервер, потому что у инструментов есть собственные описания и он может выбрать нужный вызов без того, чтобы вы писали интеграцию. Оба читают одни и те же замеры.
Проверьте на своём приложении
Вставьте ссылку на приложение и добавьте ключевые слова. Позиция, приложения выше вас и спрос измеряются каждый день.
Бесплатный план: 1 приложение, по 25 ключевых слов в 2 витринах, 30 дней истории, без карты и без срока. Pro — $20/мес.
Начать бесплатно →