-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
App Store top chart data #2
Comments
Apple offers an RSS feed generator for the top charts of various media types they sell (including apps). Using that, it is possible to obtain an XML or JSON file (despite the tool's name) of the top free or top paid apps per country on the App Store. The generator only returns up to 50 apps, but it is possible to retrieve up to 100 apps by manually adjusting the result limit parameter in the URL: An older version of the RSS feed generator used URLs like this, offering a few more options:
This version returned 200 apps. Unfortunately, it doesn't work anymore. The links just redirect to the new generator. An even older version ( This one allows fetching the top charts per category (see #3). It used to return up to 200 apps, but doesn't anymore. Setting the |
It used to be possible to get more top apps through an endpoint that was used in old versions of the iOS App Store: Through that, one used to be able to get the top 1,500 apps per category. However, that endpoint now only returns the top 100 apps per category. |
Today, I discovered that there is actually a page on the official App Store website that lists the top charts: It can also distinguish by category (e.g. |
There are also various third-parties that collect and offer (sell) this data, some even historically:
AppFigures is most generous of those and shows the top 200 apps for free and without signing in. |
iTunes on Windows (newer versions of iTunes don't include support for the iOS App Store anymore, but Apple offers a special, unsupported (but continuing to work as of the time of writing) version of iTunes (12.6.5.3) that still contains this feature and doesn't prompt the user to update to newer versions: https://support.apple.com/HT208079) can display top charts for each category with up to 200 results each. This is the endpoint they are using:
ParametersThe In addition to the GET parameters, the
|
Since I had to fire up my mitmproxy-ed iTunes 12.6.5.3 anyway, I couldn't help but have a quick look at that after all. :D Turns out: iTunes 12.6.5.3 can still fetch the top charts for iPad and it does use the The returned list changes depending on the platform in the import fetch from 'cross-fetch';
(async () => {
for (let i = 0; i <= 200; i++) {
try {
const res = await fetch('https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewTop?genreId=36&popId=44', {
method: 'GET',
headers: { 'X-Apple-Store-Front': `143443-2,${i}` },
}).then((response) => response.json());
const title = res.pageData.segmentedControl.segments[0].pageData.selectedChart.title;
console.log(i, title);
} catch {}
}
})(); Here's the result:
So, only platform |
Another observation worth noting: There are different versions of the same top chart for the same day, depending on the Apple endpoint or third-party you're asking. They differ slightly in the following ways:
I haven't looked into this further and I don't think it's too critical but it is good to be aware of that, I suppose. |
There is yet another endpoint! I've discovered this one in the response of the genre endpoint (#3):
By default, it returns only 5 app IDs. By trial and error, I found that you can add a
Here's the full list of URLs included in the genre response: {
"appsByRevenue": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=AppsByRevenue",
"freeApplications": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=FreeApplications",
"freeAppleTVApps": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=FreeAppleTVApps",
"paidAppleTVApps": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=PaidAppleTVApps",
"freeAppsV2": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=FreeAppsV2",
"paidIpadApplications": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=PaidIpadApplications",
"ipadAppsByRevenue": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=IpadAppsByRevenue",
"freeIpadApplications": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=FreeIpadApplications",
"paidApplications": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=PaidApplications",
"appleTVAppsByRevenue": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=AppleTVAppsByRevenue",
"applications": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=Applications",
"freeMacAppsV2": "https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=us&g=36&name=FreeMacAppsV2"
} This endpoint can also filter by genre. I haven't looked into what the different charts are. Maybe those are the different result sets I observed in #2 (comment)? |
We need a reliable automated way to access the most popular apps on iOS. We want the list to be as long as possible, and we need to be able to fetch the top charts overall but also for individual categories.
There are many ways of getting to this data from various sources.
The text was updated successfully, but these errors were encountered: