openaso

tools / competitors

competitors

read-only

Top apps for a keyword

Who actually wins this keyword — and are they beatable?

competitors returns the top of the App Store search results for a keyword as data: each app's position, its rating count (the store's rough proxy for installed base), its genre, and whether the keyword appears verbatim in its title. It answers the question that should precede every keyword bet: *who would I have to displace?*

Rating mass is the fastest winnability read. A keyword whose top ten all carry six-figure rating counts is a different fight from one where position 5 has a few hundred. keywordInTitle tells you how hard incumbents are already optimizing for the exact term.

total is the number of apps the search surfaced for the term (capped at 200) — thin result sets often mark niche phrases the store has no good answer for yet.

worked example

Who ranks top-10 for “habit tracker” in the US, and how strong are they?

tools/call → competitors
{
  "name": "competitors",
  "arguments": {
    "keyword": "habit tracker",
    "countries": [
      "US"
    ],
    "limit": 10
  }
}
competitors → structuredContent (excerpt)
{
  "keyword": "habit tracker",
  "storefronts": [
    {
      "country": "US",
      "total": 189,
      "returned": 10,
      "results": [
        { "rank": 1, "trackId": 1438388363, "name": "Habit Tracker", "developer": "InnerGrow",
          "rating": 4.79, "ratings": 144526, "genre": "Productivity", "keywordInTitle": true },
        { "rank": 2, "trackId": 6443918070, "name": "Habit Tracker - HabitKit", "developer": "Sebastian Roehl",
          "rating": 4.85, "ratings": 2286, "genre": "Productivity", "keywordInTitle": true },
        … ranks 34 …
        { "rank": 5, "trackId": 1528595748, "name": "Finch: Self-Care Pet", "developer": "Finch Care PBC",
          "rating": 4.95, "ratings": 732520, "genre": "Health & Fitness", "keywordInTitle": false },
        … ranks 610 …
      ]
    }
  ]
}

real response, captured 2026-07-29 — trimmed only where marked with …

when to use it

description — as served to agents

Top-ranking apps for a keyword, per storefront: position, ratings, genre, and whether the keyword appears in the app's title.

input

keyword *
string
App Store search term
limit
integer
How many top apps to return per storefront(default 25)
countries
string[]
2-letter storefront codes, e.g. ["US", "GB", "JP"]. Each storefront is queried separately; at most 25 per call.(default ["US"])

output

keyword *
string
storefronts *
object[]
country *
string
total *
integer
apps matching per the API (capped at 200 by the search limit)
returned *
integer
rows returned (min of total and limit)
results *
object[]
rank *
integer
1-based search position
trackId *
integer
name *
string
developer *
string
rating *
number | null
ratings *
integer
genre *
string
keywordInTitle *
boolean
url *
string | null

pairs with

volumedemand and competition are one decision, not twoapppull any competitor's full listing by trackIdreviewsmine the incumbents' reviews for vocabulary they miss
endpoint https://mcp.openaso.ai/mcp · auth Authorization: Bearer <key> · get a key