Документация для разработчиков › Справочник API
Эндпоинты ваших приложений
Приложения этого рабочего пространства: позиции, конкуренты, отзывы, страница в сторе, её хронология, подборки, чарты и проверки страницы.
Аутентификация · Кредиты · Общие параметры · Коды ошибок · openapi.json
GET /apps
Список приложений, отслеживаемых в этом аккаунте Storelift (id, название, страны, ключевые слова). Вызывайте первым: остальным инструментам нужен appId отсюда.
curl "https://storelift.net/v1/apps" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/keywords
Позиции одного приложения по ключевым словам в одной стране App Store / Google Play. ТРИ СОСТОЯНИЯ РАЗЛИЧАЮТСЯ: measured=false означает, что запрос не удалось измерить, rank=null — что он измерен, но приложения нет среди верхних результатов, rank=<number> — это позиция. Никогда не сводите их к одному: если считать неизмеренный день нулём, ответ будет ложным.
Также принимает: appId (обязательный) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/keywords?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/rivals
Приложения, которые стоят ВЫШЕ этого приложения в поиске. По каждому конкуренту вы получаете ключевые слова, по которым он вас опережает, его позицию (theirRank) и вашу (ourRank); ourRank null означает, что приложение по этому ключевому слову вообще не показывается.
Также принимает: appId (обязательный) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/rivals?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/ai
Упоминания приложения в датированной выборке ответов ИИ-систем; это не воспроизводит то, что ChatGPT, Claude или Gemini показывают каждому пользователю. Нужны Studio или Enterprise и область доступа ai:read. engines содержит ответы каждой измеренной системы; providers показывает состояния measured, failed или not_measured. Недоступная система — это не нулевая оценка. Смотрите на датированную выборку и число вопросов в ней; это не универсальный рейтинг и не измерение всех ответов, которые получают пользователи.
Также принимает: appId (обязательный) · country
curl "https://storelift.net/v1/apps/sbx-lumen/ai?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/ai-check
Запускает выборку видимости в ИИ для одного приложения в одной стране с системами, доступными для запуска. Нужны Studio или Enterprise и область доступа ai:read; лимит панели на тарифе Pro не даёт доступа к этому инструменту MCP. Расходует один запуск видимости в ИИ из тарифа или купленный; результат возвращает get_ai_visibility. Одновременно для приложения выполняется одно измерение.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
country | query | string | код страны, например tr, us (пусто = первые три страны приложения) |
Также принимает: appId (обязательный)
Помимо кредитов, этот вызов расходует один запуск видимости в ИИ, из тарифа или купленный, поэтому команды для копирования здесь нет.
GET /apps/{appId}/history
История позиций по ключевым словам в одной стране. Точки ряда — [день, позиция]; позиция null означает, что в этот день приложения не было среди верхних результатов, а это не то же самое, что плохая позиция. Тариф Pro.
Также принимает: appId (обязательный) · country
curl "https://storelift.net/v1/apps/sbx-lumen/history?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/page
Сигналы страницы самого приложения в магазине для одной страны (без названия и подзаголовка): версия, события в приложении, редакционные размещения, блоки похожих приложений и набор скриншотов (iOS), а также страница Google Play (точное число установок, гистограмма оценок, признаки рекламы и покупок в приложении, значок чарта). ios.listingExtras содержит языки, которые поддерживает приложение, распределение оценок по звёздам (от 1★ до 5★), текущие и предстоящие события в приложении, рекламный текст и продвигаемые покупки в приложении; во Free в нём число языков, первые 5 языков и распределение по звёздам, а locked показывает, сколько остальных элементов. timeline перечисляет датированные изменения, которые мы обнаружили на странице, — самое простое объяснение сдвига позиции. measured=false означает, что страница ни разу не читалась; это не то же самое, что пустая страница.
Также принимает: appId (обязательный) · country
curl "https://storelift.net/v1/apps/sbx-lumen/page?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/reviews
Недавние отзывы по одной стране: list — отзывы App Store, android — отзывы Google Play (окно короче), каждый с текстом, оценкой и датой. newCount — сколько отзывов пришло с предыдущего измерения; в старой записи приходит null, поэтому читайте его как «неизвестно», а не как ноль. android: null означает, что эта страница Play ждёт первого измерения, а пустой список — что на странице нет отзывов.
Также принимает: appId (обязательный) · country
curl "https://storelift.net/v1/apps/sbx-lumen/reviews?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/charts
Позиция в чартах App Store для одной страны: текущие позиции по спискам (бесплатные / платные / кассовые, общий и в категории) и их история. Google Play отсутствует намеренно: у него нет публичного топа, и цифра здесь была бы выдуманной.
Также принимает: appId (обязательный) · country
curl "https://storelift.net/v1/apps/sbx-lumen/charts?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/reviews/search
Поиск по отзывам одного приложения в одной витрине: по тексту, оценке в звёздах, версии приложения и диапазону дат, сначала новые — до 1000 строк из полного архива отзывов в пределах окна отзывов вашего тарифа. total — число совпадений; truncated сообщает, что совпало больше строк, чем вы запросили.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
q | query | string | текст для поиска в заголовке или тексте отзыва |
rating | query | string | оценки в звёздах через запятую, например 1,2 |
version | query | string | версия приложения, на которой написан отзыв, например 2.4.0 |
from | query | string | первый день, YYYY-MM-DD |
to | query | string | последний день, YYYY-MM-DD |
limit | query | number | строки, до 1000 (по умолчанию 100) |
Также принимает: appId (обязательный) · 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
Распределение оценок в звёздах, среднее и доля отзывов с 1–2 звёздами для одного приложения в одной витрине, а также кривая по дням (количество и среднее за день) и разбивка по версиям — чтобы падение можно было связать с релизом, который его вызвал. По умолчанию последние 90 дней.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
days | query | number | последние N дней, до 365 (по умолчанию 90) |
from | query | string | первый день, YYYY-MM-DD (имеет приоритет над days) |
to | query | string | последний день, YYYY-MM-DD |
Также принимает: appId (обязательный) · 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
ИИ для отзывов по одному приложению в одной витрине: сводка недавних отзывов и тем в них — жалобы, просьбы, похвала — с отзывами, процитированными как подтверждение. В тот же день и для того же набора отзывов сохранённая сводка возвращается без расхода лимита; новая сводка расходует один кредит ИИ для отзывов из месячного лимита (все тарифы; на Free — небольшой объём). Отвечает state: "too_few" с количеством, пока отзывов слишком мало для сводки.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
store | query | ios | android | по умолчанию ios |
lang | query | en | tr | de | es | fr | pt | ru | ja | ko | zh | язык сводки (по умолчанию en) |
Также принимает: appId (обязательный) · country
Помимо кредитов, этот вызов расходует один запуск ИИ для отзывов из месячной квоты, поэтому команды для копирования здесь нет.
GET /apps/{appId}/reviews/reply-draft
Черновик ответа разработчика на один отзыв на языке витрины. Оценка и текст берутся из отзыва, сохранённого у нас, поэтому черновик отвечает на то, что автор действительно написал; note добавляет то, что вы хотите сказать в ответе (вышло исправление, какую настройку попробовать). Возвращается только черновик: ответ публикует reply_review после вашего подтверждения. Расходует один кредит ИИ для отзывов.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
store | query | ios | android | по умолчанию ios |
reviewIdобязательный | query | string | id отзыва из get_reviews или search_reviews |
note | query | string | что должно быть в ответе, например «исправлено в 2.4.1» |
Также принимает: appId (обязательный) · country
Помимо кредитов, этот вызов расходует один запуск ИИ для отзывов, поэтому команды для копирования здесь нет.
GET /apps/{appId}/timeline
Датированные изменения страницы одного приложения в магазине — новая версия, скриншоты, события в приложении, фичеринг со страницы магазина и правки поля ключевых слов из App Store Connect — и для каждого движение позиций по ключевым словам вокруг него: запросы, которые выросли, упали, вошли или выпали между последним измерением до изменения и последним в пределах window дней после, а также пять самых крупных сдвигов.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
window | query | number | сколько дней после каждого изменения читать позиции, до 30 (по умолчанию 7) |
Также принимает: appId (обязательный) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/timeline?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/today
День одного приложения в одном ответе — экран «Сегодня»: покупки, пробные периоды и продления из подключённых источников, новые отзывы, сдвиги позиций и категории относительно вчера, новые приложения выше вас, новые события в приложении и вчерашние цифры App Store, Google Play, чистого дохода и рекламы — каждая с пометкой источника. tz делает «сегодня» собственным днём пользователя.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
tz | query | string | часовой пояс IANA, например Europe/Istanbul (по умолчанию UTC) |
day | query | string | другой день для чтения, YYYY-MM-DD |
Также принимает: appId (обязательный)
curl "https://storelift.net/v1/apps/sbx-lumen/today" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/competition
Сколько приложений конкурирует по каждому ключевому слову в одной витрине; возвращается для запросов, замеченных у двух и более приложений. По умолчанию берутся отслеживаемые ключевые слова приложения; передайте terms, чтобы посчитать кандидатов до начала отслеживания. corpus — размер набора, по которому сделан подсчёт.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
terms | query | string | до 100 запросов через запятую (по умолчанию отслеживаемые ключевые слова) |
Также принимает: appId (обязательный) · country · platform
curl "https://storelift.net/v1/apps/sbx-lumen/competition?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/rivals/{rivalId}
Один конкурент вашего приложения в одной витрине: название, рейтинг и число оценок с их историей за 90 дней (смена названия показывает, что страницу переписали) и ключевые слова, по которым он ранжируется, с позицией по каждому. Список ключевых слов расходует одно использование шпиона ключевых слов из месячного лимита и остаётся открытым 30 дней; когда лимит исчерпан, ответ содержит собственные показатели конкурента и locked: true.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
rivalIdобязательный | path | string | id конкурента из get_rivals |
Также принимает: appId (обязательный) · country · platform
Помимо кредитов, этот вызов расходует один запрос шпиона из месячной квоты, поэтому команды для копирования здесь нет.
GET /apps/{appId}/rivals/{rivalId}/adnetworks
Как конкурент зарабатывает на рекламе: рекламные сети, с которыми он работает, каждая с пометкой DIRECT или RESELLER. Состояние различает случаи: найденные сети, разработчик, который не указывает рекламных сетей (no_file), проверка, которую на этот раз не удалось завершить (unreachable), или страница в магазине без сайта разработчика (no_site). Хранится 14 дней.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
rivalIdобязательный | path | string | id конкурента из get_rivals |
Также принимает: appId (обязательный) · platform
curl "https://storelift.net/v1/apps/sbx-lumen/rivals/1000000001/adnetworks" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/rivals/{rivalId}/market
Рынок конкурента в одной витрине: в Google Play — точное число установок и диапазон цен покупок в приложении, и установки между двумя измерениями, когда их уже два; в App Store — цена, число оценок, дата выпуска и наличие покупок в приложении. Измеряется по запросу и хранится 7 дней.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
rivalIdобязательный | path | string | id конкурента из get_rivals |
Также принимает: appId (обязательный) · 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
Ваша страница iOS во всех витринах App Store: где продаётся приложение, какие витрины показывают резервный текст или резервные скриншоты вместо своих языковых, и вторая локаль, которую индексирует каждая витрина. Возвращает последнюю проверку; refresh: true запускает новую, если последней больше 12 часов, и отвечает 202 с eta в секундах — после этого вызовите ещё раз. Полная таблица доступна на Pro и выше; на Free — предпросмотр.
Также принимает: appId (обязательный)
curl "https://storelift.net/v1/apps/sbx-lumen/storefront-audit" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/suggest
Новые идеи ключевых слов для одного приложения в одной витрине, написанные на языке поиска этой витрины: запросы из 1–3 слов, которые люди вводят в поиске магазина, каждый с пояснением в одну строку — кто его ищет и почему приложение отвечает на эту потребность. Отслеживаемые ключевые слова, скрытые вами слова и названия брендов в список не попадают. Расходует один кредит текстов с ИИ из месячного лимита (Pro и выше); измерьте идеи через get_keyword_metrics, прежде чем отслеживать их.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
cc | query | string | код витрины, например tr, us (по умолчанию первая страна приложения) |
lang | query | en | tr | de | es | fr | pt | ru | ja | ko | zh | язык пояснений (по умолчанию en) |
Также принимает: appId (обязательный)
Помимо кредитов, этот вызов расходует один ИИ-текст из месячной квоты, поэтому команды для копирования здесь нет.
POST /apps/{appId}/validate-listing
Проверяет черновик страницы App Store до отправки в App Store Connect. Сообщает о лимитах символов по полям, о месте в поле ключевых слов, потерянном на пробелы, о повторах, о словах, которые уже есть в названии или подзаголовке, о бренде и словах-заполнителях, о повторах между названием и подзаголовком, о названиях продуктов Apple и словах о цене, о том, написан ли текст на языке и в письменности локали, и о том, какие отслеживаемые ключевые слова приложения не вошли в черновик. Ничего не записывает; передавайте только те поля, которые нужно проверить.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
locale | body | string | локаль страницы, например en-US, de-DE, ja |
country | body | string | страна, по отслеживаемым ключевым словам которой проверяется покрытие, например us (по умолчанию первая страна приложения) |
name | body | string | название приложения, до 30 символов |
subtitle | body | string | подзаголовок, до 30 символов |
keywords | body | string | поле ключевых слов, через запятую, до 100 символов |
promotionalText | body | string | рекламный текст, до 170 символов |
description | body | string | описание, до 4000 символов |
Также принимает: appId (обязательный)
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
Черновик страницы в магазине — заголовок, подзаголовок, рекламный текст и описание — на основе ключевых слов, измеренных для этого приложения в одной витрине, в порядке спроса. К каждому полю прилагается число символов относительно лимита магазина и две проверки для модерации: название продукта Apple в заголовке или подзаголовке (только App Store) и формулировки о цене. termsUsed перечисляет измеренные запросы, на которых построен черновик; excluded — отслеживаемые запросы, которые ещё предстоит измерить. В магазин ничего не записывается — это делает update_listing. Расходует один кредит текстов с ИИ (Pro и выше).
| Параметр | Где | Тип | Описание |
|---|---|---|---|
cc | query | string | код витрины, например tr, us (по умолчанию первая страна приложения) |
Также принимает: appId (обязательный) · platform
Помимо кредитов, этот вызов расходует один ИИ-текст, поэтому команды для копирования здесь нет.
GET /apps/{appId}/localize
Пишет полную страницу App Store для новой локали — название, подзаголовок, поле ключевых слов и описание — на основе исходной страницы приложения, предварительно измерив каждое ключевое слово в этой витрине. Первый вызов запускает работу и отвечает pending (расходуется одно написание страницы из тарифа: Free — 1 всего, Pro — 20, Studio — 75 в месяц); вызывайте снова с poll=true, пока страница не вернётся. С shots=true подписи к скриншотам тоже возвращаются на том же языке. Нужно, чтобы для приложения уже был выполнен get_storefront_audit. В App Store Connect ничего не записывает — это делает update_listing.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
localeобязательный | query | string | целевая локаль, например de_de, pt_br, ja_jp (de-DE тоже подходит) |
Также принимает: appId (обязательный)
Помимо кредитов, этот вызов расходует одну запись страницы из тарифа, поэтому команды для копирования здесь нет.
GET /apps/{appId}/shot-text
Текст подписей на первых четырёх скриншотах вашего приложения в App Store в одной витрине. Apple индексирует текст страницы, поэтому этот текст влияет на конверсию, а не на позицию в поиске — в ответе это отмечено как indexed: false. Хранится, пока скриншоты не изменятся; новое чтение расходует один кредит текстов с ИИ (Pro и выше).
| Параметр | Где | Тип | Описание |
|---|---|---|---|
cc | query | string | код витрины, например tr, us (по умолчанию первая страна приложения) |
Также принимает: appId (обязательный)
Помимо кредитов, этот вызов расходует один ИИ-текст, поэтому команды для копирования здесь нет.
GET /apps/{appId}/chart-movers
Кто сдвинулся в чарте категории приложения: выросшие и упавшие (на 3 и более мест), новички и выбывшие, с названиями, а также места самого приложения и выбранных конкурентов в оба дня. Категория берётся из записи чартов приложения; передайте genre, чтобы посмотреть другую. Тариф Pro.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
kind | query | free | paid | grossing | чарт (по умолчанию free) |
genre | query | string | id жанра App Store, например 6013 (по умолчанию категория самого приложения) |
days | query | number | сравнить с данными столько дней назад, 1-90 (по умолчанию 1) |
limit | query | number | строк на группу, до 100 (по умолчанию 25) |
Также принимает: appId (обязательный) · country
curl "https://storelift.net/v1/apps/sbx-lumen/chart-movers?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}/featuring
Где Apple показывает приложение сегодня, по странам: редакционные карточки (dedicated: true, когда материал посвящён этому приложению, false — когда оно входит в подборку), текущие и запланированные события в приложении, блок Apple You Might Also Like и датированная история фичеринга и новых событий. Оставьте country пустым, чтобы получить все страны, которые отслеживает приложение.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
country | query | string | код страны, например tr, us (пусто = все страны, которые отслеживает приложение) |
Также принимает: appId (обязательный)
curl "https://storelift.net/v1/apps/sbx-lumen/featuring?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"GET /apps/{appId}
Одно отслеживаемое приложение с id платформ, странами, отслеживаемыми ключевыми словами по странам и последним снимком измерений (таблицы ключевых слов по странам). Сначала получите appId через list_apps.
Также принимает: appId (обязательный)
curl "https://storelift.net/v1/apps/sbx-lumen" \
-H "Authorization: Bearer $STORELIFT_API_KEY"Пример ответа
GET /apps/{appId}/weekly-plan
Предложения этой недели по странице приложения — тот же список, что в карточке «На этой неделе» в панели, сначала лучшие. Предложение появляется, только если проходит строгие проверки: ключевое слово попадает в заголовок или подзаголовок, только если это основной запрос ниши приложения с высоким спросом, приложение уже занимает по нему места 4–15, приложения конкурентов выше содержат его в названии и оно помещается без потери бренда и всего, что уже ранжируется; нишевые и низкочастотные ключевые слова идут максимум в поле ключевых слов и только при наличии места; другие категории, другие языки и ключевые слова, от которых пользователь отказался, не появляются никогда; ничего не предлагается, пока недавнее изменение страницы ещё не устоялось (settling сообщает, до какого дня). В каждой задаче есть формулировка, текущий и предлагаемый текст, добавляемые и удаляемые слова, причины (измеренные факты), компромисс и уровень уверенности. Без country все витрины объединяются, и одно и то же изменение становится одной задачей со списком стран. Часто список пуст — так и задумано. Тариф Pro.
| Параметр | Где | Тип | Описание |
|---|---|---|---|
country | query | string | одна витрина, например tr, us (не указывайте, чтобы объединить все витрины) |
goal | query | downloads | rank | revenue | принимается для совместимости; предложения упорядочены по ожидаемой ценности |
platform | query | ios | android | магазин (по умолчанию ios) |
limit | query | integer | сколько задач вернуть, 1–10 (по умолчанию 5) |
Также принимает: appId (обязательный)
curl "https://storelift.net/v1/apps/sbx-lumen/weekly-plan?country=us" \
-H "Authorization: Bearer $STORELIFT_API_KEY"