API Documentation

Access Sentarys App Store intelligence programmatically. Track your apps, run keyword research, monitor AI Visibility across ChatGPT/Claude/Gemini/Perplexity, and pull Top Charts data - all via REST API with your API key.

Quick Start

Base URLhttps://api.sentarys.comAuth headerAuthorization: Bearer pf_...VersioningAll routes under /v1API key/settings/api (requires account)

All endpoints require authentication via Authorization: Bearer pf_.... Your API key is scoped to your account - never share it publicly.

API Key Management

Auth Required
POST
/v1/api-keys

Create a new API key. The full key is returned only once - store it securely.

curl -X POST https://api.sentarys.com/v1/api-keys \
  -H "Authorization: Bearer pf_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "My Production Key"}'
{
  "id": "clx...",
  "name": "My Production Key",
  "key": "pf_...",
  "keyPrefix": "pf_abc",
  "createdAt": "2026-05-16T00:00:00Z"
}
GET
/v1/api-keys

List all your API keys. Only key prefixes are returned - not the full secrets.

curl https://api.sentarys.com/v1/api-keys \
  -H "Authorization: Bearer pf_..."
DELETE
/v1/api-keys/:id

Revoke an API key immediately. Any integration using that key will stop working.

curl -X DELETE https://api.sentarys.com/v1/api-keys/clx... \
  -H "Authorization: Bearer pf_..."

Apps

Auth Required
GET
/v1/apps

List all apps you are tracking (your own and competitors).

curl https://api.sentarys.com/v1/apps \
  -H "Authorization: Bearer pf_..."
[
  {
    "id": "clx...",
    "name": "My Indie App",
    "trackId": 123456789,
    "isOwned": true,
    "storefront": "US",
    "createdAt": "2026-05-16T00:00:00Z"
  }
]
GET
/v1/apps/:id

Get a single tracked app by its internal ID.

curl https://api.sentarys.com/v1/apps/clx... \
  -H "Authorization: Bearer pf_..."
POST
/v1/apps

Add an app to track. Pass an App Store URL, app name, or numeric Track ID.

curl -X POST https://api.sentarys.com/v1/apps \
  -H "Authorization: Bearer pf_..." \
  -H "Content-Type: application/json" \
  -d '{"input": "https://apps.apple.com/us/app/my-app/id123456789"}'

ASO Keyword Research

Auth Required
GET
/v1/aso/keyword-search

Research an ASO keyword - returns iTunes Hints autocomplete suggestions plus the top apps ranking for the seed term. Pass q (required) and optionally storefront (default US).

curl "https://api.sentarys.com/v1/aso/keyword-search?q=budget+tracker&storefront=US" \
  -H "Authorization: Bearer pf_..."
{
  "seed": "budget tracker",
  "suggestions": ["budget tracker", "budget planner", "expense tracker"],
  "topApps": [
    { "trackId": 1234, "name": "YNAB", "rank": 1 }
  ]
}
GET
/v1/apps/:id/keywords

List all keywords you are tracking for a specific app, including current iTunes rank and Google Ads metrics if enriched.

curl https://api.sentarys.com/v1/apps/clx.../keywords \
  -H "Authorization: Bearer pf_..."
POST
/v1/apps/:id/keywords

Start tracking a keyword for an app.

curl -X POST https://api.sentarys.com/v1/apps/clx.../keywords \
  -H "Authorization: Bearer pf_..." \
  -H "Content-Type: application/json" \
  -d '{"keyword": "budget tracker"}'

AI Visibility (GEO)

Auth Required
GET
/v1/apps/:id/geo

Aggregated AI Visibility state for an app - how often it appears across ChatGPT, Claude, Gemini, and Perplexity for relevant queries.

curl https://api.sentarys.com/v1/apps/clx.../geo \
  -H "Authorization: Bearer pf_..."
{
  "mentions": 14,
  "totalChecks": 40,
  "coveragePercent": 35,
  "lastCheckedAt": "2026-05-16T00:00:00Z",
  "breakdown": {
    "chatgpt": { "mentions": 5, "total": 10 },
    "claude":  { "mentions": 4, "total": 10 },
    "gemini":  { "mentions": 3, "total": 10 },
    "perplexity": { "mentions": 2, "total": 10 }
  }
}
POST
/v1/apps/:id/geo-check

Queue a fresh AI Visibility check for an app. Runs 4 prompts x 2 personas across all 4 LLMs. Returns immediately with a job ID - poll GET /v1/apps/:id/geo for results.

curl -X POST https://api.sentarys.com/v1/apps/clx.../geo-check \
  -H "Authorization: Bearer pf_..."
{ "status": "queued", "jobId": "job_abc123" }

Top Charts

Auth Required
GET
/v1/top-charts

Get App Store top chart for a (chart, country, genre) combination. Cached 6 hours. Params: chart (top-free|top-paid|top-grossing), country (ISO 2-letter, default us), genre (Apple genre id), limit (10-200, default 100), fresh (bypass cache).

curl "https://api.sentarys.com/v1/top-charts?chart=top-free&country=us&limit=25" \
  -H "Authorization: Bearer pf_..."
{
  "chart": "top-free",
  "country": "us",
  "capturedAt": "2026-05-16T00:00:00Z",
  "entries": [
    { "rank": 1, "trackId": 123, "name": "App Name", "category": "Games" }
  ]
}
GET
/v1/top-charts/movement

Diff the latest top chart snapshot vs the previous one - see new entrants, leavers, climbers, and droppers.

curl "https://api.sentarys.com/v1/top-charts/movement?chart=top-free&country=us" \
  -H "Authorization: Bearer pf_..."
GET
/v1/top-charts/genres

List the Apple genre catalog used for Top Charts filtering (genre IDs and names).

curl https://api.sentarys.com/v1/top-charts/genres \
  -H "Authorization: Bearer pf_..."

Keyword Trends

Auth Required
GET
/v1/trends

Google Trends interest over time for a keyword, cached 24h. Params: keyword (required), geo (ISO country, default US), timeframe (e.g. today 12-m), fresh (bypass cache).

curl "https://api.sentarys.com/v1/trends?keyword=budget+tracker&geo=US&timeframe=today+12-m" \
  -H "Authorization: Bearer pf_..."
{
  "keyword": "budget tracker",
  "geo": "US",
  "timeframe": "today 12-m",
  "timeline": [
    { "date": "2025-05", "value": 72 },
    { "date": "2025-06", "value": 68 }
  ]
}
GET
/v1/trends/related

Google Trends related queries (top + rising) for a keyword. Useful for finding breakout search terms adjacent to your niche.

curl "https://api.sentarys.com/v1/trends/related?keyword=budget+tracker&geo=US" \
  -H "Authorization: Bearer pf_..."

Credits and Billing

Auth Required
GET
/v1/billing/status

Check current credit balance, subscription plan, and billing period.

curl https://api.sentarys.com/v1/billing/status \
  -H "Authorization: Bearer pf_..."
{
  "credits": 148,
  "plan": "pro",
  "renewsAt": "2026-06-01T00:00:00Z"
}

Rate Limits

  • 60 requests/min per API key
  • 200 credits/month on Pro plan ($10/mo)
  • 10 credits on signup (Free plan)
  • Rate limit headers are returned on every response: X-RateLimit-Remaining, X-RateLimit-Reset

Questions or issues with the API?

api@sentarys.com