Skip to main content
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 refreshed daily using semantic similarity, 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

Query Parameters


Response

asOf is the timestamp of the latest cluster refresh for the country (refreshed daily). Clusters are returned sorted by weightedVisibility desc — the first row is the cluster the app dominates most.

strength

Each cluster row carries a strength bucket derived from weightedVisibility and avgRank: Use this for at-a-glance UI badges; the underlying numerical fields stay the source of truth.

gaps (when competitorIds is supplied)

For each supplied competitor, the same intent clusters are evaluated and any cluster where competitors are meaningfully present but the requested app has zero ranked keywords is surfaced. Sorted by “biggest threat first” — more competitors present + lower (better) competitor rank ranks higher. When competitorIds is omitted, gaps is always an empty array — no extra cost is added to the request. The response-level meta envelope describes data freshness — see Keyword Metrics → meta envelope for the schema.

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.