APK Surge-dokumentasjon

REST API med Google Play-data: 4 millioner apper, utviklere, nye og fjernede apper, nøkkelord fra titler. Format: JSON, UTF-8-koding, CORS slått på.

Hurtigstart

Basis-URL: https://apksurge.com/api/v1. Registrer deg, opprett en API-nøkkel i kontoen din og send din første forespørsel:

Maskinlesbar API-beskrivelse: OpenAPI 3.1 · Postman-samling — importer den i Postman, Insomnia eller en klientgenerator (openapi-generator) og få en ferdig SDK for ditt språk.

curl -H "X-API-Key: DIN_NØKKEL" "https://apksurge.com/api/v1/app?id=com.whatsapp"

Dataene dekker over 4 millioner Google Play-apper fra den amerikanske butikken på engelsk (fra et annet land hvis appen ikke finnes i USA), oppdatert hver natt. Apper som forsvinner fra butikken blir værende i databasen med sine siste data.

Autentisering

Hver forespørsel unntatt /v1/health må inneholde API-nøkkelen i en header:

X-API-Key: ak_live_…

Aksepteres også: Authorization: Bearer …. Det er ikke tillatt å sende nøkkelen i URL-parametere: da ville den havne i logger og nettleserhistorikk.

Oppbevar nøkkelen på din egen server. Hvis du bygger den inn i JavaScript på siden, kan alle besøkende kopiere den. Send forespørsler fra frontend via din egen backend.

Tokener og grenser

Hvert kall koster 0–3 tokener avhengig av endepunktet, uavhengig av antall rader i svaret (opptil 100); batch-kallet apps koster 1 token per app. Månedlige tokener brukes først, deretter kjøpte. Hvis en forespørsel mislykkes på vår side, får du tokenene tilbake. Planer og pakker

HeaderBetydning
X-Tokens-Costhvor mange tokener denne forespørselen kostet
X-Tokens-Remaininghvor mange tokener som er igjen (månedlige + kjøpte)
X-CacheHIT — svar fra hurtigbufferen (raskere), MISS — ny forespørsel mot indeksen
X-RateLimit-Limit / -Remainingnøkkelens grense per minutt og det som er igjen
X-Planfree | pro | business

Gjenstående tokener finnes også i feltet _tokens i hvert svar og i /v1/account (gratis). De gamle navnene _credits og X-Credits-* er utdaterte, men fungerer fortsatt.

Svarformat og feil

Hvert svar har feltet ok. Lister inneholder results, total, page, per, pages. Feil: ok = false, error er forklaringen, code er en maskinlesbar kode. Datoer er i 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
400invalid_param, invalid_requestugyldig eller manglende parameter
401missing_api_key, invalid_api_keyingen nøkkel, eller nøkkelen er tilbakekalt
402insufficient_creditsikke nok tokener — kjøp en pakke
403account_blocked, plan_requiredkontoen er sperret, eller endepunktet åpnes etter første kjøp av tokener
404not_foundappen eller utvikleren finnes ikke i databasen, eller endepunktet er ukjent
429rate_limitedgrensen for forespørsler per minutt er overskredet
503service_unavailableet midlertidig databaseproblem — prøv igjen senere; ingen tokener belastes

Endepunkter

Alle endepunkter er GET /api/v1/{navn}. Paginering: page (fra 1) og per (1–100), opptil resultat nr. 10 000. Sortering: sort + order=asc|desc.

GET/api/v1/accountgratis

Din plan, tokensaldo, datoen for fornyelse av månedlige tokener og grensen per minutt.

Apper
GET/api/v1/app 1 tok.

Det fullstendige appkortet: tittel, beskrivelse, «Nytt», installasjoner (terskel og eksakt antall), vurdering, antall vurderinger og anmeldelser, fordeling av stjerner, pris, kjøp i appen, reklame, kategori, aldersgrense, versjon, laveste Android-versjon, dato for utgivelse og oppdatering, ikon, skjermbilder, video, utvikler og utviklerens nettsted. For fjernede apper: siste lagrede data og dato for fjerning.

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

Opptil 100 apper i ett kall: GET ?ids=a,b,c eller POST med listen i body (én per linje, eller JSON {"ids": […]}). 1 token per app; ID-er vi ikke har, returneres i not_found.

ids *pakkenavn atskilt med komma, opptil 100
GET/api/v1/suggest gratis

Forslag basert på starten av tittelen: de 10 mest populære treffene. Gratis.

q *starten av tittelen, minst 2 tegn
Utviklere
GET/api/v1/developer 2 tok.

En utvikler og alle appene deres: antall (i butikken og fjernede), samlede installasjoner, gjennomsnittlig vurdering, første utgivelse, kategorier, nettsted. I Business-planen: e-post, telefon, adresse og juridisk navn.

