Базовый адрес: https://apkapi.com/api/v1. Зарегистрируйтесь, создайте API-ключ в кабинете и отправьте первый запрос:
Машинное описание API: OpenAPI 3.1 · коллекция Postman — импортируйте в Postman, Insomnia или генератор клиентов (openapi-generator) и получите готовый SDK для своего языка.
curl -H "X-API-Key: ВАШ_КЛЮЧ" "https://apkapi.com/api/v1/app?id=com.whatsapp"
Данные — более 4 млн приложений Google Play из американской витрины на английском языке (если приложения там нет — из другой страны), обновление каждую ночь. Приложения, исчезнувшие из магазина, остаются в базе с последними данными.
Каждый запрос, кроме /v1/health, должен содержать API-ключ в заголовке:
X-API-Key: ak_live_…
Также принимается: Authorization: Bearer …. Передавать ключ в параметрах URL нельзя: он попал бы в логи и историю браузера.
Каждый вызов стоит 0–3 токена в зависимости от эндпоинта, независимо от количества строк в ответе (до 100); пакетный запрос apps — 1 токен за приложение. Сначала тратятся ежемесячные токены, затем купленные. Если запрос не удался по нашей вине, токены возвращаются. Тарифы и пакеты
| Заголовок | Значение |
|---|---|
X-Tokens-Cost | сколько токенов стоил этот запрос |
X-Tokens-Remaining | сколько токенов осталось (ежемесячные + купленные) |
X-Cache | HIT — ответ из кэша (быстрее), MISS — свежий запрос к индексу |
X-RateLimit-Limit / -Remaining | лимит запросов в минуту для ключа и остаток |
X-Plan | free | pro | business |
Остаток токенов также есть в поле _tokens каждого ответа и в /v1/account (бесплатно). Старые названия _credits и X-Credits-* устарели, но пока работают.
Каждый ответ содержит поле ok. Списки содержат results, total, page, per, pages. Ошибка: ok = false, error — пояснение, code — машинный код. Даты — ISO 8601 в UTC.
{ "ok": true, "app": { "id": "com.whatsapp", "title": "WhatsApp", "installs": { "label": "10,000,000,000+", "min": 10000000000, "real": 12445120489 }, … },
"_tokens": { "cost": 1, "monthly_remaining": 999, "balance": 0, "available": 999, "cached": false } }
{ "ok": false, "code": "insufficient_credits", "error": "Not enough tokens: this call costs 2, you have 1. …" }
| HTTP | code | Когда возникает |
|---|---|---|
| 400 | invalid_param, invalid_request | неверный или отсутствующий параметр |
| 401 | missing_api_key, invalid_api_key | нет ключа или он отозван |
| 402 | insufficient_credits | недостаточно токенов — купите пакет |
| 403 | account_blocked, plan_required | аккаунт заблокирован, либо эндпоинт открывается после первой покупки токенов |
| 404 | not_found | приложения или разработчика нет в базе, либо неизвестный эндпоинт |
| 429 | rate_limited | превышен лимит запросов в минуту |
| 503 | service_unavailable | временная проблема с базой — повторите позже; токены не списываются |
Все эндпоинты — GET /api/v1/{название}. Пагинация: page (с 1) и per (1–100), не дальше 10 000-го результата. Сортировка: sort + order=asc|desc.
Ваш тариф, баланс токенов, дата обновления ежемесячных токенов и лимит в минуту.
Полная карточка приложения: название, описание, «Что нового», установки (порог и точное число), оценка, количество оценок и отзывов, распределение звёзд, цена, покупки, реклама, категория, возрастной рейтинг, версия, минимальный Android, даты релиза и обновления, иконка, скриншоты, видео, разработчик и его сайт. Для удалённых — последние сохранённые данные и дата исчезновения.
id * | название пакета приложения |
До 100 карточек одним запросом: GET ?ids=a,b,c или POST со списком в теле (по одному на строку или JSON {"ids": […]}). 1 токен за каждое приложение; ненайденные возвращаются в not_found.
ids * | названия пакетов через запятую, до 100 |
Поиск и фильтры по всей базе. Нужен хотя бы один фильтр. Без q сортировка — по установкам.
q | слова для поиска в названии, описании и имени разработчика |
category | ID категории, напр. GAME_PUZZLE (см. /v1/categories) |
developer_id | ID разработчика в Google Play |
min_installs | минимум установок (порог Google Play: 1000, 10000…) |
max_installs | максимум установок |
min_score | минимальная оценка, 0–5 |
min_ratings | минимум оценок |
free | true — только бесплатные, false — только платные |
ads | true — с рекламой, false — без |
iap | true — с покупками в приложении |
lang | язык названия, ISO-код: en, de, pt… |
released_from | вышли с даты, YYYY-MM-DD |
released_to | вышли до даты включительно |
updated_from | обновлены с даты |
updated_to | обновлены до даты включительно |
status | live (в магазине, по умолчанию), removed или all |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
order | desc | asc |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Подсказки по началу названия: 10 самых популярных совпадений. Бесплатно.
q * | начало названия, от 2 символов |
Разработчик и все его приложения: количество (в магазине и удалённых), суммарные установки, средняя оценка, первый релиз, категории, сайт. На тарифе Business — email, телефон, адрес и юридическое название.
id | ID разработчика (из карточки приложения: developer.id) |
name | или точное имя разработчика |
status | all (по умолчанию), live или removed |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Новые приложения по дате первого релиза, самые свежие — первыми.
since | с даты, YYYY-MM-DD (по умолчанию 7 дней назад) |
until | до даты включительно |
category | ID категории, напр. GAME_PUZZLE (см. /v1/categories) |
min_installs | минимум установок (порог Google Play: 1000, 10000…) |
lang | язык названия, ISO-код: en, de, pt… |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Приложения, исчезнувшие из Google Play (нет ни в одной из 19 стран, которые мы проверяем), по дате исчезновения. Карточка хранит последние данные.
since | с даты, YYYY-MM-DD (по умолчанию 7 дней назад) |
until | до даты включительно |
category | ID категории, напр. GAME_PUZZLE (см. /v1/categories) |
min_installs | минимум установок (порог Google Play: 1000, 10000…) |
sort | removed_at | installs | score |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Слова и фразы из названий приложений отдельно для каждого языка: сколько приложений и разработчиков их используют, сколько из них сильных (100 тыс.+ установок), суммарные установки, доля лидера и оценка возможности (opportunity).
lang | язык, по умолчанию en |
q | слово или фраза |
phrase | true — только фразы из двух слов, false — только отдельные слова |
min_apps | минимум приложений |
max_apps | максимум приложений |
sort | opportunity | apps | installs | strong | devs | max_installs |
order | desc | asc |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Все категории с количеством приложений и суммарными установками. Бесплатно.
status | live (в магазине, по умолчанию), removed или all |
Приложения, у которых домен сайта разработчика свободен для регистрации, с популярностью приложения. Открывается после первой покупки токенов.
category | ID категории, напр. GAME_PUZZLE (см. /v1/categories) |
min_installs | минимум установок (порог Google Play: 1000, 10000…) |
status | live (в магазине, по умолчанию), removed или all |
tld | доменная зона, напр. com |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Топ-чарт Google Play одной страны и категории: до 200 позиций, изменение места относительно предыдущего снимка (change: на сколько поднялось, "new" — новое в чарте), иконка и установки.
country * | страна, ISO-код: US, DE, BR… |
category * | категория, напр. GAME_PUZZLE |
collection | free | paid | grossing |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Все чарты, в которых приложение есть в последнем снимке: страна, категория, коллекция, место; количество чартов, стран и лучшее место.
id * | название пакета приложения |
country | только одна страна |
collection | free | paid | grossing |
Страны, где приложение доступно в Google Play (по hreflang в sitemap магазина). Если стран 190+, возвращается worldwide = true без списка.
id * | название пакета приложения |
Конкуренция рынков по бесплатным чартам: порог входа в топ-100 и топ-200 (установки приложения на этом месте), доля новых (за 12 месяцев) и локальных (≤3 страны) приложений в топе, размер локального рынка. Без параметров — все страны; country — категории одной страны; category — одна категория во всех странах.
country | страна, ISO-код |
category | ID категории, напр. GAME_PUZZLE (см. /v1/categories) |
sort | entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new |
order | desc | asc |
page | страница, с 1 |
per | строк на странице, 1–100 (по умолчанию 20) |
Размер базы: приложения в магазине и удалённые, разработчики, новые и удалённые за 7 дней, время последнего обновления. Бесплатно.
* — обязательный параметр
# curl — one app
curl -H "X-API-Key: $KEY" "https://apkapi.com/api/v1/app?id=org.telegram.messenger"
# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apkapi.com/api/v1/search?category=GAME_PUZZLE&min_installs=10000000&sort=score"
# curl — up to 100 apps in one call (POST, one package per line)
curl -H "X-API-Key: $KEY" --data-binary $'com.whatsapp\norg.telegram.messenger' "https://apkapi.com/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apkapi.com/api/v1/removed",
params={"since": "2026-10-20", "min_installs": 100000, "per": 100},
headers={"X-API-Key": os.environ["KEY"]}, timeout=30)
r.raise_for_status()
data = r.json()
for app in data["results"]:
print(app["removed_seen_at"], app["id"], app["installs"]["label"])
print("tokens left:", data["_tokens"]["available"])
// Node.js 18+ (на сервере — не в браузере)
const res = await fetch("https://apkapi.com/api/v1/developer?id=5191370068110375942", { headers: { "X-API-Key": process.env.KEY } });
const d = await res.json();
if (!d.ok) throw new Error(d.error);
console.log(d.developer.name, d.developer.apps, d.developer.total_installs);
// PHP
$ch = curl_init('https://apkapi.com/api/v1/keywords?lang=en&q=vpn&per=50');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('KEY')]]);
$d = json_decode(curl_exec($ch), true);
foreach ($d['results'] as $k) echo $k['keyword'], ' — ', $k['apps'], PHP_EOL;
Ключ можно создать в кабинете. Запрос отправляется прямо из вашего браузера. Ключ нигде не сохраняется и исчезает после перезагрузки страницы. Запросы из консоли тратят токены так же, как обычные.