App Store App Details Tracker - Ratings, Star Counts & Versions avatar

App Store App Details Tracker - Ratings, Star Counts & Versions

Pricing

from $1.83 / 1,000 app details returneds

Go to Apify Store
App Store App Details Tracker - Ratings, Star Counts & Versions

App Store App Details Tracker - Ratings, Star Counts & Versions

For ASO teams, app marketers and competitor trackers: exact rating count, count per star (5 to 1), rating, version, update date, price, size and chart rank of App Store apps. Matched the live store page on 5 of 5 apps checked 2026-09-21. Monitoring mode returns only apps that changed.

Pricing

from $1.83 / 1,000 app details returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

For ASO teams, app marketers and competitor trackers: the exact rating count, the count per star (5 to 1), the average rating, version, last update date, release notes, price, size, minimum OS, age rating and chart position of every App Store app in your list, one row per app. On 2026-09-21 the rating, rating count label, star bars, version, price and size matched what the live App Store page shows in a browser for 5 of 5 apps checked (Instagram, Facebook, Minecraft, Things 3, YouTube). Paste app ids or store URLs, get a clean table, and turn on monitoring mode to receive only the apps whose ratings, release or price changed since the last run.

Export as JSON, CSV or Excel. Unofficial. Public data only.

What it does

  • Reads the public app page https://apps.apple.com/<country>/app/id<id> for each app, in the country you choose.
  • Many apps per run (up to 1,000), from numeric ids (389801252), id389801252 or URLs, mixed.
  • Exact numbers from the app page itself. The store shows "30M Ratings"; the row has ratingCount 29507938 and the count for each star, which add up to exactly that total.
  • Does not fail on bad entries. An app that does not exist or is not sold in that country, an unknown country code, a block or a typo comes back as a free row that says why. The run carries on with the rest of the list.
  • Monitoring mode remembers each app and returns only the apps whose rating, rating count, last update, version or price changed, with the previous value and the difference.

It only reads app pages on apps.apple.com, which its robots.txt allows. It does not use the iTunes lookup or search API or the review RSS feeds (robots.txt of itunes.apple.com disallows those for crawlers). Looking for Google Play? See the sister Actor Google Play App Details Tracker.

Input

FieldWhat it does
appsApp Store ids or app URLs. Bundle ids (com.burbn.instagram) are not accepted: turning them into an id needs the iTunes lookup API, which robots.txt disallows. A URL's own country (/jp/) wins over country for that app. Leave it out (with monitoring off) to read two example apps.
countryTwo-letter store country (us, gb, de, jp, in ...). The rating, rating count, count per star, price, currency and chart position are per country (Minecraft: 838,771 ratings in the US, 106,260 in Japan). Each page is in the store's own language; pageLanguage says which.
maxAppsWith monitoring off, stop after this many charged rows (a free row says how many entries were not read).
monitoringModeReturn an app only when it changed since the row last returned for it. The first run returns every app once.
changeOnWhat counts as a change in monitoring mode: any, rating, release or price.
resetMonitoringStateForget everything remembered and start over (turn it off again after one run).
useProxyRetry a page through a datacenter proxy only when the App Store answers with a rate limit or a block.

Example:

{
"apps": ["389801252", "id570060128", "https://apps.apple.com/jp/app/minecraft/id479516143"],
"country": "us",
"monitoringMode": true,
"changeOn": "any"
}

Output

One row per app. Example (Instagram, US, read on 2026-09-21 in the first monitoring run, so it is a first check; monitoring columns that are null on a first check are left out):

{
"status": "ok",
"appId": "389801252",
"appUrl": "https://apps.apple.com/us/app/instagram/id389801252",
"country": "us",
"pageLanguage": "en-US",
"bundleId": "com.burbn.instagram",
"title": "Instagram",
"subtitle": "Videos, creators & friends",
"developer": "Instagram, Inc.",
"developerId": "389801255",
"category": "Photo & Video",
"genres": ["Photo & Video", "Social Networking"],
"ratingsShown": true,
"rating": 4.7,
"ratingCount": 29507938,
"ratingCountShown": "30M Ratings",
"ratingHistogram": { "fiveStars": 25307557, "fourStars": 2001517, "threeStars": 696535, "twoStars": 274969, "oneStar": 1227360 },
"price": 0,
"currency": "USD",
"priceText": null,
"isFree": true,
"appleArcade": false,
"inAppPurchases": true,
"version": "447.0.0",
"updatedAt": "2026-09-14T21:46:56.000Z",
"releaseNotesStart": "Performance optimizations and stability improvements for a smoother, more reliable experience.",
"sizeText": "603.4 MB",
"sizeMb": 603.4,
"minimumOsVersion": "16.3",
"compatibility": "Requires iOS 16.3 or later. Compatible with iPhone, iPad, and iPod touch.",
"platforms": ["phone", "pad"],
"ageRating": "13+",
"languagesCount": 39,
"editorsChoice": false,
"chartPosition": 2,
"chartName": "Photo & Video",
"chartType": "top-free",
"descriptionStart": "Little moments lead to big friendships. Share yours on Instagram. ...",
"descriptionLength": 1353,
"iconUrl": "https://is1-ssl.mzstatic.com/image/thumb/.../512x512bb.png",
"change": "first-check",
"isFirstCheck": true
}

