APK API-dokumentation

REST API med Google Play-data: 4 miljoner appar, utvecklare, nya och borttagna appar, nyckelord från titlar. Format: JSON, teckenkodning UTF-8, CORS aktiverat.

Snabbstart

Bas-URL: https://apkapi.com/api/v1. Registrera dig, skapa en API-nyckel i ditt konto och skicka ditt första anrop:

Maskinläsbar API-beskrivning: OpenAPI 3.1 · Postman-samling — importera den i Postman, Insomnia eller en klientgenerator (openapi-generator) så får du en färdig SDK för ditt språk.

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

Datan omfattar över 4 miljoner appar på Google Play från den amerikanska butiken på engelska (från ett annat land om en app inte finns i USA), uppdateras varje natt. Appar som försvinner från butiken finns kvar i databasen med sina senaste data.

Autentisering

Varje anrop utom /v1/health måste innehålla API-nyckeln i en header:

X-API-Key: ak_live_…

Accepteras också: Authorization: Bearer …. Det går inte att skicka nyckeln i URL-parametrar: då skulle den hamna i loggar och webbläsarhistoriken.

Behåll nyckeln på din server. Om du bäddar in den i JavaScript på sidan kan vilken besökare som helst kopiera den. Skicka anrop från frontend via din egen backend.

Tokens och gränser

Varje anrop kostar 0–3 tokens beroende på endpoint, oavsett antal rader i svaret (upp till 100); batchanropet apps kostar 1 token per app. Månatliga tokens används först, därefter köpta. Om ett anrop misslyckas på vår sida återlämnas tokens. Planer och paket

RubrikBetydelse
X-Tokens-Costhur många tokens det här anropet kostade
X-Tokens-Remaininghur många tokens som återstår (månatliga + köpta)
X-CacheHIT — svar från cachen (snabbare), MISS — ny förfrågan mot indexet
X-RateLimit-Limit / -Remainingnyckelns gräns för anrop per minut och vad som återstår
X-Planfree | pro | business

Ditt återstående antal tokens finns också i fältet _tokens i varje svar och i /v1/account (gratis). De gamla namnen _credits och X-Credits-* är föråldrade men fungerar fortfarande.

Svarsformat och fel

Varje svar har fältet ok. Listor innehåller results, total, page, per, pages. Fel: ok = false, error är förklaringen, code är en maskinläsbar kod. Datum anges enligt ISO 8601 i 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. …" }
HTTPcodeNär det inträffar
400invalid_param, invalid_requestogiltig eller saknad parameter
401missing_api_key, invalid_api_keyingen nyckel, eller så är nyckeln återkallad
402insufficient_creditsför få tokens — köp ett paket
403account_blocked, plan_requiredkontot är blockerat, eller så öppnas endpointen efter det första tokenköpet
404not_foundappen eller utvecklaren finns inte i databasen, eller så är endpointen okänd
429rate_limitedgränsen för anrop per minut har överskridits
503service_unavailableett tillfälligt databasproblem — försök igen senare; inga tokens debiteras

Endpoints

Alla endpoints är GET /api/v1/{namn}. Paginering: page (från 1) och per (1–100), högst till det 10 000:e resultatet. Sortering: sort + order=asc|desc.

GET/api/v1/accountgratis

Din plan, ditt tokensaldo, datum för nästa månatliga påfyllning och gränsen per minut.

Appar
GET/api/v1/app 1 tok.

Det fullständiga appkortet: titel, beskrivning, nyheter, installationer (tröskel och exakt antal), betyg, antal betyg och recensioner, stjärnfördelning, pris, köp i appen, reklam, kategori, åldersgräns, version, lägsta Android, lanserings- och uppdateringsdatum, ikon, skärmbilder, video, utvecklare och utvecklarens webbplats. För borttagna appar: senast sparade data och borttagningsdatum.

id *appens paketnamn
GET · POST/api/v1/apps 1 token per app

Upp till 100 appkort i ett anrop: GET ?ids=a,b,c eller POST med listan i bodyn (en per rad, eller JSON {"ids": […]}). 1 token per app; ID:n som vi inte har returneras i not_found.

ids *paketnamn separerade med komma, upp till 100
GET/api/v1/suggest gratis

Förslag utifrån början av en titel: de 10 mest populära träffarna. Gratis.

q *början av titeln, minst 2 tecken
Utvecklare
GET/api/v1/developer 2 tok.

En utvecklare och alla deras appar: antal (i butiken och borttagna), totalt antal installationer, genomsnittligt betyg, första lansering, kategorier, webbplats. I planen Business: e-post, telefon, adress och juridiskt namn.

