GET /v1/keywords/compare (two-way compare is unchanged).
Query parameters
Duplicate IDs and
appId itself in the list are ignored. Competitors are sorted numerically in the response.
Code examples
Response shape
Top-level fields:
Each row includes
keyword, ranks (map of app ID → rank or null), appsWithKeyword, volumeScore, and difficulty.
Summary buckets
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).

