عنوان URL الأساسي: https://apkapi.com/api/v1. التسجيل، وأنشئ مفتاح API في حسابك وأرسل طلبك الأول:
وصف API القابل للقراءة آليًا: OpenAPI 3.1 · مجموعة Postman — استورده إلى Postman أو Insomnia أو مولّد عملاء (openapi-generator) للحصول على SDK جاهز للغتك.
curl -H "X-API-Key: YOUR_KEY" "https://apkapi.com/api/v1/app?id=com.whatsapp"
تغطي البيانات أكثر من 4 ملايين تطبيق على Google Play من المتجر الأمريكي باللغة الإنجليزية (ومن بلد آخر إذا لم يكن التطبيق متاحًا في الولايات المتحدة)، وتُحدَّث كل ليلة. وتبقى التطبيقات التي تختفي من المتجر في قاعدة البيانات مع آخر بياناتها.
يجب أن يتضمن كل طلب عدا /v1/health مفتاح API في الترويسة:
X-API-Key: ak_live_…
يُقبل أيضًا: Authorization: Bearer …. لا يُسمح بتمرير المفتاح في معاملات URL: فسينتهي به الأمر في السجلات وسجل المتصفح.
تكلّف كل عملية استدعاء من 0 إلى 3 أرصدة حسب نقطة النهاية، بغض النظر عن عدد الصفوف في الاستجابة (حتى 100)؛ ويكلّف استدعاء apps الجماعي رصيدًا واحدًا لكل تطبيق. تُستخدم أرصدة خطة الشهر الحالي أولًا، ثم الرصيد المدفوع مسبقًا. إذا فشل الطلب بسبب من جانبنا، تُعاد الأرصدة. الخطط والحزم
| الترويسة | المعنى |
|---|---|
X-Credits-Cost | أرصدة هذا الطلب |
X-Credits-Remaining | الأرصدة المتبقية (الخطة + الرصيد) |
X-Cache | HIT — من الذاكرة المؤقتة (أسرع)، MISS — استعلام جديد إلى الفهرس |
X-RateLimit-Limit / -Remaining | حد المفتاح في الدقيقة وما تبقى منه |
X-Plan | free | pro | scale | business |
تجد أرصدتك المتبقية أيضًا في الحقل _credits في كل استجابة وفي /v1/account (مجانًا).
تحتوي كل استجابة على الحقل ok. تتضمن القوائم results وtotal وpage وper وpages. عند الخطأ: ok = false، وerror هو الشرح، وcode رمز قابل للقراءة آليًا. التواريخ بصيغة ISO 8601 بتوقيت 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 | متى |
|---|---|---|
| 400 | invalid_param, invalid_request | معامل غير صالح أو مفقود |
| 401 | missing_api_key, invalid_api_key | لا يوجد مفتاح، أو أن المفتاح ملغى |
| 402 | insufficient_credits | الأرصدة غير كافية — اشحن رصيدك أو رقِّ خطتك |
| 403 | account_blocked, plan_required | الحساب محظور، أو أن نقطة النهاية تتطلب خطة أعلى |
| 404 | not_found | التطبيق أو المطوّر غير موجود في قاعدة البيانات، أو أن نقطة النهاية غير معروفة |
| 429 | rate_limited | تم تجاوز حد الطلبات في الدقيقة |
| 503 | service_unavailable | مشكلة مؤقتة في قاعدة البيانات — حاول لاحقًا؛ لا تُخصم أرصدة |
جميع نقاط النهاية بصيغة GET /api/v1/{name}. التقسيم إلى صفحات: page (من 1) وper (من 1 إلى 100)، حتى النتيجة رقم 10,000. الترتيب: sort + order=asc|desc.
خطتك وأرصدة الخطة والرصيد وتاريخ إعادة ضبط الأرصدة والحد في الدقيقة.
سجل التطبيق الكامل: العنوان والوصف والجديد والتثبيتات (الفئة والعدد الدقيق) والتقييم وعدد التقييمات والمراجعات وتوزيع النجوم والسعر وعمليات الشراء داخل التطبيق والإعلانات والفئة وتصنيف المحتوى والإصدار والحد الأدنى من Android وتاريخا الإصدار والتحديث والأيقونة ولقطات الشاشة والفيديو والمطوّر وموقعه. وللتطبيقات المحذوفة: آخر البيانات المحفوظة وتاريخ الحذف.
id * | اسم حزمة التطبيق |
حتى 100 تطبيق في استدعاء واحد: GET ?ids=a,b,c أو POST مع القائمة في المتن (عنصر في كل سطر، أو JSON {"ids": […]}). رصيد واحد لكل تطبيق؛ وتعود المعرّفات غير الموجودة لدينا في not_found.
ids * | أسماء الحزم مفصولة بفواصل، حتى 100 |
بحث وتصفية في قاعدة البيانات كلها. يلزم عامل تصفية واحد على الأقل. دون q تُرتَّب النتائج حسب التثبيتات.
q | كلمات للبحث في العنوان والوصف واسم المطوّر |
category | معرّف الفئة، مثل GAME_PUZZLE (راجع /v1/categories) |
developer_id | معرّف مطوّر Google Play |
min_installs | الحد الأدنى للتثبيتات (عتبات Google Play: 1000، 10000…) |
max_installs | أقصى عدد تثبيتات |
min_score | الحد الأدنى للتقييم، 0–5 |
min_ratings | الحد الأدنى لعدد التقييمات |
free | true — المجانية فقط، false — المدفوعة فقط |
ads | true — مع إعلانات، false — دون إعلانات |
iap | true — مع عمليات شراء داخل التطبيق |
lang | لغة العنوان، رمز ISO: en وde وpt… |
released_from | صدر من هذا التاريخ، YYYY-MM-DD |
released_to | صدر حتى هذا التاريخ، شاملًا |
updated_from | حُدّث من هذا التاريخ |
updated_to | حُدّث حتى هذا التاريخ، شاملًا |
status | live (في المتجر، الافتراضي) أو removed أو all |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
order | desc | asc |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
اقتراحات من بداية العنوان: أشهر 10 نتائج. مجانًا.
q * | بداية العنوان، حرفان أو أكثر |
مطوّر وجميع تطبيقاته: الأعداد (في المتجر والمحذوفة) وإجمالي التثبيتات ومتوسط التقييم وأول إصدار والفئات والموقع. في خطة Business: البريد الإلكتروني والهاتف والعنوان والاسم القانوني.
id | معرّف المطوّر (من التطبيق: developer.id) |
name | أو الاسم الدقيق للمطوّر |
status | all (الافتراضي) أو live أو removed |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
تطبيقات جديدة حسب تاريخ أول إصدار، الأحدث في الأعلى.
since | من هذا التاريخ، YYYY-MM-DD (الافتراضي: قبل 7 أيام) |
until | حتى هذا التاريخ، شاملًا |
category | معرّف الفئة، مثل GAME_PUZZLE (راجع /v1/categories) |
min_installs | الحد الأدنى للتثبيتات (عتبات Google Play: 1000، 10000…) |
lang | لغة العنوان، رمز ISO: en وde وpt… |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
تطبيقات اختفت من Google Play (غير موجودة في جميع البلدان الـ19 التي نفحصها)، حسب تاريخ الحذف. يحتفظ سجل التطبيق بآخر بياناته.
since | من هذا التاريخ، YYYY-MM-DD (الافتراضي: قبل 7 أيام) |
until | حتى هذا التاريخ، شاملًا |
category | معرّف الفئة، مثل GAME_PUZZLE (راجع /v1/categories) |
min_installs | الحد الأدنى للتثبيتات (عتبات Google Play: 1000، 10000…) |
sort | removed_at | installs | score |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
كلمات وعبارات من عناوين التطبيقات لكل لغة: كم تطبيقًا ومطوّرًا يستخدمها، وكم منها قوي (100 ألف تثبيت أو أكثر)، وإجمالي التثبيتات، وحصة المتصدر، ودرجة الفرصة.
lang | اللغة، الافتراضية en |
q | كلمة أو عبارة |
phrase | true — العبارات من كلمتين فقط، false — الكلمات المفردة فقط |
min_apps | الحد الأدنى للتطبيقات |
max_apps | أقصى عدد تطبيقات |
sort | opportunity | apps | installs | strong | devs | max_installs |
order | desc | asc |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
جميع الفئات مع عدد التطبيقات وإجمالي التثبيتات. مجانًا.
status | live (في المتجر، الافتراضي) أو removed أو all |
تطبيقات نطاق موقع مطوّرها متاح للتسجيل، مع شعبية التطبيق. خطة Pro وما فوقها.
category | معرّف الفئة، مثل GAME_PUZZLE (راجع /v1/categories) |
min_installs | الحد الأدنى للتثبيتات (عتبات Google Play: 1000، 10000…) |
status | live (في المتجر، الافتراضي) أو removed أو all |
tld | منطقة النطاق، مثل com |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
تصنيف Google Play لبلد وفئة: حتى 200 مركز، وتغير الترتيب منذ اللقطة السابقة (change: عدد المراكز التي صعدها، و"new" للداخلين الجدد)، والأيقونة والتثبيتات.
country * | البلد، رمز ISO: US وDE وBR… |
category * | الفئة، مثل GAME_PUZZLE |
collection | free | paid | grossing |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
جميع التصنيفات التي يوجد فيها التطبيق في أحدث لقطة: البلد والفئة والمجموعة والمركز؛ وعدد التصنيفات والبلدان وأفضل مركز.
id * | اسم حزمة التطبيق |
country | بلد واحد فقط |
collection | free | paid | grossing |
البلدان التي يتوفر فيها التطبيق على Google Play (من hreflang في خريطة موقع المتجر). عند 190 بلدًا أو أكثر يُعاد worldwide = true دون قائمة.
id * | اسم حزمة التطبيق |
المنافسة في السوق بناءً على التصنيفات المجانية: عتبة دخول أفضل 100 وأفضل 200 (تثبيتات التطبيق في ذلك المركز)، وحصة التطبيقات الجديدة (آخر 12 شهرًا) والمحلية (≤3 بلدان) في القمة، وحجم السوق المحلي. دون معاملات: جميع البلدان؛ country: فئات بلد واحد؛ category: فئة واحدة في جميع البلدان.
country | البلد، رمز ISO |
category | معرّف الفئة، مثل GAME_PUZZLE (راجع /v1/categories) |
sort | entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new |
order | desc | asc |
page | الصفحة، من 1 |
per | الصفوف في الصفحة، 1–100 (الافتراضي 20) |
حجم قاعدة البيانات: التطبيقات في المتجر والمحذوفة، والمطوّرون، والجديدة والمحذوفة في آخر 7 أيام، ووقت آخر تحديث. مجانًا.
* — معامل إلزامي
# 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+ (على الخادم، لا في المتصفح)
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;
يمكنك إنشاء مفتاح في حسابك. يُرسل الطلب مباشرة من متصفحك. لا يُخزَّن المفتاح في أي مكان ويختفي بعد إعادة تحميل الصفحة. تستهلك الطلبات من وحدة التحكم الأرصدة مثل غيرها.