Get similar competitors
Read similar stored iOS listings for one competitor, strongest evidence first, each with why it matched.
Download Markdown ↓GEThttps://api.peekpanda.com/v1/competitors/{platform}/{storeId}/similar
Request
Send an optional opaque cursor, limit and fallback. Defaults match the competitor list page, with fallback=category.
Parameters
platformpathiosYesThe preview supports iOS only.storeIdpathnumeric stringYesApple App Store identifier.cursorqueryopaque stringNoCursor returned by the previous page.limitqueryinteger, 1–100NoPage size; defaults to 24.fallbackquerycategory | noneNocategory (default) adds same-category apps whose name shares a word with this app after the evidence; none returns evidence-backed apps only.Response
The paginated listing envelope of GET /v1/competitors. Each listing adds matchReason (shared_searches, similar_listing, similar_description or same_category) and sharedSearches, the number of US App Store searches both apps rank for (null for same_category). Show currentFacts: each value names its provenance, observed from an App Store storefront or the catalogue snapshot, and its own asOf date. The top-level appName, rating, totalRatings and price keep the dated snapshot values.
Response fields
data[].platformstringdata[].storeIdstringdata[].appNamestringdata[].categorystringdata[].developerIdstringdata[].pricenumberdata[].adSupportednulldata[].inAppPurchasesbooleandata[].totalRatingsnumberdata[].ratingnumberdata[].installs.kindstringdata[].installs.valuenumberdata[].releaseDatestringdata[].storeUpdatedAtstringdata[].sourceUpdatedAtstringdata[].descriptionUpdatedAtnulldata[].descriptionnulldata[].shortDescriptionnulldata[].sourcestringdata[].snapshotDatestringdata[].currentFacts.appNameobjectdata[].currentFacts.ratingobjectdata[].currentFacts.totalRatingsobjectdata[].currentFacts.priceobjectdata[].matchReasonstringdata[].sharedSearchesnumberpagination.nextCursornullpagination.hasMorebooleanAuthentication
Requires Bearer API credential or OAuth access token. Scope context:read. MCP calls search_apps with action similar.
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 search_apps with action similar. Path fields go in params, filters in query, and a write body in body.
{
"name": "search_apps",
"arguments": {
"request": {
"action": "similar",
"params": {
"platform": "<platform>",
"storeId": "<storeId>"
}
}
}
}
Source
Dated public App Store listing observations. Installs, when present, are directional estimates rather than store-reported downloads.
Refresh
Reads return stored observations. When newer listing data is requested, collection continues asynchronously.
AI agent or LLM? Read this page as markdown