개발자 문서

API 레퍼런스

기본 URL 하나, 키 하나, 입력과 출력은 JSON입니다. 아래의 모든 엔드포인트는 같은 이름의 MCP 도구이기도 합니다.

openapi.json · 오류 코드 · MCP 서버

기본 URL

https://storelift.net/v1

아래의 모든 경로는 이 주소를 기준으로 합니다. 조회에는 GET을 보내고, POST는 /actions에서만 씁니다.

인증

키는 Authorization: Bearer <key> 또는 x-api-key에 넣어 보냅니다. 키는 설정 › API에서 만들며, 키마다 스코프, 선택 사항인 IP 허용 목록, 선택 사항인 앱 목록, 선택 사항인 월간 크레딧 예산을 가집니다. 예산에 도달한 키는 달이 바뀔 때까지 402 key_budget_reached로 응답하고, 다른 키는 계속 작동합니다.

REST API용 라이브 키(sl_live_)는 Pro 이상에서, 또는 어느 요금제에서든 크레딧 팩이 있으면 쓸 수 있습니다. Free에는 MCP 서버에서만 작동하는 라이브 키 1개가 포함됩니다. 테스트 키(sl_test_)는 모든 요금제에서 샌드박스 데이터를 반환합니다. 어시스턴트는 모든 요금제에서 MCP 서버를 통해 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/v1/sandbox는 아래 조회 중 샘플 응답이 있는 모든 엔드포인트에 키도 크레딧도 없이 응답합니다. 데이터는 고정되어 있고 날짜가 붙어 있어 테스트가 안정적으로 유지됩니다.

테스트 키(sl_test_)는 라이브 기본 URL에서 같은 데이터를 반환하며, 쓰기는 절대 하지 않습니다.

순위 읽는 법

순위에는 세 가지 상태가 있고 서로 구분됩니다. measured: false는 그날 해당 검색어를 측정하지 않았다는 뜻이고, rank: null은 측정했지만 앱이 읽은 결과 범위 밖에 있다는 뜻이며, 숫자는 순위 그 자체입니다.

오류

모든 오류는 본문 형식이 같습니다: { "error": "<code>", "message": "…", "docs": "…" }. error는 안정적인 값이므로, 분기는 message가 아니라 이 값으로 하세요. 일부 코드는 scope, field, limit 같은 필드를 추가합니다. 전체 오류 코드

실전 예제

첫 호출부터 내가 보관할 결과까지 이어지는 세 가지 작업입니다. 모든 명령은 샌드박스를 대상으로 실행되므로 크레딧을 쓰지 않고 아무것도 바꾸지 않으며, 각 응답은 샌드박스가 그 명령에 실제로 반환하는 내용입니다.

내 키를 쓰면 경로는 /sandbox만 빠질 뿐 같고, 호출마다 그 호출에 표시된 크레딧이 듭니다. 테스트 키(sl_test_)는 거기서도 샌드박스 데이터로 응답하며 0 크레딧입니다.

이번 주 키워드 순위를 리포트에 추가하기

앱 하나의 키워드를 스토어프런트 한 곳에서 읽어 한 행으로 보관합니다. 매주 실행하면 행이 쌓여 추세가 됩니다.

스코프
apps:read
크레딧
2 · 샌드박스 또는 테스트 키에서는 0
요금제
샌드박스, 테스트 키: 모든 요금제 · 라이브 키: Pro 이상
지원 시작
API 1.5.0
  1. 앱 ID를 찾습니다.

    curl "https://storelift.net/v1/sandbox/apps"
    응답
  2. 해당 스토어프런트에서 그 앱의 추적 키워드를 모두 읽습니다.

    curl "https://storelift.net/v1/sandbox/apps/sbx-lumen/keywords?country=us"
    응답 (keywords: 8행 중 2행)

응답을 내가 보관하는 행으로 정리합니다. measured: true이면서 rank: null인 키워드는 측정했지만 앱이 결과에 없는 경우이며, 측정되지 않은 키워드와 따로 셉니다.

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 },
  };
}

결과

{
  "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로 응답합니다:

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"
}

나보다 위에 있는 앱 물어보기

같은 데이터를 MCP 서버로 받습니다. 어시스턴트가 도구를 두 번 호출합니다. 직접 보내 보려면 STORELIFT_TEST_KEY에 테스트 키를 넣으세요.

스코프
apps:read
크레딧
2 · 테스트 키에서는 0
요금제
테스트 키, OAuth: 모든 요금제 · 라이브 키: 모든 요금제
지원 시작
API 1.5.0 · 도구는 storelift-mcp 1.1.1
  1. list_apps가 앱 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":{}}}'
    응답
  2. get_rivals가 그 앱보다 위에 있는 앱을 키워드별로 반환합니다.

    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행)

