Skip to main content
GET /v1/keywords/compare-cluster
Builds a keyword lifecycle view for your app and 1–5 competitor Apple app IDs: which terms appear everywhere in the cluster, which are partial overlaps, which are only yours, which appear only on the competitor side (including strict per-competitor exclusives). Uses the same latest keyword snapshot per app as GET /v1/keywords/compare (two-way compare is unchanged).

Query parameters

NameTypeRequiredDefaultDescription
appIdstringYesYour app’s Apple App ID
competitorsstringYesComma-separated competitor app IDs (1–5), e.g. 544007664,284882215
countrystringNousISO country code (e.g. us, gb, de, jp)
Duplicate IDs and appId itself in the list are ignored. Competitors are sorted numerically in the response.

Code examples

curl "https://api.appeeky.com/v1/keywords/compare-cluster?appId=1617391485&competitors=544007664,284882215&country=us" \
  -H "X-API-Key: YOUR_API_KEY"

Response shape

Top-level fields:
FieldDescription
appIdYour app ID
competitorIdsSorted competitor IDs
countryStorefront used
appIdsCluster order: your app first, then competitors
summaryCounts and volume/difficulty averages per bucket
inAllAppsSample rows (up to 80): keyword in every app in the cluster
partialOverlapSample rows: keyword in 2..n−1 apps (not universal)
primaryOnlySample rows: only your app ranks
competitorExclusiveSample rows: exactly one competitor ranks; you do not
withoutPrimarySample rows: you have no rank; at least one competitor does (gap view)
perCompetitorExclusiveSame as competitor-exclusive terms, split by competitor app ID
Each row includes keyword, ranks (map of app ID → rank or null), appsWithKeyword, volumeScore, and difficulty.

Summary buckets

FieldMeaning
totalUniqueKeywordsDistinct keywords across the union of all apps’ tracked lists
withoutPrimaryCountNumber of keywords where your app does not rank (subset view; see withoutPrimary)
inAllAppscount, avgVolumeScore, avgDifficulty for universal keywords
partialOverlapSame for partial overlap (2..n−1 apps)
primaryOnlySame for only-you singletons
competitorExclusiveSame for single-competitor terms (you absent)
Buckets are disjoint: every keyword falls into exactly one of inAllApps, partialOverlap, primaryOnly, or competitorExclusive. The withoutPrimary list is a separate convenience slice (all keywords where you do not rank).

Credits

This endpoint costs 4 credits per successful call (see Rate limits).

Errors

StatusCodeWhen
400INVALID_APP_IDMissing or non-numeric appId
400INVALID_COMPETITORSMissing competitors, no valid IDs, only duplicates of appId, or more than five competitors
401MISSING_API_KEY / INVALID_API_KEYAuth
429RATE_LIMIT_EXCEEDEDInsufficient monthly credits