Basis-URL: https://apiplay.top/api/v1. Registrieren Sie sich, erstellen Sie einen API-Schlüssel in Ihrem Konto und senden Sie Ihre erste Anfrage:
Maschinenlesbare API-Beschreibung: OpenAPI 3.1 · Postman-Collection — in Postman, Insomnia oder einen Client-Generator (openapi-generator) importieren und ein fertiges SDK für Ihre Sprache erhalten.
curl -H "X-API-Key: IHR_SCHLUESSEL" "https://apiplay.top/api/v1/app?id=com.whatsapp"
Die Daten umfassen über 4 Millionen Google-Play-Apps aus dem US-Store auf Englisch (aus einem anderen Land, falls eine App in den USA nicht verfügbar ist), nächtlich aktualisiert. Apps, die aus dem Store verschwinden, bleiben mit ihren letzten Daten in der Datenbank.
Jede Anfrage außer /v1/health muss den API-Schlüssel in einem Header enthalten:
X-API-Key: ak_live_…
Ebenfalls akzeptiert: Authorization: Bearer …. Der Schlüssel darf nicht in URL-Parametern übergeben werden: Er würde in Logs und im Browserverlauf landen.
Jeder Aufruf kostet je nach Endpunkt 0–3 Credits, unabhängig von der Anzahl der Zeilen in der Antwort (bis 100); der Sammelaufruf apps kostet 1 Credit pro App. Zuerst werden die Tarif-Credits des laufenden Monats verbraucht, dann das Prepaid-Guthaben. Schlägt eine Anfrage auf unserer Seite fehl, werden die Credits erstattet. Tarife & Pakete
| Header | Bedeutung |
|---|---|
X-Credits-Cost | Credits, die diese Anfrage gekostet hat |
X-Credits-Remaining | verbleibende Credits (Tarif + Guthaben) |
X-Cache | HIT — aus dem Cache (schneller), MISS — neue Abfrage an den Index |
X-RateLimit-Limit / -Remaining | das Minutenlimit des Schlüssels und der Rest |
X-Plan | free | pro | scale | business |
Ihre verbleibenden Credits stehen auch im Feld _credits jeder Antwort und unter /v1/account (kostenlos).
Jede Antwort hat das Feld ok. Listen enthalten results, total, page, per, pages. Fehler: ok = false, error ist die Erklärung, code ein maschinenlesbarer Code. Datumsangaben sind ISO 8601 in 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 | Wann |
|---|---|---|
| 400 | invalid_param, invalid_request | ungültiger oder fehlender Parameter |
| 401 | missing_api_key, invalid_api_key | kein Schlüssel oder Schlüssel widerrufen |
| 402 | insufficient_credits | nicht genug Credits — Guthaben aufladen oder Tarif upgraden |
| 403 | account_blocked, plan_required | das Konto ist gesperrt oder der Endpunkt erfordert einen höheren Tarif |
| 404 | not_found | App oder Entwickler nicht in der Datenbank, oder unbekannter Endpunkt |
| 429 | rate_limited | Anfragelimit pro Minute überschritten |
| 503 | service_unavailable | vorübergehendes Datenbankproblem — später erneut versuchen; es werden keine Credits berechnet |
Alle Endpunkte sind GET /api/v1/{name}. Paginierung: page (ab 1) und per (1–100), bis zum 10.000. Ergebnis. Sortierung: sort + order=asc|desc.
Ihr Tarif, Tarif-Credits und Guthaben, das Datum der Credit-Erneuerung und das Minutenlimit.
Der vollständige App-Eintrag: Titel, Beschreibung, Neuigkeiten, Installationen (Schwelle und genaue Zahl), Bewertung, Anzahl der Bewertungen und Rezensionen, Sterneverteilung, Preis, In-App-Käufe, Werbung, Kategorie, Altersfreigabe, Version, minimales Android, Veröffentlichungs- und Update-Datum, Icon, Screenshots, Video, Entwickler und seine Website. Bei entfernten Apps: die zuletzt gespeicherten Daten und das Entfernungsdatum.
id * | Paketname der App |
Bis zu 100 Apps in einem Aufruf: GET ?ids=a,b,c oder POST mit der Liste im Body (eine pro Zeile oder JSON {"ids": […]}). 1 Credit pro App; nicht gefundene stehen in not_found.
ids * | Paketnamen, kommagetrennt, bis 100 |
Suche und Filter über die gesamte Datenbank. Mindestens ein Filter ist erforderlich. Ohne q wird nach Installationen sortiert.
q | Suchwörter für Titel, Beschreibung und Entwicklername |
category | Kategorie-ID, z. B. GAME_PUZZLE (siehe /v1/categories) |
developer_id | Google-Play-Entwickler-ID |
min_installs | Mindestinstallationen (Google-Play-Schwellen: 1000, 10000…) |
max_installs | maximale Installationen |
min_score | Mindestbewertung, 0–5 |
min_ratings | Mindestanzahl Bewertungen |
free | true — nur kostenlose, false — nur kostenpflichtige |
ads | true — mit Werbung, false — ohne |
iap | true — mit In-App-Käufen |
lang | Titelsprache, ISO-Code: en, de, pt… |
released_from | veröffentlicht ab Datum, YYYY-MM-DD |
released_to | veröffentlicht bis einschließlich Datum |
updated_from | aktualisiert ab Datum |
updated_to | aktualisiert bis einschließlich Datum |
status | live (im Store, Standard), removed oder all |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
order | desc | asc |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Vorschläge nach Titelanfang: die 10 beliebtesten Treffer. Kostenlos.
q * | Titelanfang, ab 2 Zeichen |
Ein Entwickler und alle seine Apps: Anzahl (im Store und entfernt), Installationen gesamt, Durchschnittsbewertung, erste Veröffentlichung, Kategorien, Website. Im Business-Tarif: E-Mail, Telefon, Adresse und Firmenname.
id | Entwickler-ID (aus einer App: developer.id) |
name | oder der genaue Entwicklername |
status | all (Standard), live oder removed |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Neue Apps nach Datum der Erstveröffentlichung, neueste zuerst.
since | ab Datum, YYYY-MM-DD (Standard: vor 7 Tagen) |
until | bis einschließlich Datum |
category | Kategorie-ID, z. B. GAME_PUZZLE (siehe /v1/categories) |
min_installs | Mindestinstallationen (Google-Play-Schwellen: 1000, 10000…) |
lang | Titelsprache, ISO-Code: en, de, pt… |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Apps, die aus Google Play verschwunden sind (in allen 19 geprüften Ländern nicht vorhanden), nach Entfernungsdatum. Der Eintrag behält die letzten Daten.
since | ab Datum, YYYY-MM-DD (Standard: vor 7 Tagen) |
until | bis einschließlich Datum |
category | Kategorie-ID, z. B. GAME_PUZZLE (siehe /v1/categories) |
min_installs | Mindestinstallationen (Google-Play-Schwellen: 1000, 10000…) |
sort | removed_at | installs | score |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Wörter und Phrasen aus App-Titeln je Sprache: wie viele Apps und Entwickler sie nutzen, wie viele davon stark sind (100 Tsd.+ Installationen), Installationen gesamt, Anteil des Marktführers und ein Opportunity-Score.
lang | Sprache, Standard en |
q | Wort oder Phrase |
phrase | true — nur Zwei-Wort-Phrasen, false — nur einzelne Wörter |
min_apps | Mindestanzahl Apps |
max_apps | maximale Anzahl Apps |
sort | opportunity | apps | installs | strong | devs | max_installs |
order | desc | asc |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Alle Kategorien mit Anzahl der Apps und Installationen gesamt. Kostenlos.
status | live (im Store, Standard), removed oder all |
Apps, deren Website-Domain des Entwicklers frei registrierbar ist, mit der Beliebtheit der App. Tarif Pro und höher.
category | Kategorie-ID, z. B. GAME_PUZZLE (siehe /v1/categories) |
min_installs | Mindestinstallationen (Google-Play-Schwellen: 1000, 10000…) |
status | live (im Store, Standard), removed oder all |
tld | Domain-Endung, z. B. com |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Ein Google-Play-Chart für ein Land und eine Kategorie: bis zu 200 Plätze, Platzveränderung seit dem vorherigen Stand (change: um wie viele Plätze gestiegen, "new" für Neueinsteiger), Icon und Installationen.
country * | Land, ISO-Code: US, DE, BR… |
category * | Kategorie, z. B. GAME_PUZZLE |
collection | free | paid | grossing |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Alle Charts mit der App im letzten Stand: Land, Kategorie, Kollektion, Platz; Anzahl der Charts und Länder und bester Platz.
id * | Paketname der App |
country | nur ein Land |
collection | free | paid | grossing |
Länder, in denen die App bei Google Play verfügbar ist (laut hreflang in der Store-Sitemap). Bei 190+ Ländern wird worldwide = true ohne Liste zurückgegeben.
id * | Paketname der App |
Marktwettbewerb auf Basis der kostenlosen Charts: Einstiegsschwelle für Top 100 und Top 200 (Installationen der App auf diesem Platz), Anteil neuer (12 Monate) und lokaler (≤3 Länder) Apps in den Top-Plätzen und Größe des lokalen Markts. Ohne Parameter: alle Länder; country: die Kategorien eines Landes; category: eine Kategorie in allen Ländern.
country | Land, ISO-Code |
category | Kategorie-ID, z. B. GAME_PUZZLE (siehe /v1/categories) |
sort | entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new |
order | desc | asc |
page | Seite, ab 1 |
per | Zeilen pro Seite, 1–100 (Standard 20) |
Größe der Datenbank: Apps im Store und entfernte, Entwickler, neue und entfernte der letzten 7 Tage, Zeit der letzten Aktualisierung. Kostenlos.
* — Pflichtparameter
# curl — one app
curl -H "X-API-Key: $KEY" "https://apiplay.top/api/v1/app?id=org.telegram.messenger"
# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apiplay.top/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://apiplay.top/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apiplay.top/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+ (auf dem Server — nicht im Browser)
const res = await fetch("https://apiplay.top/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://apiplay.top/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;
Einen Schlüssel erstellen Sie in Ihrem Konto. Die Anfrage geht direkt von Ihrem Browser aus. Der Schlüssel wird nirgends gespeichert und ist nach dem Neuladen der Seite weg. Anfragen aus der Konsole verbrauchen Credits wie alle anderen.