Skip to main content
GET /v1/apps/:id/keyword-clusters
Groups every keyword the app ranks for into intent clusters and returns per-cluster metrics: how many keywords were ranked, the average rank, and a weighted visibility score on the same curve as the Visibility Score endpoint. Clusters are computed nightly using semantic embeddings, so two keywords with completely different wording but the same intent (e.g. "to-do" and "task list") live in the same group.

Path Parameters

NameTypeRequiredDescription
idstringYesNumeric Apple App ID

Query Parameters

NameTypeRequiredDefaultDescription
countrystringNousISO 3166-1 alpha-2 storefront
devicestringNoiphoneiphone or ipad

Response

{
  "ok": true,
  "data": {
    "appId": "284882215",
    "country": "us",
    "device": "iphone",
    "asOf": "2026-04-21T04:18:33Z",
    "total": 7,
    "clusters": [
      {
        "clusterId": "ai-chat",
        "clusterLabel": "ai chat",
        "keywordsRanked": 14,
        "avgRank": 7.2,
        "weightedVisibility": 432.5,
        "topKeywords": ["ai chat", "claude ai", "ai assistant"]
      },
      {
        "clusterId": "translation",
        "clusterLabel": "translator",
        "keywordsRanked": 5,
        "avgRank": 28.4,
        "weightedVisibility": 87.1,
        "topKeywords": ["translator", "translate app", "voice translator"]
      }
    ]
  }
}
asOf is the timestamp of the last cluster rebuild for the country (rebuilds run nightly). Clusters are returned sorted by weightedVisibility desc — the first row is the cluster the app dominates most.

Credit Cost

3 credits per request.

Use Cases

  • “Where am I strong, where am I weak?” planning view for ASO teams.
  • Detect mis-positioning: if the strongest cluster is unrelated to the app’s category, the keyword set needs rethinking.
  • Combine with /keywords/gap to identify clusters where competitors dominate but you don’t yet.