# API 레퍼런스 > https://storelift.net/ko/docs/api/ 기본 URL 하나, 키 하나, 입력과 출력은 JSON입니다. 아래의 모든 엔드포인트는 같은 이름의 MCP 도구이기도 합니다. OpenAPI 3.1: https://storelift.net/openapi.json ## 기본 URL `https://storelift.net/v1` 아래의 모든 경로는 이 주소를 기준으로 합니다. 조회에는 `GET`을 보내고, `POST`는 `/actions`에서만 씁니다. ## 인증 키는 `Authorization: Bearer ` 또는 `x-api-key`에 넣어 보냅니다. 키는 설정 › API에서 만들며, 키마다 스코프, 선택 사항인 IP 허용 목록, 선택 사항인 앱 목록, 선택 사항인 월간 크레딧 예산을 가집니다. 예산에 도달한 키는 달이 바뀔 때까지 `402 key_budget_reached`로 응답하고, 다른 키는 계속 작동합니다. REST API용 라이브 키(`sl_live_`)는 Pro 이상에서, 또는 어느 요금제에서든 크레딧 팩이 있으면 쓸 수 있습니다. Free에는 MCP 서버에서만 작동하는 라이브 키 1개가 포함됩니다. 테스트 키(`sl_test_`)는 모든 요금제에서 샌드박스 데이터를 반환합니다. 어시스턴트는 모든 요금제에서 [MCP 서버](https://storelift.net/ko/mcp-server/)를 통해 OAuth로 로그인합니다. ## 크레딧과 한도 호출마다 그 호출에 표시된 크레딧이 듭니다. `/account`와 `/usage`는 0이고, 쓰기의 미리보기도 0입니다. 모든 응답에는 `x-credits-used`, `x-credits-limit`, `x-credits-remaining`, `x-credits-reset`이 실려 있습니다. 초당 요청 수는 요금제별로 정해져 있으며, 이를 넘으면 `retry-after`와 함께 `429 rate_limited`를 받습니다. Hive 엔드포인트는 구매한 API 크레딧이나 Hive Explorer로 열리며 일일 한도에도 집계됩니다. 팩 크레딧으로는 500회, Hive Explorer로는 10,000회입니다. [호출당 크레딧](https://storelift.net/ko/hive/api/) ## 샌드박스 `https://storelift.net/v1/sandbox`는 아래 조회 중 샘플 응답이 있는 모든 엔드포인트에 키도 크레딧도 없이 응답합니다. 데이터는 고정되어 있고 날짜가 붙어 있어 테스트가 안정적으로 유지됩니다. 테스트 키(`sl_test_`)는 라이브 기본 URL에서 같은 데이터를 반환하며, 쓰기는 절대 하지 않습니다. ## 순위 읽는 법 순위에는 세 가지 상태가 있고 서로 구분됩니다. `measured: false`는 그날 해당 검색어를 측정하지 않았다는 뜻이고, `rank: null`은 측정했지만 앱이 읽은 결과 범위 밖에 있다는 뜻이며, 숫자는 순위 그 자체입니다. ## 오류 모든 오류는 본문 형식이 같습니다: `{ "error": "", "message": "…", "docs": "…" }`. `error`는 안정적인 값이므로, 분기는 `message`가 아니라 이 값으로 하세요. 일부 코드는 `scope`, `field`, `limit` 같은 필드를 추가합니다. [전체 오류 코드](https://storelift.net/ko/docs/api/errors/) ## 실전 예제 첫 호출부터 내가 보관할 결과까지 이어지는 세 가지 작업입니다. 모든 명령은 샌드박스를 대상으로 실행되므로 크레딧을 쓰지 않고 아무것도 바꾸지 않으며, 각 응답은 샌드박스가 그 명령에 실제로 반환하는 내용입니다. 내 키를 쓰면 경로는 `/sandbox`만 빠질 뿐 같고, 호출마다 그 호출에 표시된 크레딧이 듭니다. 테스트 키(`sl_test_`)는 거기서도 샌드박스 데이터로 응답하며 0 크레딧입니다. ### 이번 주 키워드 순위를 리포트에 추가하기 앱 하나의 키워드를 스토어프런트 한 곳에서 읽어 한 행으로 보관합니다. 매주 실행하면 행이 쌓여 추세가 됩니다. 스코프: `apps:read` · 크레딧: 2 · 샌드박스 또는 테스트 키에서는 0 · 요금제: 샌드박스, 테스트 키: 모든 요금제 · 라이브 키: Pro 이상 · 지원 시작: API 1.5.0 1. 앱 ID를 찾습니다. ```sh curl "https://storelift.net/v1/sandbox/apps" ``` 응답: ```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. 해당 스토어프런트에서 그 앱의 추적 키워드를 모두 읽습니다. ```sh curl "https://storelift.net/v1/sandbox/apps/sbx-lumen/keywords?country=us" ``` 응답 (keywords: 8행 중 2행): ```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 } ] } ``` 응답을 내가 보관하는 행으로 정리합니다. `measured: true`이면서 `rank: null`인 키워드는 측정했지만 앱이 결과에 없는 경우이며, 측정되지 않은 키워드와 따로 셉니다. ```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 }, }; } ``` 결과: ```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 } } ``` 워크스페이스에 없는 앱 ID는 `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" } ``` ### 나보다 위에 있는 앱 물어보기 같은 데이터를 [MCP 서버](https://storelift.net/ko/mcp-server/)로 받습니다. 어시스턴트가 도구를 두 번 호출합니다. 직접 보내 보려면 `STORELIFT_TEST_KEY`에 테스트 키를 넣으세요. 스코프: `apps:read` · 크레딧: 2 · 테스트 키에서는 0 · 요금제: 테스트 키, OAuth: 모든 요금제 · 라이브 키: 모든 요금제 · 지원 시작: API 1.5.0 · 도구는 storelift-mcp 1.1.1 1. `list_apps`가 앱 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":{}}}' ``` 응답: ```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`가 그 앱보다 위에 있는 앱을 키워드별로 반환합니다. ```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"}}}' ``` 응답 (rivals: 3행 중 2행): ```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 } ] } ] } ``` 응답의 내용을 경쟁 앱별로 정리한 것입니다. `ourRank: null`은 앱이 결과에 없는 키워드입니다. ```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, })); } ``` 결과: ```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 } ] ``` 워크스페이스에 없는 앱 ID는 실패한 요청이 아니라 어시스턴트가 읽을 수 있는 도구 오류로 돌아옵니다: ```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. ``` ### 자격 증명으로 무엇을 읽을 수 있는지 HTTP 또는 MCP로 확인하기 어떤 연동이든 첫 호출은 이것입니다. 어느 요금제인지, 어떤 스코프와 앱이 있는지, 크레딧이 얼마나 남았는지 확인합니다. `GET /account`와 `whoami` 도구는 같은 본문을 반환하며, 둘 다 크레딧이 들지 않습니다. 스코프: 없음 · 크레딧: 0 · 요금제: 샌드박스, 테스트 키, OAuth: 모든 요금제 · 라이브 키: Pro 이상 · 지원 시작: API 1.5.0 · 도구는 storelift-mcp 1.5.0 1. HTTP로. ```sh curl "https://storelift.net/v1/sandbox/account" ``` 응답: ```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. 같은 응답을 도구 호출로. ```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":{}}}' ``` 응답: ```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/" } ``` 호출하기 전에 그 호출에 필요한 스코프가 있는지 확인하고, 일괄 처리 전에는 잔액을 읽으세요. ```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, }; } ``` 결과: ```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 } ``` 자격 증명이 없으면 MCP 엔드포인트는 JSON-RPC 오류와 함께 `401`로 응답하고, MCP 인증을 지원하는 클라이언트는 여기서 OAuth 로그인을 시작합니다: ```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." } } ``` ## 공통 매개변수 아래 매개변수는 이를 받는 모든 엔드포인트에서 같은 뜻으로 쓰이며, 엔드포인트마다 자신이 받는 매개변수를 나열합니다. - `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) ## [계정](https://storelift.net/ko/docs/api/account/) 키 자체의 요금제, 스코프, 사용량, 그리고 계정 검색과 알림 피드입니다. 요금제와 사용량 조회는 0 크레딧입니다. - [`GET /alerts`](https://storelift.net/ko/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/ko/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/ko/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/ko/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/ko/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/ko/docs/api/account/#fetch) — The full record behind one id from search: an app card, one tracked keyword with its current state and… (1) ## [내 앱](https://storelift.net/ko/docs/api/apps/) 이 워크스페이스가 추적하는 앱입니다. 순위, 경쟁 앱, 리뷰, 스토어 페이지, 등록 정보 변경 타임라인, 피처링, 차트, 등록 정보 점검을 다룹니다. - [`GET /apps`](https://storelift.net/ko/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/ko/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/ko/docs/api/apps/#get_rivals) — Apps that rank ABOVE this app in search (1) - [`GET /apps/{appId}/ai`](https://storelift.net/ko/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/ko/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/ko/docs/api/apps/#get_history) — Keyword rank history for one country (1) - [`GET /apps/{appId}/page`](https://storelift.net/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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) ## [매출 및 Apple Ads](https://storelift.net/ko/docs/api/growth/) 앱별로 연결한 소스의 데이터입니다. 매출, 구독 이벤트, App Store 퍼널, 가격과 오퍼 코드, 변경 전후 비교, 그리고 Apple Ads의 캠페인, 키워드, 검색어, 명령을 다룹니다. 스코프는 revenue:read와 ads:read입니다. - [`GET /apps/{appId}/revenue`](https://storelift.net/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/docs/api/hive/) 내가 추적하든 아니든, Storelift 네트워크가 측정하는 모든 앱과 시장입니다. Hive Explorer에 포함됩니다. - [`GET /rank-check`](https://storelift.net/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/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/ko/docs/api/hive/#hive_app_details) — Any app's latest daily measurement (10) - [`GET /hive/keywords/{term}/ranks`](https://storelift.net/ko/docs/api/hive/#hive_keyword_ranks) — Who ranks for a keyword, day by day (10) - [`GET /hive/keywords/{term}/metrics`](https://storelift.net/ko/docs/api/hive/#hive_keyword_metrics) — Read a keyword's current popularity and difficulty (10) - [`GET /hive/keywords/{term}/metrics/history`](https://storelift.net/ko/docs/api/hive/#hive_keyword_metrics_history) — Read stored keyword metric observations over time (20) - [`GET /hive/spy/{id}`](https://storelift.net/ko/docs/api/hive/#hive_keyword_spy) — The keywords any app ranks for (200) - [`GET /hive/estimate/{id}`](https://storelift.net/ko/docs/api/hive/#hive_estimate) — Revenue and downloads for any app (500) - [`GET /hive/gap`](https://storelift.net/ko/docs/api/hive/#get_keyword_gap) — Keyword gap across several apps (400) - [`GET /hive/research`](https://storelift.net/ko/docs/api/hive/#hive_keyword_research) — Keyword research from a seed term (50) - [`GET /hive/landscape`](https://storelift.net/ko/docs/api/hive/#hive_category_landscape) — What it takes to rank in a category (10) ## [쓰기](https://storelift.net/ko/docs/api/actions/) 모든 쓰기는 두 단계로 실행됩니다. 먼저 아무것도 바꾸지 않는 미리보기가 나오고, 이어서 미리보기가 반환한 토큰으로 확인합니다. - [`GET /jobs/{jobId}`](https://storelift.net/ko/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/ko/docs/api/actions/#preview_action) — Preview a write (0) - [`POST /actions/confirm`](https://storelift.net/ko/docs/api/actions/#confirm_action) — Apply a previewed write (액션별)