Документація Open Play Archive

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

Швидкий старт

Базова адреса: https://apiapk.org/api/v1. Зареєструйтесь, створіть API-ключ у кабінеті й надішліть перший запит:

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

curl -H "X-API-Key: ВАШ_КЛЮЧ" "https://apiapk.org/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-Credits-Costскільки кредитів коштував цей запит
X-Credits-Remainingскільки кредитів лишилося (тариф + баланс)
X-CacheHIT — відповідь із кешу (швидше), MISS — свіжий запит до індексу
X-RateLimit-Limit / -Remainingліміт запитів на хвилину для ключа та залишок
X-Planfree | pro | scale | business

Залишок кредитів також є в полі _credits кожної відповіді та в /v1/account (безкоштовно).

Формат відповіді та помилки

Кожна відповідь має поле 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 }, … },
  "_credits": { "cost": 1, "plan_remaining": 1999, "balance": 0, "available": 1999, "cached": false } }

{ "ok": false, "code": "insufficient_credits", "error": "Not enough credits: 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 — email, телефон, адреса й юридична назва.

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 кред.Pro+

Застосунки, у яких домен сайту розробника вільний для реєстрації, з популярністю застосунку. Тариф Pro і вище.

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://apiapk.org/api/v1/app?id=org.telegram.messenger"

# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apiapk.org/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://apiapk.org/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apiapk.org/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("credits left:", data["_credits"]["available"])
// Node.js 18+ (на сервері — не у браузері)
const res = await fetch("https://apiapk.org/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://apiapk.org/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;

Спробувати

Ключ можна створити в кабінеті. Запит іде прямо з вашого браузера. Ключ ніде не зберігається й зникає після перезавантаження сторінки. Запити з консолі витрачають кредити так само, як звичайні.