URL de base : https://apkapi.top/api/v1. Inscrivez-vous, créez une clé API dans votre compte et envoyez votre première requête :
Description de l'API lisible par machine : OpenAPI 3.1 · collection Postman — importez-la dans Postman, Insomnia ou un générateur de clients (openapi-generator) pour obtenir un SDK prêt à l'emploi dans votre langage.
curl -H "X-API-Key: VOTRE_CLE" "https://apkapi.top/api/v1/app?id=com.whatsapp"
Les données couvrent plus de 4 millions d'applications Google Play de la vitrine américaine en anglais (d'un autre pays si l'application n'est pas disponible aux États-Unis), actualisées chaque nuit. Les applications qui disparaissent du store restent dans la base avec leurs dernières données.
Chaque requête, sauf /v1/health, doit inclure la clé API dans un en-tête :
X-API-Key: ak_live_…
Également accepté : Authorization: Bearer …. Il est interdit de passer la clé dans les paramètres d'URL : elle se retrouverait dans les journaux et l'historique du navigateur.
Chaque appel coûte 0 à 3 jetons selon le point de terminaison, quel que soit le nombre de lignes de la réponse (jusqu’à 100) ; l’appel groupé apps coûte 1 jeton par app. Les jetons mensuels sont utilisés d’abord, puis les jetons achetés. Si une requête échoue de notre côté, les jetons sont rendus. Offres et packs
| En-tête | Signification |
|---|---|
X-Tokens-Cost | jetons coûtés par cette requête |
X-Tokens-Remaining | jetons restants (mensuels + achetés) |
X-Cache | HIT — servi depuis le cache (plus rapide), MISS — nouvelle requête à l'index |
X-RateLimit-Limit / -Remaining | la limite par minute de la clé et ce qu'il reste |
X-Plan | free | pro | business |
Vos jetons restants figurent aussi dans le champ _tokens de chaque réponse et dans /v1/account (gratuit). Les anciens noms _credits et X-Credits-* sont obsolètes, mais fonctionnent encore.
Chaque réponse contient le champ ok. Les listes contiennent results, total, page, per, pages. Erreur : ok = false, error est l'explication, code un code lisible par machine. Les dates sont en 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 | Quand |
|---|---|---|
| 400 | invalid_param, invalid_request | paramètre invalide ou manquant |
| 401 | missing_api_key, invalid_api_key | pas de clé, ou clé révoquée |
| 402 | insufficient_credits | jetons insuffisants : achetez un pack |
| 403 | account_blocked, plan_required | le compte est bloqué, ou le point de terminaison s’ouvre après le premier achat de jetons |
| 404 | not_found | l'application ou le développeur n'est pas dans la base, ou l'endpoint est inconnu |
| 429 | rate_limited | limite de requêtes par minute dépassée |
| 503 | service_unavailable | problème temporaire de la base — réessayez plus tard ; aucun jeton n'est débité |
Tous les endpoints sont GET /api/v1/{nom}. Pagination : page (à partir de 1) et per (1–100), jusqu'au 10 000e résultat. Tri : sort + order=asc|desc.
Votre offre, le solde de jetons, la date de renouvellement mensuel et la limite par minute.
La fiche complète de l'application : titre, description, nouveautés, installations (palier et nombre exact), note, nombre de notes et d'avis, répartition des étoiles, prix, achats intégrés, publicités, catégorie, classification, version, Android minimal, dates de sortie et de mise à jour, icône, captures, vidéo, développeur et son site. Pour les applications supprimées : les dernières données enregistrées et la date de disparition.
id * | nom de package de l'application |
Jusqu'à 100 applications en un appel : GET ?ids=a,b,c ou POST avec la liste dans le corps (une par ligne ou JSON {"ids": […]}). 1 jeton par application ; celles introuvables reviennent dans not_found.
ids * | noms de package séparés par des virgules, jusqu'à 100 |
Recherche et filtres sur toute la base. Au moins un filtre est requis. Sans q, le tri se fait par installations.
q | mots à rechercher dans le titre, la description et le nom du développeur |
category | ID de catégorie, p. ex. GAME_PUZZLE (voir /v1/categories) |
developer_id | ID du développeur sur Google Play |
min_installs | installations minimum (paliers Google Play : 1000, 10000…) |
max_installs | installations maximum |
min_score | note minimale, 0–5 |
min_ratings | notes minimum |
free | true — gratuites uniquement, false — payantes uniquement |
ads | true — avec publicités, false — sans |
iap | true — avec achats intégrés |
lang | langue du titre, code ISO : en, de, pt… |
released_from | sorties à partir de cette date, YYYY-MM-DD |
released_to | sorties jusqu'à cette date incluse |
updated_from | mises à jour à partir de cette date |
updated_to | mises à jour jusqu'à cette date incluse |
status | live (dans le store, par défaut), removed ou all |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
order | desc | asc |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Suggestions selon le début du titre : les 10 résultats les plus populaires. Gratuit.
q * | début du titre, 2 caractères minimum |
Un développeur et toutes ses applications : nombre (dans le store et supprimées), installations totales, note moyenne, première sortie, catégories, site. Avec l'offre Business : e-mail, téléphone, adresse et raison sociale.
id | ID du développeur (depuis une fiche : developer.id) |
name | ou le nom exact du développeur |
status | all (par défaut), live ou removed |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Nouvelles applications par date de première sortie, les plus récentes d'abord.
since | à partir de cette date, YYYY-MM-DD (par défaut : il y a 7 jours) |
until | jusqu'à cette date incluse |
category | ID de catégorie, p. ex. GAME_PUZZLE (voir /v1/categories) |
min_installs | installations minimum (paliers Google Play : 1000, 10000…) |
lang | langue du titre, code ISO : en, de, pt… |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Applications disparues de Google Play (absentes des 19 pays que nous vérifions), par date de disparition. La fiche conserve les dernières données.
since | à partir de cette date, YYYY-MM-DD (par défaut : il y a 7 jours) |
until | jusqu'à cette date incluse |
category | ID de catégorie, p. ex. GAME_PUZZLE (voir /v1/categories) |
min_installs | installations minimum (paliers Google Play : 1000, 10000…) |
sort | removed_at | installs | score |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Mots et expressions des titres d'applications par langue : nombre d'applications et de développeurs qui les utilisent, combien sont fortes (100 k+ installations), installations totales, part du leader et un score d'opportunité.
lang | langue, par défaut en |
q | mot ou expression |
phrase | true — expressions de deux mots uniquement, false — mots seuls uniquement |
min_apps | applications minimum |
max_apps | applications maximum |
sort | opportunity | apps | installs | strong | devs | max_installs |
order | desc | asc |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Toutes les catégories avec le nombre d'applications et les installations totales. Gratuit.
status | live (dans le store, par défaut), removed ou all |
Apps dont le domaine du site du développeur est libre à l’enregistrement, avec la popularité de l’app. Accessible après le premier achat de jetons.
category | ID de catégorie, p. ex. GAME_PUZZLE (voir /v1/categories) |
min_installs | installations minimum (paliers Google Play : 1000, 10000…) |
status | live (dans le store, par défaut), removed ou all |
tld | extension de domaine, p. ex. com |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Un classement Google Play pour un pays et une catégorie : jusqu'à 200 positions, évolution depuis le relevé précédent (change : de combien de places elle est montée, "new" pour les nouvelles entrées), icône et installations.
country * | pays, code ISO : US, DE, BR… |
category * | catégorie, p. ex. GAME_PUZZLE |
collection | free | paid | grossing |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Tous les classements où figure l'application dans le dernier relevé : pays, catégorie, collection, position ; nombre de classements et de pays, meilleure position.
id * | nom de package de l'application |
country | un seul pays |
collection | free | paid | grossing |
Pays où l'application est disponible sur Google Play (d'après le hreflang du sitemap du store). Au-delà de 190 pays, worldwide = true est renvoyé sans liste.
id * | nom de package de l'application |
Concurrence des marchés selon les classements gratuits : seuil d'entrée du top 100 et du top 200 (installations de l'application à cette position), part des applications nouvelles (12 mois) et locales (≤3 pays) dans le top, taille du marché local. Sans paramètre : tous les pays ; country : les catégories d'un pays ; category : une catégorie dans tous les pays.
country | pays, code ISO |
category | ID de catégorie, p. ex. GAME_PUZZLE (voir /v1/categories) |
sort | entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new |
order | desc | asc |
page | page, à partir de 1 |
per | lignes par page, 1–100 (par défaut 20) |
Taille de la base : applications dans le store et supprimées, développeurs, nouvelles et supprimées sur 7 jours, heure de la dernière mise à jour. Gratuit.
* — paramètre obligatoire
# curl — one app
curl -H "X-API-Key: $KEY" "https://apkapi.top/api/v1/app?id=org.telegram.messenger"
# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apkapi.top/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.top/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apkapi.top/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+ (sur le serveur — pas dans le navigateur)
const res = await fetch("https://apkapi.top/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.top/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;
Vous pouvez créer une clé dans votre compte. La requête part directement de votre navigateur. La clé n'est stockée nulle part et disparaît au rechargement de la page. Les requêtes depuis la console consomment des jetons comme les autres.