# API-Referenz > https://storelift.net/de/docs/api/ Eine Basis-URL, ein Schlüssel, JSON rein und raus. Jeder Endpunkt unten ist auch ein MCP-Tool mit demselben Namen. OpenAPI 3.1: https://storelift.net/openapi.json ## 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 ` 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](https://storelift.net/de/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](https://storelift.net/de/hive/api/) ## 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": "", "message": "…", "docs": "…" }`. `error` ist stabil; verzweigen Sie danach, nicht nach `message`. Manche Codes ergänzen Felder wie `scope`, `field` oder `limit`. [Alle Fehlercodes](https://storelift.net/de/docs/api/errors/) ## 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. ```sh curl "https://storelift.net/v1/sandbox/apps" ``` Antwort: ```json { "apps": [ { "id": "sbx-lumen", "name": "Lumen — Sleep Sounds", "icon": null, "iosId": "1000000001", "androidPkg": "net.storelift.sandbox.lumen", "bundleId": "net.storelift.sandbox.lumen", "countries": [ "us", "gb", "de" ], "keywords": [ "sleep sounds", "white noise", "rain sounds" ], "keywordsByCountry": { "us": [ "sleep sounds", "white noise", "rain sounds" ], "gb": [ "sleep sounds", "white noise", "rain sounds" ], "de": [ "sleep sounds", "white noise", "rain sounds" ] }, "manualRivals": null, "keywordTags": null, "buriedKeywords": null, "goal": null, "tasksDone": null }, { "id": "sbx-quill", "name": "Quill Notes", "icon": null, "iosId": "1000000002", "androidPkg": null, "bundleId": "net.storelift.sandbox.quill", "countries": [ "us", "jp" ], "keywords": [ "notes", "markdown notes", "journal" ], "keywordsByCountry": { "us": [ "notes", "markdown notes", "journal" ], "jp": [ "notes", "markdown notes", "journal" ] }, "manualRivals": null, "keywordTags": null, "buriedKeywords": null, "goal": null, "tasksDone": null } ] } ``` 2. Jedes getrackte Keyword dieser App in der Storefront lesen. ```sh curl "https://storelift.net/v1/sandbox/apps/sbx-lumen/keywords?country=us" ``` Antwort (keywords: 2 von 8 Zeilen): ```json { "country": "us", "platform": "ios", "live": true, "measuredAt": "2026-09-27T02:10:00.000Z", "keywords": [ { "term": "sleep sounds", "measured": true, "rank": null, "demand": 73, "hintCount": 6, "popularity": 73, "popularitySource": "p2", "popularityWeek": null, "popularityNone": false, "difficulty": 70, "difficultyBand": "brutal", "difficultyNone": false, "popularityMeasuring": false, "difficultyMeasuring": false, "measuring": false, "searchDepth": 200 }, { "term": "white noise", "measured": true, "rank": 57, "demand": 37, "hintCount": 4, "popularity": 37, "popularitySource": "p2", "popularityWeek": null, "popularityNone": false, "difficulty": 70, "difficultyBand": "brutal", "difficultyNone": false, "popularityMeasuring": false, "difficultyMeasuring": false, "measuring": false, "searchDepth": 200 } ] } ``` 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. ```js 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: ```json { "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`: ```sh curl "https://storelift.net/v1/sandbox/apps/sbx-unknown/keywords?country=us" ``` ```json { "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](https://storelift.net/de/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. ```sh 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: ```json { "apps": [ { "id": "sbx-lumen", "name": "Lumen — Sleep Sounds", "icon": null, "iosId": "1000000001", "androidPkg": "net.storelift.sandbox.lumen", "bundleId": "net.storelift.sandbox.lumen", "countries": [ "us", "gb", "de" ], "keywords": [ "sleep sounds", "white noise", "rain sounds" ], "keywordsByCountry": { "us": [ "sleep sounds", "white noise", "rain sounds" ], "gb": [ "sleep sounds", "white noise", "rain sounds" ], "de": [ "sleep sounds", "white noise", "rain sounds" ] }, "manualRivals": null, "keywordTags": null, "buriedKeywords": null, "goal": null, "tasksDone": null }, { "id": "sbx-quill", "name": "Quill Notes", "icon": null, "iosId": "1000000002", "androidPkg": null, "bundleId": "net.storelift.sandbox.quill", "countries": [ "us", "jp" ], "keywords": [ "notes", "markdown notes", "journal" ], "keywordsByCountry": { "us": [ "notes", "markdown notes", "journal" ], "jp": [ "notes", "markdown notes", "journal" ] }, "manualRivals": null, "keywordTags": null, "buriedKeywords": null, "goal": null, "tasksDone": null } ] } ``` 2. `get_rivals` liefert die Apps, die über ihr ranken, Keyword für Keyword. ```sh 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): ```json { "country": "us", "platform": "ios", "rivals": [ { "id": "1000000101", "name": "Calm Rain", "ratings": 57046, "terms": [ { "term": "sleep sounds", "theirRank": 1, "ourRank": null }, { "term": "white noise", "theirRank": 1, "ourRank": 57 } ] }, { "id": "1000000102", "name": "Noisli", "ratings": 16114, "terms": [ { "term": "sleep sounds", "theirRank": 2, "ourRank": null }, { "term": "white noise", "theirRank": 2, "ourRank": 57 } ] } ] } ``` Was die Antwort sagt, Konkurrent für Konkurrent. `ourRank: null` ist ein Keyword, bei dem die App fehlt. ```js 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: ```json [ { "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: ```sh 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"}}}' ``` ```text 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. ```sh curl "https://storelift.net/v1/sandbox/account" ``` Antwort: ```json { "plan": "studio", "auth": "test_key", "scopes": [ "apps:read", "reviews:read", "ai:read", "revenue:read", "hive:read", "hive:spy", "hive:estimate", "ads:read" ], "apps": [ { "id": "sbx-lumen", "name": "Lumen — Sleep Sounds", "countries": [ "us", "gb", "de" ] }, { "id": "sbx-quill", "name": "Quill Notes", "countries": [ "us", "jp" ] } ], "appRestriction": false, "credits": { "used": 0, "limit": 50000, "resetsAt": null }, "hive": { "perDay": 10000 }, "ratePerSecond": 10, "docs": "https://storelift.net/guide/storelift-api/" } ``` 2. Dieselbe Antwort als Tool-Aufruf. ```sh 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: ```json { "plan": "studio", "auth": "test_key", "scopes": [ "apps:read", "reviews:read", "ai:read", "revenue:read", "hive:read", "hive:spy", "hive:estimate", "ads:read" ], "apps": [ { "id": "sbx-lumen", "name": "Lumen — Sleep Sounds", "countries": [ "us", "gb", "de" ] }, { "id": "sbx-quill", "name": "Quill Notes", "countries": [ "us", "jp" ] } ], "appRestriction": false, "credits": { "used": 0, "limit": 50000, "resetsAt": null }, "hive": { "perDay": 10000 }, "ratePerSecond": 10, "docs": "https://storelift.net/guide/storelift-api/" } ``` Prüfen Sie den Scope, den ein Aufruf braucht, bevor Sie ihn ausführen, und lesen Sie das Guthaben vor einer Reihe von Aufrufen. ```js 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: ```json { "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: ```sh curl "https://storelift.net/mcp" \ -H "content-type: application/json" \ -d '{"jsonrpc":"2.0","id":9,"method":"tools/call","params":{"name":"whoami","arguments":{}}}' ``` ```json { "jsonrpc": "2.0", "id": 9, "error": { "code": -32001, "message": "No credentials were sent. Sign in with OAuth on any plan, or add Authorization: Bearer . 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. - `appId` (path, string) — app id from list_apps - `country` (query, string) — country code, e.g. tr, us (defaults to the app's first country) - `platform` (query, ios | android) — defaults to ios - `country` (query, string) — storefront code, e.g. us (defaults to us) ## [Konto](https://storelift.net/de/docs/api/account/) Plan, Scopes und Nutzung des Schlüssels selbst, die Kontosuche und der Alarm-Feed. Plan und Nutzung zu lesen kostet 0 Credits. - [`GET /alerts`](https://storelift.net/de/docs/api/account/#list_alerts) — The alert feed of this workspace — rank drops and rises, keywords entering or leaving the results, rivals… (1) - [`GET /portfolio`](https://storelift.net/de/docs/api/account/#get_portfolio_overview) — Today across every app in the workspace, one row per app: live users, users and new users, ad revenue,… (2) - [`GET /account`](https://storelift.net/de/docs/api/account/#whoami) — Who this key or session belongs to: plan, how it authenticated, the scopes it carries, the apps it may… (0) - [`GET /usage`](https://storelift.net/de/docs/api/account/#get_usage) — Every quota of the workspace with what is used and the reset time: tracked keywords, apps, discovery, AI… (0) - [`GET /search`](https://storelift.net/de/docs/api/account/#search) — Search this account's own records — app names and store ids, tracked keywords, and the rival apps that… (1) - [`GET /fetch`](https://storelift.net/de/docs/api/account/#fetch) — The full record behind one id from search: an app card, one tracked keyword with its current state and… (1) ## [Ihre Apps](https://storelift.net/de/docs/api/apps/) Die Apps, die dieser Workspace trackt: Rankings, Konkurrenten, Rezensionen, Store-Seite, Verlauf des Store-Eintrags, Featuring, Charts und Prüfungen des Store-Eintrags. - [`GET /apps`](https://storelift.net/de/docs/api/apps/#list_apps) — List the apps tracked in this Storelift account (id, name, countries, keywords) (1) - [`GET /apps/{appId}/keywords`](https://storelift.net/de/docs/api/apps/#get_keywords) — Keyword ranks for one app in one App Store / Google Play country (1) - [`GET /apps/{appId}/rivals`](https://storelift.net/de/docs/api/apps/#get_rivals) — Apps that rank ABOVE this app in search (1) - [`GET /apps/{appId}/ai`](https://storelift.net/de/docs/api/apps/#get_ai_visibility) — App mentions in a dated sample of AI engine answers; this does not reproduce what ChatGPT, Claude or… (1) - [`GET /apps/{appId}/ai-check`](https://storelift.net/de/docs/api/apps/#run_ai_visibility_check) — Start an AI visibility sample for one app in one country, with the engines available for the run (1) - [`GET /apps/{appId}/history`](https://storelift.net/de/docs/api/apps/#get_history) — Keyword rank history for one country (1) - [`GET /apps/{appId}/page`](https://storelift.net/de/docs/api/apps/#get_store_page) — The app's own store listing signals for one country (name and subtitle are not included): version, in-app… (1) - [`GET /apps/{appId}/reviews`](https://storelift.net/de/docs/api/apps/#get_reviews) — Recent reviews for one country: `list` holds the App Store reviews, `android` the Google Play reviews (a… (1) - [`GET /apps/{appId}/charts`](https://storelift.net/de/docs/api/apps/#get_charts) — App Store chart position for one country: current ranks per list (free / paid / grossing, overall and in… (1) - [`GET /apps/{appId}/reviews/search`](https://storelift.net/de/docs/api/apps/#search_reviews) — Search one app's reviews in one storefront by text, star rating, app version and date range, newest first… (1) - [`GET /apps/{appId}/reviews/stats`](https://storelift.net/de/docs/api/apps/#get_review_stats) — Star-rating distribution, average and share of 1–2 star reviews for one app in one storefront, plus a… (1) - [`GET /apps/{appId}/reviews/summary`](https://storelift.net/de/docs/api/apps/#summarize_reviews) — Review AI for one app in one storefront: a summary of the recent reviews and the themes in them —… (1) - [`GET /apps/{appId}/reviews/reply-draft`](https://storelift.net/de/docs/api/apps/#draft_review_reply) — A developer reply draft for one review, in the storefront's language (1) - [`GET /apps/{appId}/timeline`](https://storelift.net/de/docs/api/apps/#get_listing_timeline) — Dated changes to one app's listing — new version, screenshots, in-app events, featuring from the store… (1) - [`GET /apps/{appId}/today`](https://storelift.net/de/docs/api/apps/#get_today) — One app's day in one answer — the Today screen: purchases, trials and renewals from the connected sources,… (1) - [`GET /apps/{appId}/competition`](https://storelift.net/de/docs/api/apps/#get_keyword_competition) — How many apps compete on each keyword in one storefront, returned for terms seen on two or more apps (1) - [`GET /apps/{appId}/rivals/{rivalId}`](https://storelift.net/de/docs/api/apps/#get_rival_detail) — One rival of your app in one storefront: its name, rating and rating count with a 90-day history of them… (1) - [`GET /apps/{appId}/rivals/{rivalId}/adnetworks`](https://storelift.net/de/docs/api/apps/#get_rival_ad_networks) — How a rival monetises with ads: the ad networks it works with, each marked DIRECT or RESELLER (1) - [`GET /apps/{appId}/rivals/{rivalId}/market`](https://storelift.net/de/docs/api/apps/#get_rival_market) — A rival's market in one storefront: on Google Play the exact install count and in-app purchase price… (1) - [`GET /apps/{appId}/storefront-audit`](https://storelift.net/de/docs/api/apps/#get_storefront_audit) — Your iOS listing in every App Store storefront: where the app is sold, which storefronts serve the… (1) - [`GET /apps/{appId}/suggest`](https://storelift.net/de/docs/api/apps/#suggest_keywords) — New keyword ideas for one app in one storefront, written in that storefront's search language: terms of… (1) - [`POST /apps/{appId}/validate-listing`](https://storelift.net/de/docs/api/apps/#validate_listing) — Check a draft App Store listing before it goes to App Store Connect (1) - [`GET /apps/{appId}/draft`](https://storelift.net/de/docs/api/apps/#draft_listing) — A listing draft — title, subtitle, promotional text and description — built from the keywords measured for… (1) - [`GET /apps/{appId}/localize`](https://storelift.net/de/docs/api/apps/#localize_listing) — Write the full App Store listing for a new locale — name, subtitle, keyword field and description — from… (1) - [`GET /apps/{appId}/shot-text`](https://storelift.net/de/docs/api/apps/#get_screenshot_text) — The caption text on your first four App Store screenshots in one storefront (1) - [`GET /apps/{appId}/chart-movers`](https://storelift.net/de/docs/api/apps/#get_chart_movers) — Who moved in the app's own category chart: risers and fallers (3+ places), new entrants and drop-outs,… (1) - [`GET /apps/{appId}/featuring`](https://storelift.net/de/docs/api/apps/#get_featuring) — Where Apple shows the app today, per country: editorial cards (dedicated: true when the story is about… (1) - [`GET /apps/{appId}`](https://storelift.net/de/docs/api/apps/#get_app) — One tracked app with its platform ids, countries, tracked keywords per country and the latest measurement… (1) - [`GET /apps/{appId}/weekly-plan`](https://storelift.net/de/docs/api/apps/#get_weekly_plan) — This week's listing suggestions for the app — the same list as the dashboard's "This week" card, best first (1) ## [Umsatz & Apple Ads](https://storelift.net/de/docs/api/growth/) 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. - [`GET /apps/{appId}/revenue`](https://storelift.net/de/docs/api/growth/#get_revenue) — Revenue and downloads for one app from the sources the user connected: App Store Connect daily units per… (1) - [`GET /apps/{appId}/subscriptions`](https://storelift.net/de/docs/api/growth/#get_subscription_events) — Subscription event counts for one app from the RevenueCat / Adapty webhook: per day and per country —… (1) - [`GET /apps/{appId}/funnel`](https://storelift.net/de/docs/api/growth/#get_store_funnel) — The App Store conversion funnel for one app from App Store Connect analytics: impressions → product page… (1) - [`GET /apps/{appId}/campaigns`](https://storelift.net/de/docs/api/growth/#get_ads_campaigns) — Apple Ads campaigns that promote one app (matched by the app's App Store id, not by name): spend,… (1) - [`GET /apps/{appId}/ads-keywords`](https://storelift.net/de/docs/api/growth/#get_ads_keywords) — Every Apple Ads keyword bought for one app across its campaigns (last 28 days), by spend: bid, match type,… (1) - [`GET /apps/{appId}/ads-search-terms`](https://storelift.net/de/docs/api/growth/#get_ads_search_terms) — The searches people actually typed that triggered the app's Apple Ads (last 28 days), by spend: the search… (1) - [`GET /apps/{appId}/ads-commands`](https://storelift.net/de/docs/api/growth/#get_ads_command_status) — Apple Ads commands for one app's campaigns — from the dashboard, from automation rules and from… (1) - [`GET /apps/{appId}/search-popularity`](https://storelift.net/de/docs/api/growth/#get_search_popularity) — Apple's own search popularity, from the Apple Ads account connected to this workspace: the most searched… (1) - [`GET /apps/{appId}/pricing`](https://storelift.net/de/docs/api/growth/#get_pricing_offers) — Product prices and offer codes for one app from the RevenueCat or Adapty webhook, over the last 365 days:… (1) - [`GET /apps/{appId}/country-prices`](https://storelift.net/de/docs/api/growth/#get_country_prices) — Country prices for one of the app's products, read from App Store Connect / Google Play (Pro): per country… (1) - [`GET /apps/{appId}/change-impact`](https://storelift.net/de/docs/api/growth/#get_change_impact) — What a change did: for one change day (a new version, screenshots, subtitle, keyword field, a campaign… (1) ## [Hive](https://storelift.net/de/docs/api/hive/) Alle Apps und Märkte, die das Storelift-Netzwerk misst, ob Sie sie tracken oder nicht. Teil von Hive Explorer. - [`GET /rank-check`](https://storelift.net/de/docs/api/hive/#check_rank) — The live rank of one of your apps for any search term in one storefront, as the store shows it right now —… (10) - [`GET /keyword-difficulty`](https://storelift.net/de/docs/api/hive/#get_keyword_metrics) — Demand and difficulty inputs for one App Store search term in one storefront: its demand (`demand`) and… (10) - [`GET /hive/find`](https://storelift.net/de/docs/api/hive/#find_apps) — Find apps across the top charts we measure: filter by category, storefront, chart (Top Grossing, Top Free,… (20) - [`GET /hive/charts`](https://storelift.net/de/docs/api/hive/#market_charts) — One top chart as we last measured it: the ranked app ids for a storefront, list kind and optional… (10) - [`GET /hive/movers`](https://storelift.net/de/docs/api/hive/#market_movers) — Who climbed, who fell, who entered and who left one top chart, against the same chart N days ago (10) - [`GET /hive/new`](https://storelift.net/de/docs/api/hive/#market_new_apps) — Apps seen on a top chart for the first time, newest first, with the publisher behind each one (10) - [`GET /hive/publisher/{publisherId}`](https://storelift.net/de/docs/api/hive/#market_publisher) — Every app of one publisher that we have seen on a chart, with the day each was first seen (10) - [`GET /hive/resolve`](https://storelift.net/de/docs/api/hive/#hive_search_apps) — Find any app's id: by name or developer (the top matches in that storefront, with publisher, category,… (10) - [`GET /hive/similar/{appId}`](https://storelift.net/de/docs/api/hive/#hive_similar_apps) — The store's own similar-apps shelf for any app (Apple's You Might Also Like, Google's Similar apps), in… (10) - [`GET /hive/reviews/{appId}`](https://storelift.net/de/docs/api/hive/#hive_app_reviews) — Any app's recent reviews in one storefront, newest first: stars, title, text, version and date, plus the… (10) - [`POST /hive/keywords/{term}/metrics/measure`](https://storelift.net/de/docs/api/hive/#hive_measure_keyword_metrics) — Start a measurement of one keyword's popularity and/or difficulty in one storefront when the stored value… (50) - [`GET /hive/apps/{id}`](https://storelift.net/de/docs/api/hive/#hive_app_details) — Any app's latest daily measurement (10) - [`GET /hive/keywords/{term}/ranks`](https://storelift.net/de/docs/api/hive/#hive_keyword_ranks) — Who ranks for a keyword, day by day (10) - [`GET /hive/keywords/{term}/metrics`](https://storelift.net/de/docs/api/hive/#hive_keyword_metrics) — Read a keyword's current popularity and difficulty (10) - [`GET /hive/keywords/{term}/metrics/history`](https://storelift.net/de/docs/api/hive/#hive_keyword_metrics_history) — Read stored keyword metric observations over time (20) - [`GET /hive/spy/{id}`](https://storelift.net/de/docs/api/hive/#hive_keyword_spy) — The keywords any app ranks for (200) - [`GET /hive/estimate/{id}`](https://storelift.net/de/docs/api/hive/#hive_estimate) — Revenue and downloads for any app (500) - [`GET /hive/gap`](https://storelift.net/de/docs/api/hive/#get_keyword_gap) — Keyword gap across several apps (400) - [`GET /hive/research`](https://storelift.net/de/docs/api/hive/#hive_keyword_research) — Keyword research from a seed term (50) - [`GET /hive/landscape`](https://storelift.net/de/docs/api/hive/#hive_category_landscape) — What it takes to rank in a category (10) ## [Schreibvorgänge](https://storelift.net/de/docs/api/actions/) 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. - [`GET /jobs/{jobId}`](https://storelift.net/de/docs/api/actions/#get_job) — Status of a long-running job started by a confirmed action (Apple Ads command, review reply, listing… (0) - [`POST /actions`](https://storelift.net/de/docs/api/actions/#preview_action) — Preview a write (0) - [`POST /actions/confirm`](https://storelift.net/de/docs/api/actions/#confirm_action) — Apply a previewed write (pro Aktion)