תיעוד APK API

REST API עם נתוני Google Play: 4 מיליון אפליקציות, מפתחים, אפליקציות חדשות ואפליקציות שהוסרו, מילות מפתח משמות. הפורמט: JSON, קידוד UTF-8, CORS מופעל.

התחלה מהירה

כתובת בסיס: https://apkapi.com/api/v1. הירשמו, צרו מפתח API ב חשבון שלכם ושלחו את הבקשה הראשונה:

תיאור ה-API לקריאה ממוכנת: OpenAPI 3.1 · אוסף Postman — ייבאו אותו ל-Postman, ל-Insomnia או למחולל לקוחות (openapi-generator) וקבלו SDK מוכן לשפה שלכם.

curl -H "X-API-Key: המפתח_שלכם" "https://apkapi.com/api/v1/app?id=com.whatsapp"

הנתונים כוללים מעל 4 מיליון אפליקציות ב-Google Play מהחנות האמריקאית באנגלית (ממדינה אחרת אם האפליקציה אינה זמינה בארה״ב), ומתעדכנים בכל לילה. אפליקציות שנעלמו מהחנות נשארות במסד הנתונים עם הנתונים האחרונים שלהן.

אימות

כל בקשה, למעט /v1/health, חייבת לכלול מפתח API בכותרת:

X-API-Key: ak_live_…

מתקבל גם: Authorization: Bearer …. אסור להעביר את המפתח בפרמטרים של ה-URL: כך הוא יגיע ללוגים ולהיסטוריית הדפדפן.

שמרו את המפתח בשרת שלכם. אם תטמיעו אותו ב-JavaScript בדף, כל מבקר יוכל להעתיק אותו. בצעו בקשות מהפרונטאנד דרך הבקאנד שלכם.

אסימונים ומגבלות

כל קריאה עולה 0–3 אסימונים בהתאם לנקודת הקצה, ללא קשר למספר השורות בתשובה (עד 100); בקשת apps מרוכזת עולה אסימון אחד לכל אפליקציה. תחילה נצרכים האסימונים החודשיים ואחריהם אלה שנרכשו. אם הבקשה נכשלה בגללנו, האסימונים מוחזרים. מסלולים וחבילות

כותרתמשמעות
X-Tokens-Costכמה אסימונים עלתה הבקשה הזו
X-Tokens-Remainingכמה אסימונים נותרו (חודשיים + שנרכשו)
X-CacheHIT — תשובה מהמטמון (מהיר יותר), MISS — שאילתה חדשה לאינדקס
X-RateLimit-Limit / -Remainingמגבלת הבקשות לדקה של המפתח והיתרה שנותרה
X-Planfree | pro | business

יתרת האסימונים מופיעה גם בשדה _tokens בכל תשובה וב-/v1/account (בחינם). השמות הישנים _credits ו-X-Credits-* הוצאו משימוש, אך עדיין פועלים.

פורמט התשובה ושגיאות

בכל תשובה יש שדה 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 }, … },
  "_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. …" }
HTTPcodeמתי זה קורה
400invalid_param, invalid_requestפרמטר שגוי או חסר
401missing_api_key, invalid_api_keyאין מפתח, או שהמפתח בוטל
402insufficient_creditsאין מספיק אסימונים — רכשו חבילה
403account_blocked, plan_requiredהחשבון חסום, או שנקודת הקצה נפתחת לאחר רכישת האסימונים הראשונה
404not_foundהאפליקציה או המפתח אינם במסד הנתונים, או שנקודת הקצה אינה מוכרת
429rate_limitedחרגתם ממגבלת הבקשות לדקה
503service_unavailableבעיה זמנית במסד הנתונים — נסו שוב מאוחר יותר; אסימונים לא נגבים

נקודות קצה

כל נקודות הקצה הן GET /api/v1/{שם}. עימוד: page (מ-1) ו-per (1–100), עד התוצאה ה-10,000. מיון: sort + order=asc|desc.

GET/api/v1/accountחינם

המסלול שלכם, יתרת האסימונים, תאריך חידוש האסימונים החודשיים והמגבלה לדקה.

אפליקציות
GET/api/v1/app 1 אסימונים

כרטיס אפליקציה מלא: שם, תיאור, «מה חדש», התקנות (סף ומספר מדויק), דירוג, מספר הדירוגים והביקורות, התפלגות כוכבים, מחיר, רכישות, פרסומות, קטגוריה, סיווג גיל, גרסה, Android מינימלי, תאריכי שחרור ועדכון, סמל, צילומי מסך, וידאו, מפתח והאתר שלו. עבור אפליקציות שהוסרו — הנתונים האחרונים שנשמרו ותאריך ההיעלמות.

id *שם חבילת האפליקציה
GET · POST/api/v1/apps אסימון אחד לכל אפליקציה

עד 100 כרטיסי אפליקציות בבקשה אחת: GET ?ids=a,b,c או POST עם רשימה בגוף הבקשה (אחד בכל שורה, או JSON {"ids": […]}). אסימון אחד לכל אפליקציה; מזהים שלא נמצאו חוזרים ב-not_found.

ids *שמות חבילות מופרדים בפסיקים, עד 100
GET/api/v1/suggest חינם

הצעות לפי תחילת השם: 10 ההתאמות הפופולריות ביותר. בחינם.

q *תחילת השם, מ-2 תווים
מפתחים
GET/api/v1/developer 2 אסימונים

מפתח וכל האפליקציות שלו: כמות (בחנות ושהוסרו), סך ההתקנות, דירוג ממוצע, שחרור ראשון, קטגוריות, אתר. במסלול Business — אימייל, טלפון, כתובת ושם משפטי.

