App Store Top Charts Scraper · Ratings + Rank Changes
Pricing
from $1.00 / 1,000 app rows
App Store Top Charts Scraper · Ratings + Rank Changes
Apple App Store top charts (free, paid, grossing) for any country and category, plus keyword search. Every row carries rating, rating count, bundle ID and release date, and scheduled runs show rank changes and new entries. Official Apple feeds, no login.
Pricing
from $1.00 / 1,000 app rows
Rating
0.0
(0)
Developer
TheQuietStack
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Apple App Store top charts (top free, top paid, top grossing) for any country and any category, iPhone or iPad, plus App Store keyword search. Every chart position becomes one flat row that already has the rating, rating count, bundle ID, price and release date. When you schedule it, it also shows how each app moved since the last run. Uses Apple's own public feeds and APIs. No login, no API key.
Part of an app data family with the same flat output:
- Google Play Top Charts Scraper, the Android twin (top 200, with installs)
- App Store Reviews Scraper, reviews from all ~175 storefronts in one run
- Google Play Reviews Scraper, reviews in all 49 languages, with developer replies
Why this scraper
- Ratings are in every chart row. Apple's chart feed has no rating and no rating count. This Actor looks up all 100 apps of a chart in one call to Apple's official Lookup API, so every row has
rating,ratingCount,bundleId,releaseDateandlastUpdated. You don't need a second actor or a second run. - Rank changes built in. With
trackRankChanges(on by default), each run saves a small snapshot of each chart in a named key-value store in your account. The next run fillspreviousRank,rankChange(+3 = moved up three places) andisNewInCharton every row, and the run summary lists the apps that dropped out. Schedule it daily and you get a rank tracker without a spreadsheet. - Any country × chart × category in one run. For example, top grossing in Games/Puzzle for US, UK, DE and JP = 4 charts, one dataset. You can give categories by name (
games/puzzle,health & fitness) or by Apple genre ID (7012). Unknown categories are rejected up front. (Apple would otherwise silently return the overall chart.) - Checked against the App Store. On 24 Sep 2026 the top free chart matched apps.apple.com one for one (US: 15 of 15 positions, UK: 25 of 25, UK Games/Puzzle: 25 of 25), and rating and rating count matched the app pages exactly for 3 of 3 sampled apps.
- Keyword search with the same fields.
searchTermsreturns the App Store search results in order (up to 200 per keyword and country). Use it to see who ranks for a keyword and how many ratings they have. - No silent empty results. Every feed response is checked. If Apple answers in a shape the Actor does not recognise, the summary says
FORMAT_WARNING, and a run that writes nothing fails visibly.
Input example
{"charts": ["top-free", "top-grossing"],"categories": ["all", "games/puzzle", "productivity"],"countries": ["us", "gb", "de"],"device": "iphone","appsPerChart": 100,"searchTerms": ["habit tracker"],"resultsPerSearchTerm": 50,"maxResults": 5000}
That's 2 charts × 3 categories × 3 countries = 18 charts (up to 1,800 rows), plus 3 searches.
Output example
{"rank": 1,"chart": "top-free","chartCategory": "Games / Puzzle","country": "us","device": "iphone","appId": "6761760135","bundleId": "com.oakever.meowdoku","name": "Meowdoku!","developer": "Oakever Games","category": "Games","genres": ["Games", "Casual", "Puzzle"],"price": 0,"currency": "USD","rating": 4.80949,"ratingCount": 240470,"releaseDate": "2026-05-19T07:00:00.000Z","lastUpdated": "2026-09-20T10:34:12.000Z","version": "1.18.0","url": "https://apps.apple.com/us/app/meowdoku/id6761760135","previousRank": 1,"rankChange": 0,"isNewInChart": false,"previousSnapshotAt": "2026-09-23T23:24:37.997Z","scrapedAt": "2026-09-23T23:27:04.715Z"}
| Field | Meaning |
|---|---|
rank | Position in the chart (1 = top). For search rows, the position in the search results |
chart | top-free, top-paid, top-grossing or search |
chartCategory | The category of the chart (All, Games / Puzzle ...) |
category, genres | The app's own primary category and all its categories |
rating, ratingCount | Average stars and number of ratings in that country's storefront, as Apple's Lookup API reports them |
releaseDate / lastUpdated | First release / latest version date, ISO 8601 UTC |
previousRank, rankChange, isNewInChart | Compared with your previous run of the same chart. Empty on the first run, or when the app sits deeper in the chart than your last snapshot went |
A run summary (SUMMARY in the key-value store) lists every chart with the source URL, rows written, apps that dropped out since the last snapshot, and any chart or search that failed.
Honest limits
- Apple publishes the top 100 per chart. The feeds are capped at 100 (tested with 150 and 200). No positions 101–200 from this source.
- Apple's overall charts include games. The App Store app shows apps and games in separate charts, so the overall paid chart here has games in between (UK top paid on 24 Sep 2026: Minecraft at #4, which the website's apps-only list leaves out). Filter on
categoryif you want apps only, or ask for a category chart. - Top grossing is no longer shown on apps.apple.com, only in Apple's feed. It can't be checked against a web page; it comes straight from Apple's official feed.
- Top charts are for iPhone and iPad apps. Mac App Store charts are not included (Apple's paid and grossing Mac feeds returned empty in our test).
ratingCountis per storefront. The same app has a different count in the US and in Germany.- Search results come from Apple's official Search API. The order is close to the App Store app, but Apple does not promise it is identical.
- The rank snapshot store is kept in your account (a few KB per chart). Delete it in Storage → Key-value stores, or set
trackRankChangesto false.
Pricing (pay per event)
- Actor start: small flat fee per run
- Per row: charged only for rows written to the dataset (one row = one app in one chart or search result). Failed charts and skipped categories cost nothing, and
maxResultscaps the bill.