How exact are the numbers?

  • ratingCount is the full number from the app page's own data (29,507,938 for Instagram); the page shows it rounded ("30M Ratings", kept in ratingCountShown). The iTunes lookup API that many scrapers use gave different counts for 3 of 5 apps compared at the same moment on 2026-09-21 (Facebook 13,548 lower than its page); this Actor reads the page.
  • ratingHistogram is the count per star, from 5 stars to 1 star. For all 8 apps read on 2026-09-21 the five counts added up to exactly ratingCount, and so did 99 of 99 apps in a 100-app test run the same day. The page data sometimes carries them with a floating-point tail (1020965.0000000001 for Facebook); they are rounded to whole numbers. The star bars shown in a browser matched the split for 5 of 5 apps.
  • rating is the average the page shows, with one decimal (4.7).
  • Numbers did not move between reads. Reading 8 apps 4 times, one minute apart, and 3 apps again from Apify's own network, gave the same rating count, count per star, average, version, update date, price and size every time. The App Store appears to update these numbers in steps, so any difference in monitoring mode is reported, with no tolerance band.
  • ratingsShown is false when the page shows no rating at all (measured: Final Cut Pro, a Mac-only app, whose page data says 0 ratings). rating, ratingCount and ratingHistogram are then null, never 0.
  • updatedAt is the date of the latest version (UTC); version is the version number shown under "What's New" and releaseNotesStart is the start of its notes.
  • price is in currency (6.99 USD for Minecraft in the US, 1300 JPY in Japan); priceText is what the store shows on the buy button of a paid app ("$6.99") and null for free apps. Apple Arcade games (measured: Hello Kitty Island Adventure) come back with appleArcade: true, isFree: false and price null: the page data says 0, but playing needs a paid Apple Arcade plan.
  • In monitoring mode, a value that is missing from the page in one run (it was there before) is not reported as a change, and the previous value stays remembered, so a value that disappears and comes back is never charged twice.
  • sizeText is the size the page shows ("1.3 GB"); sizeMb is the same value in MB (1 GB = 1,000 MB, as the store counts).
  • minimumOsVersion is the first version in compatibility (iOS for iPhone apps, macOS for Mac-only apps).
  • chartPosition, chartName and chartType (top-free or top-paid) are the category chart rank shown on the page, when it shows one.
  • category is the category shown on the page; genres lists every category the app is filed under. Both are in the store's language.
  • Personal contact details that appear inside descriptionStart or releaseNotesStart (emails, phone numbers) are replaced with [email removed] / [phone removed].

Rows that are not charged

Every row has status. Only ok rows are charged. The others say why in note:

statusMeaning
okThe app page was read. Charged.
no-such-appThe App Store answered 404 for this id in that country. It gives the same answer when the app does not exist, was removed, or is not sold in that country (measured: PayPay is 200 in Japan and 404 in the US), so the row does not say which.
country-not-availableThe App Store sent the request to another country's store (it redirects codes it does not know, such as xx, to the US store). The other store's numbers are not returned.
different-app-returnedThe page belonged to another app than the one asked for; not sold as this app.
blockedA rate limit, block or empty answer, even after retries. The app is not reported as missing.
unreadableThe page loaded but its data block was missing or had an unknown shape.
invalid-inputNot an App Store id or app URL (bundle ids included), or an input setting is wrong.
duplicateSame app and country as an earlier entry in the list.
no-changeMonitoring mode: nothing changed since the rows last returned. Only the check fee applies.
not-checkedEntries after maxApps rows, or beyond the first 1,000.
budget-reachedThe run's maximum total charge left no room for another row; says how many entries were not read.

In monitoring mode, an app that disappears (404) keeps its remembered values and its free row carries lastSeenRatingCount, lastSeenVersion and lastSeenAt.

Monitoring mode

Schedule the Actor (for example daily) with monitoringMode: true:

  1. First run: every app comes back with change: "first-check".
  2. Later runs: an app comes back only with change: "details-changed", listing changedFields and the previous values (previousRating, previousRatingCount and ratingCountDelta, previousUpdatedAt, previousVersion, previousPrice, previousCurrency, previousCheckedAt, previousDetailsReadAt, hoursSincePreviousDetails).
  3. An app that is not returned is not charged a row; only the check fee applies to it.

Details are remembered per app, country and changeOn, across all your runs; a schedule with a different changeOn keeps its own memory and starts with a first check. The same app in two countries is two separate apps (their numbers differ). Do not put the same app in two schedules that can run at the same time: the store has no atomic update, so one run can overwrite what the other remembered.

Pricing

Pay per event:

  • $2.50 per 1,000 app rows, charged only for rows with status: "ok".
  • In monitoring mode, also $0.30 per 1,000 app checks: every app whose page was read is a check, changed or not. 100 apps checked every day is 3,000 checks a month, which is $0.90 on top of the rows for the apps that changed.
  • Free rows (missing apps, blocked pages, bad input, duplicates, notes) are never charged.

The Actor never reads more apps than your run's maximum total charge can pay for. In monitoring mode it reserves a check and a change row for each app before reading it. If the maximum total charge stops a run early, a free row says how many entries were not read.

Tips

  • Paste the URL from your browser: https://apps.apple.com/gb/app/instagram/id389801252 reads the UK store.
  • The same app in several countries: list its URL once per country (/us/, /jp/ ...) or run once per country.
  • For release tracking only, use changeOn: "release"; for price drops, changeOn: "price".