PeekPanda markpeekpandaDocumentation
For your AI
Dashboard

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

NameInTypeRequiredDescription
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[].platformstring
data[].storeIdstring
data[].appNamestring
data[].categorystring
data[].developerIdstring
data[].pricenumber
data[].adSupportednull
data[].inAppPurchasesboolean
data[].totalRatingsnumber
data[].ratingnumber
data[].installs.kindstring
data[].installs.valuenumber
data[].releaseDatestring
data[].storeUpdatedAtstring
data[].sourceUpdatedAtstring
data[].descriptionUpdatedAtnull
data[].descriptionnull
data[].shortDescriptionnull
data[].sourcestring
data[].snapshotDatestring
data[].currentFacts.appNameobject
data[].currentFacts.ratingobject
data[].currentFacts.totalRatingsobject
data[].currentFacts.priceobject
data[].matchReasonstring
data[].sharedSearchesnumber
pagination.nextCursornull
pagination.hasMoreboolean

Authentication

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