Skip to main content
Category ranks are your position in a store chart rather than in a search result. They move for reasons keywords do not, which makes them a useful control when reading a ranking change.

What is captured?

The daily run captures the free, paid and grossing charts of the app’s category and of the overall chart. The app’s position is recorded in its own free or paid chart, depending on its price, and in the grossing chart, which is why a paid app shows no free series. Each observation records the app, the date, the collection and the genre. Capture stays on the home market, like reviews. See Countries and markets. The headline on the overview card links to the chart it was read from, so you can read every app in that chart. See Read top charts.

Read the chart

Chart positions use the same convention as keyword positions: 1 based, with an absent position meaning the app was not found within the captured chart depth rather than zero. See Positions and rank depth. The App Store chart feed answers 100 positions and Google Play answers 200, so the captured depth is 100 for an App Store chart and 200 for a Google Play chart. An App Store app outside its chart reads Not in top 100. The overview card headlines the chart the app competes in: the paid chart for an app whose latest snapshot has a price above zero, the free chart otherwise. The headline names the chart it read, as in #2 in Games · paid chart. When that chart was captured but the app is outside it, the headline reads the grossing chart if the app ranks there and says so. When the app’s own chart has no capture on the latest capture date, for example just after a price change, it reads the grossing chart too. Only series captured on that latest date are read, so an older position on the app’s own chart never stands in for the current one. The overall chart is read only when no genre chart exists. The legend and the tooltip keep listing every series the chart captured. Read a chart movement against your keyword positions on the same dates. A chart fall with stable keyword positions usually points at conversion or at a competitor’s promotion rather than at your metadata. Chart moves can also reach you as alerts. See Chart moves.

What does it cost?

Three charts for the app’s category and three for the overall chart, each one store request a day, shared by every app and workspace in that chart, because the same capture serves the whole instance. See Read top charts for the whole chart behind a position and The daily pipeline and rate limits for the budget. Category jobs remain the smallest slice of the daily budget, and the budget card in settings, shown to the platform operator, reports the real number. See The daily pipeline and rate limits.

How long are they kept?

RETENTION_CATEGORY_RANKS_DAYS defaults to 365 days. Set it to 0 to keep chart history forever.

Troubleshooting

  • No chart position at all. The app is outside the captured chart depth for that category, which is common outside the top categories.
  • The app appears on the grossing chart but not the free chart. A paid app is charted against paid and grossing, not free.
  • A gap in the history. The daily job for that date failed and its retries were exhausted. Check the queue dashboard at /admin/queues.
  • A free game has no overall free position. On the App Store the free overall chart holds no games, so the position reads Not in top 100. Read the grossing overall chart or the game genre chart. See Read top charts.

Read rankings and SERPs

Keyword positions over the same dates.

Compare a portfolio

Roll several apps up into one view.
Last modified on October 28, 2026