idutvecklar-ID (från en app: developer.id)
nameeller utvecklarens exakta namn
statusall (standard), live eller removed
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagesida, från 1
perrader per sida, 1–100 (standard 20)
Ändringar i butiken
GET/api/v1/new 2 tok.

Nya appar efter datum för första lansering, de nyaste först.

sincefrån detta datum, YYYY-MM-DD (standard: 7 dagar sedan)
untiltill och med detta datum
categorykategori-ID, t.ex. GAME_PUZZLE (se /v1/categories)
min_installslägsta antal installationer (Google Plays trösklar: 1000, 10000…)
langtitelns språk, ISO-kod: en, de, pt…
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagesida, från 1
perrader per sida, 1–100 (standard 20)
GET/api/v1/removed 2 tok.

Appar som har försvunnit från Google Play (finns inte i något av de 19 länder vi kontrollerar), efter borttagningsdatum. Appkortet behåller sina senaste data.

sincefrån detta datum, YYYY-MM-DD (standard: 7 dagar sedan)
untiltill och med detta datum
categorykategori-ID, t.ex. GAME_PUZZLE (se /v1/categories)
min_installslägsta antal installationer (Google Plays trösklar: 1000, 10000…)
sortremoved_at | installs | score
pagesida, från 1
perrader per sida, 1–100 (standard 20)
Marknad
GET/api/v1/keywords 2 tok.

Ord och fraser från apptitlar för varje språk separat: hur många appar och utvecklare som använder dem, hur många av dem som är starka (100 tn+ installationer), totalt antal installationer, ledarens andel och ett möjlighetsbetyg (opportunity).

langspråk, standard en
qord eller fras
phrasetrue — endast fraser på två ord, false — endast enstaka ord
min_appslägsta antal appar
max_appshögsta antal appar
sortopportunity | apps | installs | strong | devs | max_installs
orderdesc | asc
pagesida, från 1
perrader per sida, 1–100 (standard 20)
GET/api/v1/categories gratis

Alla kategorier med antal appar och totalt antal installationer. Gratis.

statuslive (i butiken, standard), removed eller all
GET/api/v1/free_domains 3 tok.efter första köpet

Appar vars utvecklardomän är ledig att registrera, med appens popularitet. Öppnas efter första tokenköpet.

categorykategori-ID, t.ex. GAME_PUZZLE (se /v1/categories)
min_installslägsta antal installationer (Google Plays trösklar: 1000, 10000…)
statuslive (i butiken, standard), removed eller all
tldtoppdomän, t.ex. com
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagesida, från 1
perrader per sida, 1–100 (standard 20)
GET/api/v1/charts 2 tok.

En topplista på Google Play för ett land och en kategori: upp till 200 placeringar, placeringsändring sedan förra ögonblicksbilden (change: hur många platser appen har stigit, "new" för nya på listan), ikon och installationer.

country *land, ISO-kod: US, DE, BR…
category *kategori, t.ex. GAME_PUZZLE
collectionfree | paid | grossing
pagesida, från 1
perrader per sida, 1–100 (standard 20)
GET/api/v1/rankings 1 tok.

Alla topplistor som appen finns på i den senaste ögonblicksbilden: land, kategori, samling, placering; antal topplistor och länder samt bästa placering.

id *appens paketnamn
countryendast ett land
collectionfree | paid | grossing
GET/api/v1/availability 1 tok.

Länder där appen finns på Google Play (enligt hreflang i butikens sitemap). Vid 190+ länder returneras worldwide = true utan lista.

id *appens paketnamn
GET/api/v1/markets 1 tok.

Marknadskonkurrens baserad på topplistor för gratisappar: tröskeln för att komma med på topp 100 och topp 200 (installationer för appen på den platsen), andelen nya (senaste 12 månaderna) och lokala (≤3 länder) appar på topplistan samt den lokala marknadens storlek. Utan parametrar: alla länder; country: kategorierna i ett land; category: en kategori i alla länder.

countryland, ISO-kod
categorykategori-ID, t.ex. GAME_PUZZLE (se /v1/categories)
sortentry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new
orderdesc | asc
pagesida, från 1
perrader per sida, 1–100 (standard 20)
GET/api/v1/stats gratis

Databasens storlek: appar i butiken och borttagna, utvecklare, nya och borttagna de senaste 7 dagarna, tidpunkt för senaste uppdatering. Gratis.

* — obligatorisk parameter

Kodexempel

# 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+ (på servern — inte i webbläsaren)
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;

Prova

Du kan skapa en nyckel i ditt konto. Anropet skickas direkt från din webbläsare. Nyckeln sparas ingenstans och försvinner när sidan laddas om. Anrop från konsolen förbrukar tokens precis som vanliga anrop.