idמזהה מפתח (מכרטיס האפליקציה: developer.id)
nameאו השם המדויק של המפתח
statusall (ברירת מחדל), live או removed
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageעמוד, מ-1
perשורות בעמוד, 1–100 (ברירת מחדל 20)
שינויים בחנות
GET/api/v1/new 2 אסימונים

אפליקציות חדשות לפי תאריך השחרור הראשון, החדשות ביותר קודם.

sinceמתאריך זה, YYYY-MM-DD (ברירת מחדל: לפני 7 ימים)
untilעד תאריך זה, כולל
categoryמזהה קטגוריה, למשל GAME_PUZZLE (ראו /v1/categories)
min_installsמינימום התקנות (ספי Google Play: 1000, 10000…)
langשפת השם, קוד ISO: en, de, pt…
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageעמוד, מ-1
perשורות בעמוד, 1–100 (ברירת מחדל 20)
GET/api/v1/removed 2 אסימונים

אפליקציות שנעלמו מ-Google Play (אינן קיימות באף אחת מ-19 המדינות שאנחנו בודקים), לפי תאריך ההיעלמות. הכרטיס שומר את הנתונים האחרונים.

sinceמתאריך זה, YYYY-MM-DD (ברירת מחדל: לפני 7 ימים)
untilעד תאריך זה, כולל
categoryמזהה קטגוריה, למשל GAME_PUZZLE (ראו /v1/categories)
min_installsמינימום התקנות (ספי Google Play: 1000, 10000…)
sortremoved_at | installs | score
pageעמוד, מ-1
perשורות בעמוד, 1–100 (ברירת מחדל 20)
שוק
GET/api/v1/keywords 2 אסימונים

מילים וביטויים משמות אפליקציות, בנפרד לכל שפה: כמה אפליקציות ומפתחים משתמשים בהם, כמה מהן חזקות (100 אלף התקנות ומעלה), סך ההתקנות, חלקו של המוביל וציון הזדמנות (opportunity).

langשפה, ברירת מחדל en
qמילה או ביטוי
phrasetrue — ביטויים של שתי מילים בלבד, false — מילים בודדות בלבד
min_appsמינימום אפליקציות
max_appsמקסימום אפליקציות
sortopportunity | apps | installs | strong | devs | max_installs
orderdesc | asc
pageעמוד, מ-1
perשורות בעמוד, 1–100 (ברירת מחדל 20)
GET/api/v1/categories חינם

כל הקטגוריות עם מספר האפליקציות וסך ההתקנות. בחינם.

statuslive (בחנות, ברירת מחדל), removed או all
GET/api/v1/free_domains 3 אסימוניםלאחר הרכישה הראשונה

אפליקציות שדומיין האתר של המפתח שלהן פנוי לרישום, יחד עם הפופולריות של האפליקציה. נפתח לאחר רכישת האסימונים הראשונה.

categoryמזהה קטגוריה, למשל GAME_PUZZLE (ראו /v1/categories)
min_installsמינימום התקנות (ספי Google Play: 1000, 10000…)
statuslive (בחנות, ברירת מחדל), removed או all
tldסיומת דומיין, למשל com
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pageעמוד, מ-1
perשורות בעמוד, 1–100 (ברירת מחדל 20)
GET/api/v1/charts 2 אסימונים

צ׳ארט עליון של Google Play למדינה וקטגוריה אחת: עד 200 מיקומים, שינוי מיקום מאז תמונת המצב הקודמת (change: בכמה מקומות עלתה, "new" — חדשה בצ׳ארט), סמל והתקנות.

country *מדינה, קוד ISO: US, DE, BR…
category *קטגוריה, למשל GAME_PUZZLE
collectionfree | paid | grossing
pageעמוד, מ-1
perשורות בעמוד, 1–100 (ברירת מחדל 20)
GET/api/v1/rankings 1 אסימונים

כל הצ׳ארטים שהאפליקציה נמצאת בהם בתמונת המצב האחרונה: מדינה, קטגוריה, אוסף, מיקום; מספר הצ׳ארטים והמדינות והמיקום הטוב ביותר.

id *שם חבילת האפליקציה
countryמדינה אחת בלבד
collectionfree | paid | grossing
GET/api/v1/availability 1 אסימונים

מדינות שבהן האפליקציה זמינה ב-Google Play (לפי hreflang ב-sitemap של החנות). אם יש 190+ מדינות, מוחזר worldwide = true ללא רשימה.

id *שם חבילת האפליקציה
GET/api/v1/markets 1 אסימונים

תחרותיות השווקים לפי צ׳ארטים חינמיים: סף הכניסה לטופ 100 ולטופ 200 (התקנות של האפליקציה במיקום הזה), חלקן של אפליקציות חדשות (ב-12 החודשים האחרונים) ומקומיות (עד 3 מדינות) בטופ, וגודל השוק המקומי. ללא פרמטרים — כל המדינות; country — הקטגוריות של מדינה אחת; category — קטגוריה אחת בכל המדינות.

countryמדינה, קוד ISO
categoryמזהה קטגוריה, למשל GAME_PUZZLE (ראו /v1/categories)
sortentry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new
orderdesc | asc
pageעמוד, מ-1
perשורות בעמוד, 1–100 (ברירת מחדל 20)
GET/api/v1/stats חינם

גודל מסד הנתונים: אפליקציות בחנות ואפליקציות שהוסרו, מפתחים, חדשות ושהוסרו ב-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("tokens left:", data["_tokens"]["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;

לנסות

אפשר ליצור מפתח ב חשבון שלכם. הבקשה נשלחת ישירות מהדפדפן שלכם. המפתח אינו נשמר בשום מקום ונעלם עם טעינת הדף מחדש. בקשות מהמסוף צורכות אסימונים בדיוק כמו בקשות רגילות.