Entwicklerdokumentation

API-Referenz

Eine Basis-URL, ein Schlüssel, JSON rein und raus. Jeder Endpunkt unten ist auch ein MCP-Tool mit demselben Namen.

openapi.json · Fehlercodes · MCP-Server

Basis-URL

https://storelift.net/v1

Jeder Pfad unten ist relativ dazu. Senden Sie GET für Lesezugriffe und POST nur auf /actions.

Authentifizierung

Senden Sie den Schlüssel in Authorization: Bearer <key> oder in x-api-key. Schlüssel erstellen Sie unter Einstellungen › API; jeder Schlüssel trägt Scopes, eine optionale IP-Freigabeliste, eine optionale App-Liste und ein optionales monatliches Credit-Budget. Ein Schlüssel, der sein Budget erreicht, antwortet mit 402 key_budget_reached, bis der Monat wechselt; die anderen Schlüssel funktionieren weiter.

Live-Schlüssel (sl_live_) für die REST-API gibt es ab Pro oder in jedem Plan mit einem Credit-Paket. Free enthält einen Live-Schlüssel, der nur am MCP-Server funktioniert. Testschlüssel (sl_test_) liefern in jedem Plan die Sandbox-Daten. Assistenten melden sich in jedem Plan per OAuth über den MCP-Server an.

Credits und Limits

Jeder Aufruf kostet die Credits, die bei ihm angegeben sind; /account und /usage kosten 0, und die Vorschau eines Schreibvorgangs kostet 0. Jede Antwort enthält x-credits-used, x-credits-limit, x-credits-remaining und x-credits-reset.

Die Anfragen pro Sekunde sind je Plan festgelegt; darüber erhalten Sie 429 rate_limited mit retry-after. Hive-Endpunkte öffnen sich mit gekauften API-Credits oder mit Hive Explorer und zählen zusätzlich gegen eine Tagesgrenze: 500 Aufrufe mit Paket-Credits, 10.000 mit Hive Explorer. Credits pro Aufruf

Sandbox

https://storelift.net/v1/sandbox beantwortet jeden Lesezugriff unten, der eine Beispielantwort hat, ohne Schlüssel und ohne Credits. Die Daten sind fest und datiert, damit Tests stabil bleiben.

Testschlüssel (sl_test_) liefern dieselben Daten auf der Live-Basis-URL und schreiben nie.

Einen Rang lesen

Ein Rang hat drei Zustände, und sie bleiben getrennt: measured: false heißt, die Suchanfrage wurde an diesem Tag nicht gemessen; rank: null heißt, sie wurde gemessen und die App steht außerhalb der gelesenen Ergebnisse; eine Zahl ist der Rang.

Fehler

Jeder Fehler hat denselben Body: { "error": "<code>", "message": "…", "docs": "…" }. error ist stabil; verzweigen Sie danach, nicht nach message. Manche Codes ergänzen Felder wie scope, field oder limit. Alle Fehlercodes

Praxisbeispiele

Drei Aufgaben, vom ersten Aufruf bis zum Ergebnis, das Sie behalten. Jeder Befehl läuft gegen die Sandbox, verbraucht also keine Credits und ändert nichts, und jede Antwort ist die, die die Sandbox dafür zurückgibt.

Mit Ihrem eigenen Schlüssel sind die Pfade dieselben ohne /sandbox, und jeder Aufruf kostet die bei ihm angegebenen Credits. Ein Testschlüssel (sl_test_) antwortet auch dort mit den Sandbox-Daten, für 0 Credits.

Die Keyword-Rankings dieser Woche in einen Bericht aufnehmen

Lesen Sie die Keywords einer App in einer Storefront und behalten Sie eine einzige Zeile. Wenn Sie das wöchentlich ausführen, reihen sich die Zeilen zu einem Trend.

Scope
apps:read
Credits
2 · 0 in der Sandbox oder mit einem Testschlüssel
Plan
Sandbox und Testschlüssel: jeder Plan · Live-Schlüssel: Pro und höher
Verfügbar ab
API 1.5.0
  1. Die App-ID finden.

    curl "https://storelift.net/v1/sandbox/apps"
    Antwort
  2. Jedes getrackte Keyword dieser App in der Storefront lesen.

    curl "https://storelift.net/v1/sandbox/apps/sbx-lumen/keywords?country=us"
    Antwort (keywords: 2 von 8 Zeilen)