응답의 내용을 경쟁 앱별로 정리한 것입니다. ourRank: null은 앱이 결과에 없는 키워드입니다.

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,
  }));
}

결과

[
  {
    "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는 실패한 요청이 아니라 어시스턴트가 읽을 수 있는 도구 오류로 돌아옵니다:

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.

자격 증명으로 무엇을 읽을 수 있는지 HTTP 또는 MCP로 확인하기

어떤 연동이든 첫 호출은 이것입니다. 어느 요금제인지, 어떤 스코프와 앱이 있는지, 크레딧이 얼마나 남았는지 확인합니다. GET /account와 whoami 도구는 같은 본문을 반환하며, 둘 다 크레딧이 들지 않습니다.

스코프
없음
크레딧
0
요금제
샌드박스, 테스트 키, OAuth: 모든 요금제 · 라이브 키: Pro 이상
지원 시작
API 1.5.0 · 도구는 storelift-mcp 1.5.0
  1. HTTP로.

    curl "https://storelift.net/v1/sandbox/account"
    응답
  2. 같은 응답을 도구 호출로.

    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":{}}}'
    응답

호출하기 전에 그 호출에 필요한 스코프가 있는지 확인하고, 일괄 처리 전에는 잔액을 읽으세요.

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,
  };
}

결과

{
  "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 로그인을 시작합니다:

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."
  }
}

공통 매개변수

아래 매개변수는 이를 받는 모든 엔드포인트에서 같은 뜻으로 쓰이며, 엔드포인트마다 자신이 받는 매개변수를 나열합니다.

매개변수위치타입설명
appIdpathstringlist_apps에서 얻은 앱 ID
countryquerystring국가 코드, 예: tr, us(기본값은 앱의 첫 번째 국가)
platformqueryios | android기본값 ios
countryquerystring스토어프런트 코드, 예: us(기본값 us)

계정

키 자체의 요금제, 스코프, 사용량, 그리고 계정 검색과 알림 피드입니다. 요금제와 사용량 조회는 0 크레딧입니다.

  • GET /alerts이 워크스페이스의 알림 피드입니다. 순위 하락과 상승, 검색 결과에 들어오거나 빠진 키워드, 경쟁 앱에…
  • GET /portfolio워크스페이스의 모든 앱에 대한 오늘 현황을 앱당 한 행으로 반환합니다. 실시간 사용자, 사용자와 신규…
  • GET /account이 키 또는 세션의 소유 정보입니다. 플랜, 인증 방식, 부여된 권한 범위, 읽을 수 있는 앱, 크레딧…
  • GET /usage워크스페이스의 모든 한도를 사용량, 재설정 시각과 함께 반환합니다. 추적 키워드, 앱, 키워드 발굴, AI…
  • GET /search이 계정의 자체 레코드(앱 이름과 스토어 ID, 추적 키워드, 사용자보다 순위가 높은 경쟁 앱)를 검색해…
  • GET /fetchsearch가 반환한 ID 하나의 전체 레코드입니다. 앱 카드, 현재 상태와 순위 기록이 담긴 추적 키워드…

내 앱