idutvikler-ID (fra appkortet: developer.id)
nameeller utviklerens eksakte navn
statusall (standard), live eller removed
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageside, fra 1
perrader per side, 1–100 (standard 20)
Endringer i butikken
GET/api/v1/new 2 tok.

Nye apper etter dato for første utgivelse, de nyeste først.

sincefra denne datoen, YYYY-MM-DD (standard: 7 dager siden)
untiltil og med denne datoen
categorykategori-ID, f.eks. GAME_PUZZLE (se /v1/categories)
min_installsminimum installasjoner (Google Play-terskler: 1000, 10000 …)
langtittelspråk, ISO-kode: en, de, pt …
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageside, fra 1
perrader per side, 1–100 (standard 20)
GET/api/v1/removed 2 tok.

Apper som har forsvunnet fra Google Play (finnes ikke i noen av de 19 landene vi sjekker), etter dato for fjerning. Appkortet beholder de siste dataene.

sincefra denne datoen, YYYY-MM-DD (standard: 7 dager siden)
untiltil og med denne datoen
categorykategori-ID, f.eks. GAME_PUZZLE (se /v1/categories)
min_installsminimum installasjoner (Google Play-terskler: 1000, 10000 …)
sortremoved_at | installs | score
pageside, fra 1
perrader per side, 1–100 (standard 20)
Marked
GET/api/v1/keywords 2 tok.

Ord og uttrykk fra apptitler for hvert språk: hvor mange apper og utviklere som bruker dem, hvor mange av dem som er sterke (100 000+ installasjoner), samlede installasjoner, lederens andel og en mulighetsscore (opportunity).

langspråk, standard en
qord eller uttrykk
phrasetrue — bare uttrykk på to ord, false — bare enkeltord
min_appsminimum apper
max_appsmaks. apper
sortopportunity | apps | installs | strong | devs | max_installs
orderdesc | asc
pageside, fra 1
perrader per side, 1–100 (standard 20)
GET/api/v1/categories gratis

Alle kategorier med antall apper og samlede installasjoner. Gratis.

statuslive (i butikken, standard), removed eller all
GET/api/v1/free_domains 3 tok.etter første kjøp

Apper der utviklerens nettstedsdomene kan registreres, med appens popularitet. Åpnes etter første kjøp av tokener.

categorykategori-ID, f.eks. GAME_PUZZLE (se /v1/categories)
min_installsminimum installasjoner (Google Play-terskler: 1000, 10000 …)
statuslive (i butikken, standard), removed eller all
tlddomenesone, f.eks. com
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageside, fra 1
perrader per side, 1–100 (standard 20)
GET/api/v1/charts 2 tok.

En Google Play-toppliste for ett land og én kategori: opptil 200 plasseringer, endring i plassering siden forrige øyeblikksbilde (change: hvor mange plasser den har steget, "new" for nye oppføringer), ikon og installasjoner.

country *land, ISO-kode: US, DE, BR …
category *kategori, f.eks. GAME_PUZZLE
collectionfree | paid | grossing
pageside, fra 1
perrader per side, 1–100 (standard 20)
GET/api/v1/rankings 1 tok.

Alle topplister appen står på i det siste øyeblikksbildet: land, kategori, samling, plassering; antall topplister og land, og beste plassering.

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

Land der appen er tilgjengelig på Google Play (basert på hreflang i butikkens sitemap). Ved 190+ land returneres worldwide = true uten liste.

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

Markedskonkurranse basert på gratislister: terskelen for å komme inn på topp 100 og topp 200 (installasjoner for appen på den plassen), andelen nye (siste 12 måneder) og lokale (≤3 land) apper på toppen, og størrelsen på det lokale markedet. Uten parametere: alle land; country: kategoriene i ett land; category: én kategori i alle land.

countryland, ISO-kode
categorykategori-ID, f.eks. GAME_PUZZLE (se /v1/categories)
sortentry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new
orderdesc | asc
pageside, fra 1
perrader per side, 1–100 (standard 20)
GET/api/v1/stats gratis

Databasens størrelse: apper i butikken og fjernede, utviklere, nye og fjernede de siste 7 dagene, tidspunkt for siste oppdatering. Gratis.

* — påkrevd parameter

Kodeeksempler

# 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+ (på serveren — ikke i nettleseren)
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;

Prøv

Du kan opprette en nøkkel i kontoen din. Forespørselen sendes direkte fra nettleseren din. Nøkkelen lagres ikke noe sted og forsvinner når siden lastes inn på nytt. Forespørsler fra konsollen bruker tokener på samme måte som alle andre.