Verdichten Sie die Antwort zu der Zeile, die Sie speichern. Ein Keyword mit measured: true und rank: null wurde gemessen, und die App fehlt in den Ergebnissen; es wird getrennt von einem Keyword gezählt, das nicht gemessen wurde.

function weeklyRow(body) {
  const ranked = body.keywords.filter((k) => k.measured && k.rank !== null);
  const best = ranked.reduce((a, b) => (a && a.rank <= b.rank ? a : b), null);
  return {
    measuredAt: body.measuredAt,
    country: body.country,
    platform: body.platform,
    keywords: body.keywords.length,
    ranked: ranked.length,
    absent: body.keywords.filter((k) => k.measured && k.rank === null).length,
    notMeasured: body.keywords.filter((k) => !k.measured).length,
    best: best && { term: best.term, rank: best.rank },
  };
}

Ergebnis

{
  "measuredAt": "2026-09-27T02:10:00.000Z",
  "country": "us",
  "platform": "ios",
  "keywords": 8,
  "ranked": 6,
  "absent": 2,
  "notMeasured": 0,
  "best": {
    "term": "nature sounds",
    "rank": 29
  }
}

Bei einer App-ID, die der Workspace nicht hat, lautet die Antwort 404:

curl "https://storelift.net/v1/sandbox/apps/sbx-unknown/keywords?country=us"
{
  "error": "not_found",
  "message": "No such app in this workspace.",
  "docs": "https://storelift.net/docs/api/errors#not_found"
}

Fragen, wer über Ihnen rankt

Dieselben Daten über den MCP-Server: Der Assistent macht zwei Tool-Aufrufe. Um sie von Hand zu senden, legen Sie einen Testschlüssel in STORELIFT_TEST_KEY ab.

Scope
apps:read
Credits
2 · 0 mit einem Testschlüssel
Plan
Testschlüssel und OAuth: jeder Plan · Live-Schlüssel: jeder Plan
Verfügbar ab
API 1.5.0 · Tools in storelift-mcp 1.1.1
  1. list_apps liefert die App-ID.

    curl "https://storelift.net/mcp" \
      -H "Authorization: Bearer $STORELIFT_TEST_KEY" \
      -H "content-type: application/json" \
      -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_apps","arguments":{}}}'
    Antwort
  2. get_rivals liefert die Apps, die über ihr ranken, Keyword für Keyword.

    curl "https://storelift.net/mcp" \
      -H "Authorization: Bearer $STORELIFT_TEST_KEY" \
      -H "content-type: application/json" \
      -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_rivals","arguments":{"appId":"sbx-lumen","country":"us"}}}'
    Antwort (rivals: 2 von 3 Zeilen)

Was die Antwort sagt, Konkurrent für Konkurrent. ourRank: null ist ein Keyword, bei dem die App fehlt.

function rivalsAhead(body) {
  return body.rivals.map((r) => ({
    name: r.name,
    ratings: r.ratings,
    aheadOn: r.terms.length,
    absentOn: r.terms.filter((t) => t.ourRank === null).length,
  }));
}

Ergebnis

[
  {
    "name": "Calm Rain",
    "ratings": 57046,
    "aheadOn": 8,
    "absentOn": 2
  },
  {
    "name": "Noisli",
    "ratings": 16114,
    "aheadOn": 8,
    "absentOn": 2
  },
  {
    "name": "Deep Sleep Tones",
    "ratings": 64683,
    "aheadOn": 8,
    "absentOn": 2
  }
]

Eine App-ID, die der Workspace nicht hat, kommt als Tool-Fehler zurück, den der Assistent lesen kann, nicht als fehlgeschlagene Anfrage:

curl "https://storelift.net/mcp" \
  -H "Authorization: Bearer $STORELIFT_TEST_KEY" \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":9,"method":"tools/call","params":{"name":"get_rivals","arguments":{"appId":"sbx-unknown","country":"us"}}}'
ERROR: No such app in this workspace.

Sehen, was Zugangsdaten lesen dürfen, über HTTP oder MCP

Der erste Aufruf jeder Integration: welcher Plan, welche Scopes, welche Apps und wie viele Credits übrig sind. GET /account und das Tool whoami liefern denselben Body, und keines von beiden kostet Credits.

