APK API-documentatie

REST API met Google Play-gegevens: 4 miljoen apps, ontwikkelaars, nieuwe en verwijderde apps, titeltrefwoorden. Formaat: JSON, UTF-8-codering, CORS ingeschakeld.

Snelstart

Basis-URL: https://apkapi.com/api/v1. Registreer, maak een API-sleutel aan in uw account en stuur uw eerste verzoek:

Machineleesbare API-beschrijving: OpenAPI 3.1 · Postman-collectie — importeer hem in Postman, Insomnia of een clientgenerator (openapi-generator) en u krijgt een kant-en-klare SDK voor uw taal.

curl -H "X-API-Key: UW_SLEUTEL" "https://apkapi.com/api/v1/app?id=com.whatsapp"

De gegevens omvatten meer dan 4 miljoen Google Play-apps uit de Amerikaanse storefront in het Engels (uit een ander land als een app niet in de VS beschikbaar is), elke nacht ververst. Apps die uit de store verdwijnen, blijven met hun laatste gegevens in de database.

Authenticatie

Elk verzoek, behalve /v1/health, moet de API-sleutel in een header bevatten:

X-API-Key: ak_live_…

Ook geaccepteerd: Authorization: Bearer …. De sleutel doorgeven in URL-parameters is niet toegestaan: hij zou in logs en de browsergeschiedenis terechtkomen.

Bewaar de sleutel op uw eigen server. Als u hem in JavaScript op de pagina inbouwt, kan elke bezoeker hem kopiëren. Laat verzoeken vanuit de frontend via uw eigen backend lopen.

Tokens en limieten

Elke aanroep kost 0–3 tokens, afhankelijk van het endpoint, ongeacht het aantal rijen in het antwoord (tot 100); de batchaanroep apps kost 1 token per app. Eerst worden de maandelijkse tokens gebruikt, daarna de gekochte. Mislukt een verzoek door een fout van onze kant, dan worden de tokens teruggegeven. Plannen en pakketten

HeaderBetekenis
X-Tokens-Costhoeveel tokens dit verzoek kostte
X-Tokens-Remaininghoeveel tokens er over zijn (maandelijks + gekocht)
X-CacheHIT — antwoord uit de cache (sneller), MISS — nieuwe query naar de index
X-RateLimit-Limit / -Remainingde limiet per minuut van de sleutel en wat er nog over is
X-Planfree | pro | business

Uw resterende tokens staan ook in het veld _tokens van elk antwoord en in /v1/account (gratis). De oude namen _credits en X-Credits-* zijn verouderd, maar werken nog.

Antwoordformaat en fouten

Elk antwoord heeft een veld ok. Lijsten bevatten results, total, page, per, pages. Fout: ok = false, error is de uitleg, code is een machineleesbare code. Datums zijn ISO 8601 in 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. …" }
HTTPcodeWanneer
400invalid_param, invalid_requestongeldige of ontbrekende parameter
401missing_api_key, invalid_api_keygeen sleutel, of de sleutel is ingetrokken
402insufficient_creditsonvoldoende tokens — koop een pakket
403account_blocked, plan_requiredhet account is geblokkeerd, of het endpoint wordt geopend na de eerste tokenaankoop
404not_foundde app of ontwikkelaar staat niet in de database, of het endpoint is onbekend
429rate_limitedlimiet voor verzoeken per minuut overschreden
503service_unavailableeen tijdelijk probleem met de database — probeer het later opnieuw; er worden geen tokens afgeschreven

Endpoints

Alle endpoints zijn GET /api/v1/{naam}. Paginering: page (vanaf 1) en per (1–100), tot en met het 10.000e resultaat. Sorteren: sort + order=asc|desc.

GET/api/v1/accountgratis

Uw plan, tokensaldo, de vernieuwingsdatum van de maandelijkse tokens en de limiet per minuut.

Apps
GET/api/v1/app 1 tok.

De volledige appgegevens: titel, beschrijving, “Wat is er nieuw”, installaties (drempel en exact aantal), beoordeling, aantal beoordelingen en reviews, sterrenverdeling, prijs, in-app-aankopen, advertenties, categorie, leeftijdsclassificatie, versie, minimale Android-versie, release- en updatedatums, pictogram, screenshots, video, ontwikkelaar en diens website. Voor verwijderde apps: de laatst opgeslagen gegevens en de verwijderdatum.

id *pakketnaam van de app
GET · POST/api/v1/apps 1 token per app

Tot 100 apps per verzoek: GET ?ids=a,b,c of POST met de lijst in de body (één per regel, of JSON {"ids": […]}). 1 token per app; onbekende id's komen terug in not_found.

ids *pakketnamen gescheiden door komma's, tot 100
GET/api/v1/suggest gratis

Suggesties op het begin van een titel: de 10 populairste treffers. Gratis.

q *begin van de titel, minimaal 2 tekens
Ontwikkelaars
GET/api/v1/developer 2 tok.

Een ontwikkelaar en al zijn apps: aantallen (in de store en verwijderd), totaal aantal installaties, gemiddelde beoordeling, eerste release, categorieën, website. In het Business-plan: e-mailadres, telefoonnummer, adres en juridische naam.

