openaso

tools / charts

charts

read-only

Top-chart positions

Is this app on the charts — and what does its grossing rank admit?

charts reports an app's position on the storefront's overall top-free, top-paid and top-grossing charts (top 100 each). null means not on that chart — which is the answer for the overwhelming majority of apps, and knowing it beats assuming.

Free and paid positions come from Apple's modern marketing-tools feed. The grossing rank comes from the legacy iTunes RSS feed — the only public source left for grossing, since the modern feed deliberately omits it. That grossing rank matters more than the vanity of charting: it is the single public signal of how much an app monetizes through the store.

That is why this tool exists beyond curiosity: topGrossing is the input the revenue model turns into a dollar band.

Browse the live US top 100s this tool reads

worked example

Where does ChatGPT (appId 6448311069) sit on the US overall charts?

tools/call → charts
{
  "name": "charts",
  "arguments": {
    "appId": 6448311069,
    "countries": [
      "US"
    ]
  }
}
charts → structuredContent
{
  "appId": 6448311069,
  "chartSize": 100,
  "storefronts": [
    {
      "country": "US",
      "topFree": 3,
      "topPaid": null,
      "topGrossing": 1
    }
  ]
}

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

when to use it

description — as served to agents

The app's position on the overall top-free, top-paid and top-grossing charts (top 100), per storefront. null = not on that chart. Free/paid come from Apple's public marketing-tools feed; grossing comes from the legacy iTunes RSS feed (the only public source of grossing ranks). topGrossing is the one public monetization signal — feed it into the revenue tool for a modeled revenue band.

input

appId *
integer
App Store trackId of the app
countries
string[]
2-letter storefront codes, e.g. ["US", "GB", "JP"]. Each storefront is queried separately; at most 25 per call.(default ["US"])

output

appId *
integer
chartSize *
integer
storefronts *
object[]
country *
string
topFree *
integer | null
1-based chart position, null = not in top 100
topPaid *
integer | null
1-based chart position, null = not in top 100
topGrossing *
integer | null
1-based chart position, null = not in top 100 (unless grossingUnavailable)
grossingUnavailable
boolean
present (true) only when the legacy grossing feed could not be read — topGrossing is then unknown, not "not in top 100"

pairs with

revenuegrossing rank is the revenue model's inputappconfirm availability and price context per storefrontranksearch visibility, the other demand channel
endpoint https://mcp.openaso.ai/mcp · auth Authorization: Bearer <key> · get a key