Scope
keiner
Credits
0
Plan
Sandbox, Testschlüssel und OAuth: jeder Plan · Live-Schlüssel: Pro und höher
Verfügbar ab
API 1.5.0 · Tools in storelift-mcp 1.5.0
  1. Über HTTP.

    curl "https://storelift.net/v1/sandbox/account"
    Antwort
  2. Dieselbe Antwort als Tool-Aufruf.

    curl "https://storelift.net/mcp" \
      -H "Authorization: Bearer $STORELIFT_TEST_KEY" \
      -H "content-type: application/json" \
      -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"whoami","arguments":{}}}'
    Antwort

Prüfen Sie den Scope, den ein Aufruf braucht, bevor Sie ihn ausführen, und lesen Sie das Guthaben vor einer Reihe von Aufrufen.

function allowance(body) {
  return {
    plan: body.plan,
    auth: body.auth,
    scopes: body.scopes,
    apps: body.apps.map((a) => a.id),
    creditsLeft: body.credits.limit - body.credits.used,
    ratePerSecond: body.ratePerSecond,
  };
}

Ergebnis

{
  "plan": "studio",
  "auth": "test_key",
  "scopes": [
    "apps:read",
    "reviews:read",
    "ai:read",
    "revenue:read",
    "hive:read",
    "hive:spy",
    "hive:estimate",
    "ads:read"
  ],
  "apps": [
    "sbx-lumen",
    "sbx-quill"
  ],
  "creditsLeft": 50000,
  "ratePerSecond": 10
}

Ohne Zugangsdaten antwortet der MCP-Endpunkt mit 401 und einem JSON-RPC-Fehler, und ein Client, der die MCP-Autorisierung unterstützt, startet von dort die OAuth-Anmeldung:

curl "https://storelift.net/mcp" \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":9,"method":"tools/call","params":{"name":"whoami","arguments":{}}}'
{
  "jsonrpc": "2.0",
  "id": 9,
  "error": {
    "code": -32001,
    "message": "No credentials were sent. Sign in with OAuth on any plan, or add Authorization: Bearer <your Storelift API key>. Live keys require Pro, Studio, Enterprise, or an eligible Free account with purchased API credits or active Explorer. Tool access still depends on plan, scopes and credits. Generate a key at Storelift → Settings → API keys."
  }
}

Gemeinsame Parameter

Diese bedeuten bei jedem Endpunkt, der sie annimmt, dasselbe; jeder Endpunkt führt auf, welche er annimmt.

ParameterOrtTypBeschreibung
appIdpathstringApp-ID aus list_apps
countryquerystringLändercode, z. B. tr, us (Standard: erstes Land der App)
platformqueryios | androidStandard ios
countryquerystringStorefront-Code, z. B. us (Standard us)

Konto

Plan, Scopes und Nutzung des Schlüssels selbst, die Kontosuche und der Alarm-Feed. Plan und Nutzung zu lesen kostet 0 Credits.

  • GET /alertsDer Alarm-Feed dieses Workspace — Ranking-Verluste und -Gewinne, Keywords, die in die Ergebnisse kommen…
  • GET /portfolioDer heutige Tag über alle Apps des Workspace, eine Zeile pro App: Live-Nutzer, Nutzer und neue Nutzer…
  • GET /accountWem dieser Schlüssel oder diese Sitzung gehört: Tarif, Art der Authentifizierung, die enthaltenen…
  • GET /usageAlle Kontingente des Workspace mit Verbrauch und Zeitpunkt der Zurücksetzung: verfolgte Keywords, Apps…
  • GET /searchDurchsucht die eigenen Einträge dieses Kontos — App-Namen und Store-IDs, verfolgte Keywords und die…
  • GET /fetchDer vollständige Eintrag hinter einer ID aus search: eine App-Karte, ein verfolgtes Keyword mit…

Ihre Apps

Die Apps, die dieser Workspace trackt: Rankings, Konkurrenten, Rezensionen, Store-Seite, Verlauf des Store-Eintrags, Featuring, Charts und Prüfungen des Store-Eintrags.

Umsatz & Apple Ads

Die verbundenen Quellen je App: Umsatz, Abo-Ereignisse, der App-Store-Funnel, Preise und Angebotscodes, das Vorher und Nachher einer Änderung sowie Kampagnen, Keywords, Suchbegriffe und Befehle in Apple Ads. Scopes revenue:read und ads:read.

Hive

Alle Apps und Märkte, die das Storelift-Netzwerk misst, ob Sie sie tracken oder nicht. Teil von Hive Explorer.

Schreibvorgänge

Jeder Schreibvorgang läuft in zwei Schritten: eine Vorschau, die nichts ändert, dann die Bestätigung mit dem Token, das die Vorschau zurückgegeben hat.