idontwikkelaar-ID (uit een app: developer.id)
nameof de exacte naam van de ontwikkelaar
statusall (standaard), live of removed
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagepagina, vanaf 1
perrijen per pagina, 1–100 (standaard 20)
Wijzigingen in de store
GET/api/v1/new 2 tok.

Nieuwe apps op datum van eerste release, nieuwste eerst.

sincevanaf datum, YYYY-MM-DD (standaard 7 dagen geleden)
untiltot en met deze datum
categorycategorie-ID, bijv. GAME_PUZZLE (zie /v1/categories)
min_installsminimum aantal installaties (drempels van Google Play: 1000, 10000…)
langtiteltaal, ISO-code: en, de, pt…
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagepagina, vanaf 1
perrijen per pagina, 1–100 (standaard 20)
GET/api/v1/removed 2 tok.

Apps die van Google Play zijn verdwenen (in geen van de 19 landen die wij controleren), op verwijderdatum. De appgegevens behouden de laatste data.

sincevanaf datum, YYYY-MM-DD (standaard 7 dagen geleden)
untiltot en met deze datum
categorycategorie-ID, bijv. GAME_PUZZLE (zie /v1/categories)
min_installsminimum aantal installaties (drempels van Google Play: 1000, 10000…)
sortremoved_at | installs | score
pagepagina, vanaf 1
perrijen per pagina, 1–100 (standaard 20)
Markt
GET/api/v1/keywords 2 tok.

Woorden en zinnen uit apptitels per taal: hoeveel apps en ontwikkelaars ze gebruiken, hoeveel daarvan sterk zijn (100K+ installaties), totaal aantal installaties, het aandeel van de marktleider en een kansenscore (opportunity).

langtaal, standaard en
qwoord of zin
phrasetrue — alleen zinnen van twee woorden, false — alleen losse woorden
min_appsminimum aantal apps
max_appsmaximum aantal apps
sortopportunity | apps | installs | strong | devs | max_installs
orderdesc | asc
pagepagina, vanaf 1
perrijen per pagina, 1–100 (standaard 20)
GET/api/v1/categories gratis

Alle categorieën met aantal apps en totaal aantal installaties. Gratis.

statuslive (in de store, standaard), removed of all
GET/api/v1/free_domains 3 tok.na de eerste aankoop

Apps waarvan het domein van de ontwikkelaarssite vrij is om te registreren, met de populariteit van de app. Wordt geopend na de eerste tokenaankoop.

categorycategorie-ID, bijv. GAME_PUZZLE (zie /v1/categories)
min_installsminimum aantal installaties (drempels van Google Play: 1000, 10000…)
statuslive (in de store, standaard), removed of all
tlddomeinzone, bijv. com
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagepagina, vanaf 1
perrijen per pagina, 1–100 (standaard 20)
GET/api/v1/charts 2 tok.

Een Google Play-topranglijst voor één land en categorie: tot 200 posities, positiewijziging sinds de vorige momentopname (change: hoeveel plaatsen gestegen, "new" voor nieuwe binnenkomers), pictogram en installaties.

country *land, ISO-code: US, DE, BR…
category *categorie, bijv. GAME_PUZZLE
collectionfree | paid | grossing
pagepagina, vanaf 1
perrijen per pagina, 1–100 (standaard 20)
GET/api/v1/rankings 1 tok.

Alle ranglijsten waarin de app staat in de laatste momentopname: land, categorie, collectie, positie; het aantal ranglijsten en landen en de beste positie.

id *pakketnaam van de app
countryslechts één land
collectionfree | paid | grossing
GET/api/v1/availability 1 tok.

Landen waar de app beschikbaar is op Google Play (volgens hreflang in de sitemap van de store). Bij 190+ landen wordt worldwide = true zonder lijst teruggegeven.

id *pakketnaam van de app
GET/api/v1/markets 1 tok.

Marktconcurrentie op basis van gratis ranglijsten: de instapdrempel voor de top 100 en top 200 (installaties van de app op die plek), het aandeel nieuwe (laatste 12 maanden) en lokale (≤3 landen) apps in de top, en de omvang van de lokale markt. Zonder parameters: alle landen; country: de categorieën van één land; category: één categorie in alle landen.

countryland, ISO-code
categorycategorie-ID, bijv. GAME_PUZZLE (zie /v1/categories)
sortentry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new
orderdesc | asc
pagepagina, vanaf 1
perrijen per pagina, 1–100 (standaard 20)
GET/api/v1/stats gratis

Omvang van de database: apps in de store en verwijderde apps, ontwikkelaars, nieuwe en verwijderde apps in de afgelopen 7 dagen, tijdstip van de laatste update. Gratis.

* — verplichte parameter

Codevoorbeelden

# 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+ (op de server — niet in de browser)
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;

Proberen

U kunt een sleutel aanmaken in uw account. Het verzoek gaat rechtstreeks vanuit uw browser. De sleutel wordt nergens opgeslagen en verdwijnt na het herladen van de pagina. Verzoeken vanuit de console kosten tokens zoals alle andere.