Dokumentasi APK API

REST API dengan data Google Play: 4 juta aplikasi, pengembang, aplikasi baru dan yang dihapus, kata kunci judul. Format: JSON, encoding UTF-8, CORS aktif.

Mulai cepat

URL dasar: https://apkapi.com/api/v1. Daftar, buat kunci API di akun Anda dan kirim permintaan pertama Anda:

Deskripsi API yang dapat dibaca mesin: OpenAPI 3.1 · Koleksi Postman — impor ke Postman, Insomnia, atau generator klien (openapi-generator) untuk mendapatkan SDK siap pakai bagi bahasa Anda.

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

Data mencakup lebih dari 4 juta aplikasi Google Play dari toko AS dalam bahasa Inggris (dari negara lain jika aplikasi tidak tersedia di AS), diperbarui setiap malam. Aplikasi yang hilang dari toko tetap ada di basis data dengan data terakhirnya.

Autentikasi

Setiap permintaan kecuali /v1/health harus menyertakan kunci API di header:

X-API-Key: ak_live_…

Juga diterima: Authorization: Bearer …. Kunci tidak boleh dikirim lewat parameter URL karena akan tercatat di log dan riwayat browser.

Simpan kunci di server Anda. Jika ditanam di JavaScript halaman, pengunjung mana pun dapat menyalinnya. Arahkan permintaan frontend melalui backend Anda.

Kredit & batas

Setiap panggilan berbiaya 0–3 kredit tergantung endpoint, berapa pun jumlah baris dalam respons (hingga 100); panggilan batch apps berbiaya 1 kredit per aplikasi. Kredit paket bulan berjalan dipakai lebih dulu, lalu saldo prabayar. Jika permintaan gagal karena kesalahan kami, kredit dikembalikan. Paket & kredit

HeaderArti
X-Credits-Costkredit yang dipakai permintaan ini
X-Credits-Remainingsisa kredit (paket + saldo)
X-CacheHIT — dari cache (lebih cepat), MISS — kueri baru ke indeks
X-RateLimit-Limit / -Remainingbatas per menit kunci dan sisanya
X-Planfree | pro | scale | business

Sisa kredit Anda juga ada di kolom _credits pada setiap respons dan di /v1/account (gratis).

Format respons dan kesalahan

Setiap respons memiliki kolom ok. Daftar berisi results, total, page, per, pages. Kesalahan: ok = false, error berisi penjelasan, code adalah kode yang dapat dibaca mesin. Tanggal memakai ISO 8601 dalam 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. …" }
HTTPcodeKapan
400invalid_param, invalid_requestparameter tidak valid atau hilang
401missing_api_key, invalid_api_keytidak ada kunci, atau kunci dicabut
402insufficient_creditskredit tidak cukup — isi ulang atau tingkatkan paket
403account_blocked, plan_requiredakun diblokir, atau endpoint memerlukan paket lebih tinggi
404not_foundaplikasi atau pengembang tidak ada di basis data, atau endpoint tidak dikenal
429rate_limitedbatas permintaan per menit terlampaui
503service_unavailablemasalah basis data sementara — coba lagi nanti; kredit tidak dipotong

Endpoint

Semua endpoint adalah GET /api/v1/{name}. Paginasi: page (dari 1) dan per (1–100), hingga hasil ke-10.000. Pengurutan: sort + order=asc|desc.

GET/api/v1/accountgratis

Paket, kredit paket dan saldo Anda, tanggal reset kredit, dan batas per menit.

Aplikasi
GET/api/v1/app 1 kr.

Catatan aplikasi lengkap: judul, deskripsi, yang baru, instalasi (ambang dan angka pasti), rating, jumlah rating dan ulasan, sebaran bintang, harga, pembelian dalam aplikasi, iklan, kategori, rating konten, versi, Android minimum, tanggal rilis dan pembaruan, ikon, tangkapan layar, video, pengembang dan situsnya. Untuk aplikasi yang dihapus: data terakhir yang tersimpan dan tanggal penghapusan.

id *nama paket aplikasi
GET · POST/api/v1/apps 1 kredit per aplikasi

Hingga 100 aplikasi dalam satu panggilan: GET ?ids=a,b,c atau POST dengan daftar di body (satu per baris, atau JSON {"ids": […]}). 1 kredit per aplikasi; id yang tidak kami miliki dikembalikan di not_found.

ids *nama paket, dipisah koma, hingga 100
GET/api/v1/suggest gratis

Saran dari awal judul: 10 kecocokan terpopuler. Gratis.

q *awal judul, 2+ karakter
Pengembang
GET/api/v1/developer 2 kr.

Pengembang dan semua aplikasinya: jumlah (di toko dan dihapus), total instalasi, rating rata-rata, rilis pertama, kategori, situs. Di paket Business: email, telepon, alamat, dan nama badan hukum.

