Документация на APK Surge

REST API с данни от Google Play: 4 млн. приложения, разработчици, нови и премахнати приложения, ключови думи от заглавията. Формат — JSON, кодиране UTF-8, CORS е включен.

Бърз старт

Базов адрес: https://apksurge.com/api/v1. Регистрирайте се, създайте API ключ в профила и изпратете първата си заявка:

Машинно описание на API: OpenAPI 3.1 · колекция за Postman — импортирайте я в Postman, Insomnia или генератор на клиенти (openapi-generator) и ще получите готов SDK за вашия език.

curl -H "X-API-Key: ВАШИЯТ_КЛЮЧ" "https://apksurge.com/api/v1/app?id=com.whatsapp"

Данните обхващат над 4 млн. приложения в Google Play от американската витрина на английски (ако приложението го няма там — от друга държава), обновяване всяка нощ. Приложенията, изчезнали от магазина, остават в базата с последните си данни.

Автентикация

Всяка заявка, освен /v1/health, трябва да съдържа API ключ в хедъра:

X-API-Key: ak_live_…

Приема се също: Authorization: Bearer …. Не може да предавате ключа в параметрите на URL: така той би попаднал в логовете и в историята на браузъра.

Пазете ключа на своя сървър. Ако го вградите в JavaScript на страницата, всеки посетител ще може да го копира. Заявките от фронтенда изпращайте през своя бекенд.

Токени и лимити

Всяко извикване струва 0–3 токена в зависимост от крайната точка, независимо от броя редове в отговора (до 100); пакетната заявка apps — 1 токен за приложение. Първо се харчат месечните токени, после закупените. Ако заявката се провали по наша вина, токените се връщат. Планове и пакети

ХедърЗначение
X-Tokens-Costколко токена струва тази заявка
X-Tokens-Remainingколко токена остават (месечни + закупени)
X-CacheHIT — отговор от кеша (по-бързо), MISS — нова заявка към индекса
X-RateLimit-Limit / -Remainingлимит на заявките в минута за ключа и остатък
X-Planfree | 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. …" }
HTTPcodeКога възниква
400invalid_param, invalid_requestневалиден или липсващ параметър
401missing_api_key, invalid_api_keyняма ключ или ключът е отменен
402insufficient_creditsнедостатъчно токени — купете пакет
403account_blocked, plan_requiredакаунтът е блокиран или крайната точка се отключва след първата покупка на токени
404not_foundприложението или разработчикът го няма в базата, или крайната точка е неизвестна
429rate_limitedнадвишен е лимитът на заявките в минута
503service_unavailableвременен проблем с базата — опитайте по-късно; токени не се таксуват

Крайни точки

Всички крайни точки са GET /api/v1/{име}. Странициране: page (от 1) и per (1–100), до 10 000-ия резултат. Сортиране: sort + order=asc|desc.

GET/api/v1/accountбезплатно

Вашият план, баланс на токените, дата на подновяване на месечните токени и лимит за минута.

Приложения
GET/api/v1/app 1 ток.

Пълна карта на приложението: заглавие, описание, „Какво е новото“, инсталации (праг и точно число), оценка, брой оценки и отзиви, разпределение на звездите, цена, покупки, реклами, категория, възрастов рейтинг, версия, минимален Android, дати на издаване и обновяване, икона, екранни снимки, видео, разработчик и неговият сайт. За премахнатите — последните запазени данни и дата на изчезване.

id *име на пакета на приложението
GET · POST/api/v1/apps 1 токен за приложение

До 100 карти с една заявка: GET ?ids=a,b,c или POST със списък в тялото (по един на ред или JSON {"ids": […]}). 1 токен за всяко приложение; ненамерените се връщат в not_found.

ids *имена на пакети, разделени със запетая, до 100
GET/api/v1/suggest безплатно

Подсказки по началото на заглавието: 10-те най-популярни съвпадения. Безплатно.

q *начало на заглавието, от 2 знака
Разработчици
GET/api/v1/developer 2 ток.

Разработчик и всичките му приложения: брой (в магазина и премахнати), общо инсталации, средна оценка, първо издаване, категории, сайт. В план Business — имейл, телефон, адрес и юридическо име.

idID на разработчика (от картата на приложението: developer.id)
nameили точното име на разработчика
statusall (по подразбиране), live или removed
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageстраница, от 1
perредове на страница, 1–100 (по подразбиране 20)
Промени в магазина
GET/api/v1/new 2 ток.

Нови приложения по дата на първо издаване, най-новите първи.

