Skip to main content
GET /v1/keywords/compare
Compares keyword rankings between two apps to reveal shared keywords, unique strengths, competitor opportunities, and gap threats. Essential for competitive ASO (App Store Optimization) strategy.

Query Parameters

NameTypeRequiredDefaultDescription
appIdstringYesYour app’s Apple App ID
competitorIdstringYesCompetitor’s Apple App ID
countrystringNousISO country code (e.g. us, gb, de, jp)

Code Examples

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

Response

{
  "data": {
    "shared": [
      {
        "keyword": "puzzle game",
        "yourRank": 5,
        "competitorRank": 3,
        "rankDiff": -2,
        "volumeScore": 72,
        "difficulty": 85
      },
      {
        "keyword": "block puzzle",
        "yourRank": 2,
        "competitorRank": 8,
        "rankDiff": 6,
        "volumeScore": 65,
        "difficulty": 68
      }
    ],
    "yourUnique": [
      {
        "keyword": "blast game",
        "yourRank": 4,
        "competitorRank": null,
        "rankDiff": null,
        "volumeScore": 38,
        "difficulty": 45
      }
    ],
    "competitorUnique": [
      {
        "keyword": "candy crush",
        "yourRank": null,
        "competitorRank": 1,
        "rankDiff": null,
        "volumeScore": 88,
        "difficulty": 95
      },
      {
        "keyword": "match 3 game",
        "yourRank": null,
        "competitorRank": 6,
        "rankDiff": null,
        "volumeScore": 55,
        "difficulty": 62
      }
    ],
    "gapAnalysis": [
      {
        "keyword": "puzzle game",
        "yourRank": 5,
        "competitorRank": 3,
        "rankDiff": -2,
        "volumeScore": 72,
        "difficulty": 85
      }
    ],
    "summary": {
      "totalShared": 2,
      "totalYourUnique": 1,
      "totalCompetitorUnique": 2,
      "totalGaps": 1,
      "overlapPercent": 40
    }
  }
}

Response Sections

shared — Keywords Both Apps Rank For

Keywords where both your app and the competitor appear in search results. Use rankDiff to see who ranks higher.

yourUnique — Your Strengths

Keywords that only your app ranks for. These are your competitive advantages — keywords where you have visibility and the competitor does not.

competitorUnique — Opportunities to Target

Keywords that only the competitor ranks for. These represent opportunities — keywords you could target to gain visibility in spaces where the competitor already has traction.

gapAnalysis — Threats

Keywords where the competitor significantly outranks you. These are threats — high-value keywords where you’re losing ground and should consider optimizing.

Keyword Entry Fields

FieldTypeDescription
keywordstringThe search keyword
yourRanknumber|nullYour app’s rank (null if your app doesn’t rank for this keyword)
competitorRanknumber|nullCompetitor’s rank (null if competitor doesn’t rank for this keyword)
rankDiffnumber|nullyourRank - competitorRank. Positive = you rank better. Null if one app doesn’t rank.
volumeScorenumberEstimated search volume score (0–100)
difficultynumberRanking difficulty score (0–100)

Summary Fields

FieldTypeDescription
totalSharednumberNumber of keywords both apps rank for
totalYourUniquenumberNumber of keywords only your app ranks for
totalCompetitorUniquenumberNumber of keywords only the competitor ranks for
totalGapsnumberNumber of keywords where competitor significantly outranks you
overlapPercentnumberPercentage of keywords shared between both apps (0–100)

Both apps must have keyword data. Before using this endpoint, call GET /v1/apps/:id/keywords for both your app and the competitor to trigger keyword discovery. If either app has no keyword data, the comparison will be incomplete or empty.
Competitive ASO strategy: Focus on competitorUnique keywords with high volumeScore and low difficulty — these are the easiest wins for expanding your keyword footprint. Then address gapAnalysis keywords where you’re being outranked on important terms.

Errors

StatusCodeWhen
400INVALID_APP_IDNon-numeric or missing app ID
400MISSING_PARAMSMissing appId or competitorId
401UNAUTHORIZEDMissing or invalid API key
429RATE_LIMITEDToo many requests — slow down
500INTERNAL_ERRORServer error during comparison