이 워크스페이스가 추적하는 앱입니다. 순위, 경쟁 앱, 리뷰, 스토어 페이지, 등록 정보 변경 타임라인, 피처링, 차트, 등록 정보 점검을 다룹니다.

  • GET /apps이 Storelift 계정에서 추적 중인 앱 나열(ID, 이름, 국가, 키워드)
  • GET /apps/{appId}/keywordsApp Store / Google Play의 한 국가에서 한 앱의 키워드 순위
  • GET /apps/{appId}/rivals검색에서 이 앱보다 순위가 높은 앱
  • GET /apps/{appId}/aiAI 엔진 답변을 날짜별 표본으로 모은 것 속 앱 언급입니다. ChatGPT, Claude, Gemini가…
  • GET /apps/{appId}/ai-check한 국가의 한 앱에 대해 AI 가시성 표본 수집을 시작합니다. 해당 실행에서 사용할 수 있는 엔진을…
  • GET /apps/{appId}/history한 국가의 키워드 순위 기록
  • GET /apps/{appId}/page한 국가에서 앱 자체의 스토어 등록 정보 신호입니다(이름과 부제는 포함하지 않습니다). 버전, 앱 내…
  • GET /apps/{appId}/reviews한 국가의 최근 리뷰입니다. `list`는 App Store 리뷰이고, `android`는 Google…
  • GET /apps/{appId}/charts한 국가의 App Store 차트 순위입니다. 목록별(무료 / 유료 / 매출, 전체와 카테고리 내) 현재…
  • GET /apps/{appId}/reviews/search한 스토어프런트에서 한 앱의 리뷰를 텍스트, 별점, 앱 버전, 기간으로 검색해 최신순으로 반환합니다.…
  • GET /apps/{appId}/reviews/stats한 스토어프런트에서 한 앱의 별점 분포, 평균, 1~2점 리뷰 비율과 함께 일별 추이(하루 건수와 평균)…
  • GET /apps/{appId}/reviews/summary한 스토어프런트에서 한 앱의 리뷰 AI입니다. 최근 리뷰의 요약과 그 안의 주제(불만, 요청, 칭찬)를…
  • GET /apps/{appId}/reviews/reply-draft리뷰 하나에 대한 개발자 답글 초안, 해당 스토어프런트의 언어로
  • GET /apps/{appId}/timeline한 앱의 등록 정보에 생긴 날짜별 변경입니다. 스토어 페이지에서 읽은 새 버전, 스크린샷, 앱 내 이벤트…
  • GET /apps/{appId}/today한 앱의 하루를 한 번의 응답으로 반환합니다. '오늘' 화면에 해당합니다. 연결된 소스의 구매·체험·갱신…
  • GET /apps/{appId}/competition한 스토어프런트에서 키워드마다 경쟁하는 앱 수, 두 개 이상의 앱에서 확인된 검색어 대상
  • GET /apps/{appId}/rivals/{rivalId}한 스토어프런트에서 내 앱의 경쟁 앱 하나입니다. 이름, 평점, 평가 수와 그 90일 기록(이름 변경은…
  • GET /apps/{appId}/rivals/{rivalId}/adnetworks경쟁 앱이 광고로 수익을 내는 방식: 함께 일하는 광고 네트워크, 각각 DIRECT 또는 RESELLER로 표시
  • GET /apps/{appId}/rivals/{rivalId}/market한 스토어프런트에서 경쟁 앱의 시장 데이터입니다. Google Play에서는 정확한 설치 수와 앱 내 구입…
  • GET /apps/{appId}/storefront-audit모든 App Store 스토어프런트에서의 iOS 등록 정보입니다. 앱이 판매되는 곳, 자국어 대신 대체…
  • GET /apps/{appId}/suggest한 스토어프런트에서 한 앱의 새 키워드 아이디어를 해당 스토어프런트의 검색 언어로 반환합니다. 사람들이…
  • POST /apps/{appId}/validate-listingApp Store 등록 정보 초안을 App Store Connect로 보내기 전에 점검
  • GET /apps/{appId}/draft등록 정보 초안(제목, 부제, 프로모션 텍스트, 설명)입니다. 한 스토어프런트에서 이 앱에 대해 측정한…
  • GET /apps/{appId}/localize새 로케일용 App Store 등록 정보 전체(이름, 부제, 키워드 필드, 설명)를 앱의 원본 등록 정보를…
  • GET /apps/{appId}/shot-text한 스토어프런트에서 App Store 스크린샷 처음 네 장의 캡션 텍스트
  • GET /apps/{appId}/chart-movers앱이 속한 카테고리 차트에서 누가 움직였는지 반환합니다. 상승·하락(3계단 이상), 신규 진입, 이탈한…
  • GET /apps/{appId}/featuringApple이 오늘 앱을 어디에 노출하는지 국가별로 반환합니다. 에디토리얼 카드(dedicated…
  • GET /apps/{appId}추적 중인 앱 하나를 플랫폼 ID, 국가, 국가별 추적 키워드, 최신 측정 스냅샷(국가별 키워드 표)과…
  • GET /apps/{appId}/weekly-plan이 앱의 이번 주 등록 정보 제안 — 대시보드의 '이번 주 할 일' 카드와 같은 목록, 효과가 큰 순

매출 및 Apple Ads

앱별로 연결한 소스의 데이터입니다. 매출, 구독 이벤트, App Store 퍼널, 가격과 오퍼 코드, 변경 전후 비교, 그리고 Apple Ads의 캠페인, 키워드, 검색어, 명령을 다룹니다. 스코프는 revenue:read와 ads:read입니다.

Hive

내가 추적하든 아니든, Storelift 네트워크가 측정하는 모든 앱과 시장입니다. Hive Explorer에 포함됩니다.

쓰기

모든 쓰기는 두 단계로 실행됩니다. 먼저 아무것도 바꾸지 않는 미리보기가 나오고, 이어서 미리보기가 반환한 토큰으로 확인합니다.