sinceот дата, YYYY-MM-DD (по подразбиране преди 7 дни)
untilдо тази дата включително
categoryID на категория, напр. GAME_PUZZLE (вж. /v1/categories)
min_installsминимум инсталации (праг на Google Play: 1000, 10000…)
langезик на заглавието, ISO код: en, de, pt…
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageстраница, от 1
perредове на страница, 1–100 (по подразбиране 20)
GET/api/v1/removed 2 ток.

Приложения, изчезнали от Google Play (няма ги в нито една от 19-те държави, които проверяваме), по дата на изчезване. Картата запазва последните данни.

sinceот дата, YYYY-MM-DD (по подразбиране преди 7 дни)
untilдо тази дата включително
categoryID на категория, напр. GAME_PUZZLE (вж. /v1/categories)
min_installsминимум инсталации (праг на Google Play: 1000, 10000…)
sortremoved_at | installs | score
pageстраница, от 1
perредове на страница, 1–100 (по подразбиране 20)
Пазар
GET/api/v1/keywords 2 ток.

Думи и фрази от заглавията на приложенията поотделно за всеки език: колко приложения и разработчици ги използват, колко от тях са силни (100 хил.+ инсталации), общо инсталации, дял на лидера и оценка на възможността (opportunity).

langезик, по подразбиране en
qдума или фраза
phrasetrue — само фрази от две думи, false — само отделни думи
min_appsминимум приложения
max_appsмаксимум приложения
sortopportunity | apps | installs | strong | devs | max_installs
orderdesc | asc
pageстраница, от 1
perредове на страница, 1–100 (по подразбиране 20)
GET/api/v1/categories безплатно

Всички категории с брой приложения и общо инсталации. Безплатно.

statuslive (в магазина, по подразбиране), removed или all
GET/api/v1/free_domains 3 ток.след първата покупка

Приложения, на които домейнът на сайта на разработчика е свободен за регистрация, с популярността на приложението. Отключва се след първата покупка на токени.

categoryID на категория, напр. GAME_PUZZLE (вж. /v1/categories)
min_installsминимум инсталации (праг на Google Play: 1000, 10000…)
statuslive (в магазина, по подразбиране), removed или all
tldдомейн зона, напр. com
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageстраница, от 1
perредове на страница, 1–100 (по подразбиране 20)
GET/api/v1/charts 2 ток.

Топ класация на Google Play за една държава и категория: до 200 позиции, промяна на мястото спрямо предишната снимка (change: с колко места се е качило, "new" — ново в класацията), икона и инсталации.

country *държава, ISO код: US, DE, BR…
category *категория, напр. GAME_PUZZLE
collectionfree | paid | grossing
pageстраница, от 1
perредове на страница, 1–100 (по подразбиране 20)
GET/api/v1/rankings 1 ток.

Всички класации, в които приложението е в последната снимка: държава, категория, колекция, позиция; брой класации, държави и най-добра позиция.

id *име на пакета на приложението
countryсамо една държава
collectionfree | paid | grossing
GET/api/v1/availability 1 ток.

Държави, в които приложението е налично в Google Play (по hreflang в sitemap на магазина). При 190+ държави се връща worldwide = true без списък.

id *име на пакета на приложението
GET/api/v1/markets 1 ток.

Конкурентност на пазарите по безплатните класации: праг за влизане в топ 100 и топ 200 (инсталации на приложението на това място), дял на новите (за 12 месеца) и локалните (≤3 държави) приложения в топа, размер на локалния пазар. Без параметри — всички държави; country — категориите на една държава; category — една категория във всички държави.

countryдържава, ISO код
categoryID на категория, напр. GAME_PUZZLE (вж. /v1/categories)
sortentry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new
orderdesc | asc
pageстраница, от 1
perредове на страница, 1–100 (по подразбиране 20)
GET/api/v1/stats безплатно

Размер на базата: приложения в магазина и премахнати, разработчици, нови и премахнати за 7 дни, час на последното обновяване. Безплатно.

* — задължителен параметър

Примери с код

# curl — one app
curl -H "X-API-Key: $KEY" "https://apksurge.com/api/v1/app?id=org.telegram.messenger"

# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apksurge.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://apksurge.com/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apksurge.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://apksurge.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://apksurge.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;

Опитай

Ключ можете да създадете в профила. Заявката се изпраща директно от вашия браузър. Ключът не се съхранява никъде и изчезва след презареждане на страницата. Заявките от конзолата харчат токени като всички останали.