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.
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.
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
| Header | Arti |
|---|---|
X-Credits-Cost | kredit yang dipakai permintaan ini |
X-Credits-Remaining | sisa kredit (paket + saldo) |
X-Cache | HIT — dari cache (lebih cepat), MISS — kueri baru ke indeks |
X-RateLimit-Limit / -Remaining | batas per menit kunci dan sisanya |
X-Plan | free | pro | scale | business |
Sisa kredit Anda juga ada di kolom _credits pada setiap respons dan di /v1/account (gratis).
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. …" }
| HTTP | code | Kapan |
|---|---|---|
| 400 | invalid_param, invalid_request | parameter tidak valid atau hilang |
| 401 | missing_api_key, invalid_api_key | tidak ada kunci, atau kunci dicabut |
| 402 | insufficient_credits | kredit tidak cukup — isi ulang atau tingkatkan paket |
| 403 | account_blocked, plan_required | akun diblokir, atau endpoint memerlukan paket lebih tinggi |
| 404 | not_found | aplikasi atau pengembang tidak ada di basis data, atau endpoint tidak dikenal |
| 429 | rate_limited | batas permintaan per menit terlampaui |
| 503 | service_unavailable | masalah basis data sementara — coba lagi nanti; kredit tidak dipotong |
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.
Paket, kredit paket dan saldo Anda, tanggal reset kredit, dan batas per menit.
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 |
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 |
Pencarian dan filter di seluruh basis data. Minimal satu filter diperlukan. Tanpa q, hasil diurutkan menurut instalasi.
q | kata untuk dicari di judul, deskripsi, dan nama pengembang |
category | ID kategori, mis. GAME_PUZZLE (lihat /v1/categories) |
developer_id | ID pengembang Google Play |
min_installs | instalasi minimum (ambang Google Play: 1000, 10000…) |
max_installs | instalasi maksimum |
min_score | rating minimum, 0–5 |
min_ratings | rating minimum |
free | true — hanya gratis, false — hanya berbayar |
ads | true — dengan iklan, false — tanpa iklan |
iap | true — dengan pembelian dalam aplikasi |
lang | bahasa judul, kode ISO: en, de, pt… |
released_from | dirilis sejak tanggal ini, YYYY-MM-DD |
released_to | dirilis hingga tanggal ini, inklusif |
updated_from | diperbarui sejak tanggal ini |
updated_to | diperbarui hingga tanggal ini, inklusif |
status | live (ada di toko, default), removed, atau all |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
order | desc | asc |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
Saran dari awal judul: 10 kecocokan terpopuler. Gratis.
q * | awal judul, 2+ karakter |
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.
id | ID pengembang (dari aplikasi: developer.id) |
name | atau nama pengembang yang persis |
status | all (default), live, atau removed |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
Aplikasi baru menurut tanggal rilis pertama, terbaru di atas.
since | sejak tanggal ini, YYYY-MM-DD (default: 7 hari lalu) |
until | hingga tanggal ini, inklusif |
category | ID kategori, mis. GAME_PUZZLE (lihat /v1/categories) |
min_installs | instalasi minimum (ambang Google Play: 1000, 10000…) |
lang | bahasa judul, kode ISO: en, de, pt… |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
Aplikasi yang hilang dari Google Play (tidak ada di ke-19 negara yang kami periksa), menurut tanggal penghapusan. Catatan aplikasi menyimpan data terakhirnya.
since | sejak tanggal ini, YYYY-MM-DD (default: 7 hari lalu) |
until | hingga tanggal ini, inklusif |
category | ID kategori, mis. GAME_PUZZLE (lihat /v1/categories) |
min_installs | instalasi minimum (ambang Google Play: 1000, 10000…) |
sort | removed_at | installs | score |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
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.
lang | bahasa, default en |
q | kata atau frasa |
phrase | true — hanya frasa dua kata, false — hanya kata tunggal |
min_apps | aplikasi minimum |
max_apps | aplikasi maksimum |
sort | opportunity | apps | installs | strong | devs | max_installs |
order | desc | asc |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
Semua kategori dengan jumlah aplikasi dan total instalasi. Gratis.
status | live (ada di toko, default), removed, atau all |
Aplikasi yang domain situs pengembangnya bisa didaftarkan, beserta popularitas aplikasi. Paket Pro dan lebih tinggi.
category | ID kategori, mis. GAME_PUZZLE (lihat /v1/categories) |
min_installs | instalasi minimum (ambang Google Play: 1000, 10000…) |
status | live (ada di toko, default), removed, atau all |
tld | zona domain, mis. com |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
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 |
collection | free | paid | grossing |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
Semua tangga tempat aplikasi berada pada snapshot terbaru: negara, kategori, koleksi, posisi; jumlah tangga dan negara, serta posisi terbaik.
id * | nama paket aplikasi |
country | hanya satu negara |
collection | free | paid | grossing |
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 |
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.
country | negara, kode ISO |
category | ID kategori, mis. GAME_PUZZLE (lihat /v1/categories) |
sort | entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new |
order | desc | asc |
page | halaman, dari 1 |
per | baris per halaman, 1–100 (default 20) |
Ukuran basis data: aplikasi di toko dan yang dihapus, pengembang, baru dan dihapus dalam 7 hari terakhir, waktu pembaruan terakhir. Gratis.
* — parameter wajib
# 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;
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.