Get ASO keyword gap
Compare stored keyword positions between two apps.
Download Markdown ↓GEThttps://api.peekpanda.com/v1/aso/apps/{appId}/gap/{rivalStoreId}
Request
Compares stored positions for the subject app and a rival store id. This GET never calls Apple.
Parameters
appIdpathuuidYesTracked ASO app id.rivalStoreIdpathnumeric stringYesRival Apple App Store identifier.Response
Only-rival, only-subject and shared rows contain stored observed positions, not estimates.
Response fields
subjectStoreIdstringrivalStoreIdstringrivalNamestringonlyRival[].querystringonlyRival[].rivalPositionnumberonlySubject[].querystringonlySubject[].subjectPositionnumbershared[].querystringshared[].subjectPositionnumbershared[].rivalPositionnumberAuthentication
Requires Bearer API credential or OAuth access token. Scope context:read. MCP calls aso with action gap.
Errors
400invalid_request for an invalid filter, identity or limit.401authentication_required for a missing or invalid credential.402subscription_required when access is not entitled.403authorization_required for a missing scope or unavailable preview access.403workspace_not_accessible when x-genviral-tenancy names a workspace the credential cannot reach.404not_found when the record is outside the accessible catalogue.429rate_limited; honor Retry-After when present.429daily_call_limit; the plan's daily API and MCP calls are used until 00:00 UTC.MCP request
Call aso with action gap. Path fields go in params, filters in query, and a write body in body.
{
"name": "aso",
"arguments": {
"request": {
"action": "gap",
"params": {
"appId": "<appId>",
"rivalStoreId": "<rivalStoreId>"
}
}
}
}
Source
Dated public App Store search results and suggestion observations for the US English storefront. Positions are observed result order. Difficulty and demand are directional indicators, not search volume or advertising data.
Refresh
This read returns stored observations. Use the related refresh command when newer evidence is needed.
AI agent or LLM? Read this page as markdown