idID pengembang (dari aplikasi: developer.id)
nameatau nama pengembang yang persis
statusall (default), live, atau removed
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagehalaman, dari 1
perbaris per halaman, 1–100 (default 20)
Perubahan di toko
GET/api/v1/new 2 kr.

Aplikasi baru menurut tanggal rilis pertama, terbaru di atas.

sincesejak tanggal ini, YYYY-MM-DD (default: 7 hari lalu)
untilhingga tanggal ini, inklusif
categoryID kategori, mis. GAME_PUZZLE (lihat /v1/categories)
min_installsinstalasi minimum (ambang Google Play: 1000, 10000…)
langbahasa judul, kode ISO: en, de, pt…
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagehalaman, dari 1
perbaris per halaman, 1–100 (default 20)
GET/api/v1/removed 2 kr.

Aplikasi yang hilang dari Google Play (tidak ada di ke-19 negara yang kami periksa), menurut tanggal penghapusan. Catatan aplikasi menyimpan data terakhirnya.

sincesejak tanggal ini, YYYY-MM-DD (default: 7 hari lalu)
untilhingga tanggal ini, inklusif
categoryID kategori, mis. GAME_PUZZLE (lihat /v1/categories)
min_installsinstalasi minimum (ambang Google Play: 1000, 10000…)
sortremoved_at | installs | score
pagehalaman, dari 1
perbaris per halaman, 1–100 (default 20)
Pasar
GET/api/v1/keywords 2 kr.

Kata dan frasa dari judul aplikasi untuk setiap bahasa: berapa aplikasi dan pengembang yang memakainya, berapa yang kuat (100 ribu+ instalasi), total instalasi, porsi pemimpin, dan skor peluang.

langbahasa, default en
qkata atau frasa
phrasetrue — hanya frasa dua kata, false — hanya kata tunggal
min_appsaplikasi minimum
max_appsaplikasi maksimum
sortopportunity | apps | installs | strong | devs | max_installs
orderdesc | asc
pagehalaman, dari 1
perbaris per halaman, 1–100 (default 20)
GET/api/v1/categories gratis

Semua kategori dengan jumlah aplikasi dan total instalasi. Gratis.

statuslive (ada di toko, default), removed, atau all
GET/api/v1/free_domains 3 kr.Pro+

Aplikasi yang domain situs pengembangnya bisa didaftarkan, beserta popularitas aplikasi. Paket Pro dan lebih tinggi.

categoryID kategori, mis. GAME_PUZZLE (lihat /v1/categories)
min_installsinstalasi minimum (ambang Google Play: 1000, 10000…)
statuslive (ada di toko, default), removed, atau all
tldzona domain, mis. com
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagehalaman, dari 1
perbaris per halaman, 1–100 (default 20)
GET/api/v1/charts 2 kr.

Tangga Google Play untuk satu negara dan kategori: hingga 200 posisi, perubahan peringkat sejak snapshot sebelumnya (change: berapa tempat naik, "new" untuk pendatang baru), ikon, dan instalasi.

country *negara, kode ISO: US, DE, BR…
category *kategori, mis. GAME_PUZZLE
collectionfree | paid | grossing
pagehalaman, dari 1
perbaris per halaman, 1–100 (default 20)
GET/api/v1/rankings 1 kr.

Semua tangga tempat aplikasi berada pada snapshot terbaru: negara, kategori, koleksi, posisi; jumlah tangga dan negara, serta posisi terbaik.

id *nama paket aplikasi
countryhanya satu negara
collectionfree | paid | grossing
GET/api/v1/availability 1 kr.

Negara tempat aplikasi tersedia di Google Play (dari hreflang di sitemap toko). Jika lebih dari 190 negara, dikembalikan worldwide = true tanpa daftar.

id *nama paket aplikasi
GET/api/v1/markets 1 kr.

Persaingan pasar berdasarkan tangga aplikasi gratis: ambang masuk 100 besar dan 200 besar (instalasi aplikasi di posisi itu), porsi aplikasi baru (12 bulan terakhir) dan lokal (≤3 negara) di puncak, serta ukuran pasar lokal. Tanpa parameter: semua negara; country: kategori satu negara; category: satu kategori di semua negara.

countrynegara, kode ISO
categoryID kategori, mis. GAME_PUZZLE (lihat /v1/categories)
sortentry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new
orderdesc | asc
pagehalaman, dari 1
perbaris per halaman, 1–100 (default 20)
GET/api/v1/stats gratis

Ukuran basis data: aplikasi di toko dan yang dihapus, pengembang, baru dan dihapus dalam 7 hari terakhir, waktu pembaruan terakhir. Gratis.

* — parameter wajib

Contoh kode

# 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("credits left:", data["_credits"]["available"])
// Node.js 18+ (di server, bukan di 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;

Coba

Anda dapat membuat kunci di akun Anda. Permintaan dikirim langsung dari browser Anda. Kunci tidak disimpan di mana pun dan hilang setelah halaman dimuat ulang. Permintaan dari konsol memakai kredit seperti permintaan lainnya.