DEV Community

Ken-Mutisya
Ken-Mutisya

Posted on

"Apple Publishes Its App Store Charts as a Free JSON Feed. Rank Trackers Charge $40/mo for It"

Every ASO tool sells the same first feature: "track your app's chart position daily." Here is the part they rarely mention — Apple publishes the charts as a public, keyless JSON feed, and it has worked for over a decade.

The feed

GET https://itunes.apple.com/us/rss/topfreeapplications/limit=100/genre=6014/json
Enter fullscreen mode Exit fullscreen mode

Swap the pieces:

  • Country: us, gb, de, jp, br — any storefront code
  • Chart: topfreeapplications, toppaidapplications, topgrossingapplications
  • Genre: Apple's genre IDs (6014 Games, 6015 Finance, 6005 Social Networking); drop the segment for the overall chart
  • Depth: limit= up to 200

Each entry carries the app ID, name, developer, price with currency, category, release date, and artwork URLs. Position in the array is the rank. No key, no auth, no bot wall — this is a feed Apple built to be consumed.

(There is also a newer rss.marketingtools.apple.com API, but it dropped genre filtering, and category charts are where the useful signal lives — a niche app can rank #12 in Finance/DE while being invisible in the overall top 200.)

What turns a feed into a tracker

The feed is a snapshot. The product is the delta. Three things to add:

  1. State between runs. Store {appId: rank} per chart (country × type × genre). On the next run, join against it: previousRank, rankChange, and an isNew flag for chart entries. On Apify this is a named key-value store, so a scheduled run compares automatically.
  2. A tracked-apps mode. Most buyers care about their app, not the whole chart. Filter rows to a list of app IDs — and report "not charting" explicitly (as a free row, since no rank is not data you should pay for).
  3. Rank direction that reads correctly. rankChange = previousRank - rank, so climbing from #47 to #31 is +16. Positive equals good news; your Slack alert should not need a legend.

The rising-apps trick

The same rows serve a second buyer. Scan a full category chart daily and filter isNew == true or rankChange > 20: that is a rising-apps detector, and it surfaces breakout apps days before the roundup articles, in whatever country you point it at. Publishers and investors pay for exactly this view.

The economics

One chart is one HTTP request. Pulling 50 ranks costs a few hundredths of a cent in compute, which is why per-row pricing works against $40+/month subscriptions. I packaged the whole thing as an Apify actor this week: App Store Top Charts Tracker does the fan-out (countries × charts × categories), the state comparison, and the tracked-apps mode, at $0.003 per rank row with the first 2 rows of every run free.

Google Play, for the record, has no equivalent public feed — its charts hide behind an internal RPC. That asymmetry says a lot: the data was never the moat. The scheduling, the state, and the diff were, and those are about 100 lines of code.

Top comments (0)