Apple App Store Reviews Scraper — any iOS app, no login
Pricing
from $0.20 / 1,000 item scrapeds
Apple App Store Reviews Scraper — any iOS app, no login
Scrape Apple App Store reviews and ratings for any iOS app, in any country, using Apple's public review feed (JSON with XML fallback) — no App Store Connect key needed. Returns review text, star rating, author, app version and app details as structured JSON. $0.20 per 1,000 rows.
Pricing
from $0.20 / 1,000 item scrapeds
Rating
0.0
(0)
Developer
drop-in apis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Apple App Store reviews scraper that reads Apple's public customer-reviews feed for any iOS app and country: review text, rating, version and date, plus app details. No App Store Connect key. Up to 500 reviews per app per country. $0.20 per 1,000 rows.
Last updated: 2026-10-02 · Guide: https://alidaram99.github.io/api-alternatives/app-store-reviews-scraper/
Built on Apple's own public endpoints (the review feed in JSON, with an automatic XML fallback, and the iTunes lookup API). No login and no CAPTCHA bypass.
Use cases
- ASO (App Store Optimization): track rating trends, keyword mentions and sentiment in reviews across storefronts and competitor apps.
- Product feedback: pull every recent review for your own app into your own database or spreadsheet for triage.
- Competitor monitoring: watch a competitor's rating, version-release cadence and review volume over time.
Input
| Field | Type | Description |
|---|---|---|
apps | array (required) | App Store URLs (e.g. https://apps.apple.com/us/app/duolingo-language-lessons/id570060128) or bare numeric app ids (e.g. 570060128). Both are accepted. |
countries | array | 2-letter storefront codes, e.g. ["us", "gb", "de"]. Default ["us"]. Each app is fetched once per country — ratings, prices and review volume genuinely differ by storefront. |
maxReviewsPerApp | integer | Stop after this many reviews per app per country. Default 100, max 500 (Apple's feed itself caps at 500 — see Limits). |
sinceDate | string (optional) | ISO date. Reviews are newest-first, so the scraper stops paging for an app/country as soon as it reaches an older review. |
includeAppDetails | boolean | Also output one app-details row per app × country. Default true. |
Example input:
{"apps": ["570060128", "https://apps.apple.com/gb/app/duolingo-language-lessons/id570060128"],"countries": ["us", "gb"],"maxReviewsPerApp": 200,"includeAppDetails": true}
Output
One dataset row per review, plus (if includeAppDetails) one row per app × country. Both
shapes share one dataset with a type field ("review" or "app") — use the Reviews or
App details dataset view to see just the relevant columns. A third, rare row shape,
type:"warning" ({ type: "warning", appId, country, message }, see the Warnings view),
only appears when Apple's feed stayed empty across every retry for an app/country that
demonstrably has reviews — see the FAQ below.
Review row:
{"type": "review","appId": "570060128","appName": "Duolingo: Language Lessons","country": "us","reviewId": "14612250135","title": "Fun","text": "Very fun and get one month free for unlimited power","rating": 5,"version": "7.142.0","date": "2026-09-30T13:01:34-07:00","userName": "Hi it is a fun game","voteCount": 0,"voteSum": 0,"developerResponse": null,"source": "rss-json"}
App-details row:
{"type": "app","appId": "570060128","country": "us","name": "Duolingo: Language Lessons","developer": "Duolingo, Inc","price": 0,"currency": "USD","averageRating": 4.72,"ratingCount": 5480861,"version": "7.142.0","releaseDate": "2012-11-13T08:00:00Z","currentVersionReleaseDate": "2026-09-28T17:42:01Z","genres": ["Education", "Social Networking"],"contentRating": "4+","size": "515190784","minimumOsVersion": "17.0","description": "Learn a new language, chess & more...","url": "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128?uo=4"}
How it compares
| Option | Any app, any country? | Price | Notes |
|---|---|---|---|
| This Actor | Yes | $0.20 per 1,000 rows | Public feed (JSON with XML fallback), retries when Apple's feed is flaky, app details included |
| App Store Connect API | No: only apps your team owns | Free | Needs an API key; includes developer responses |
| Other App Store review Actors on Apify | Usually yes | Some are cheaper (from about $0.10 per 1,000) | Compare fields, success rate and how they handle empty feeds |
Pricing
$0.0002 per item ($0.20 per 1,000 rows), pay-per-event — you're billed per review or app-details row actually pushed, nothing else.
FAQ
How do I export App Store reviews without App Store Connect?
Run this Actor with the app id (or App Store URL) and country codes. App Store Connect's API only covers apps your team owns; this Actor reads Apple's public feed for any app.
Does this scrape Apple App Store reviews, or Google Play?
Apple App Store only — iOS, iPadOS and macOS apps distributed through apps.apple.com. It does not touch Google Play; that's a different feed entirely.
How many iOS reviews can I get per app?
Up to 500 per app per country: Apple's public feed stops after 10 pages of 50. Add more countries for more coverage; reviews differ by storefront.
Why would a run return no reviews?
Apple's feed is sometimes empty for a while. The Actor retries and falls back from the JSON feed to the XML feed. If both stay empty for an app that has ratings, it adds a type: "warning" row for that app and country instead of failing silently. That warning row is a dataset row like any other ($0.0002).
What does it cost?
$0.0002 per dataset row ($0.20 per 1,000). Review rows and app-details rows both count as rows.
Does it include the developer's reply to a review?
No. Developer responses are not part of Apple's public feed, so developerResponse is always null.
Can I track a competitor's ratings and reviews?
Yes. Pass their app id. You get their public reviews and the public rating summary in the app-details row.
Why does source say rss-json for some reviews and rss-xml for others?
It records which of Apple's two equivalent feed formats answered. Both carry the same review fields; the Actor uses the second as a fallback when the first comes back empty.
Does it use Apple's authenticated web API?
No. That endpoint needs a per-session bearer token (it returns HTTP 401 without one), so this Actor only uses Apple's public, unauthenticated endpoints.
Limits
- Up to 500 reviews per app per country (Apple's own cap, not an Actor limit).
- No developer-response text (not present in the source feed).
- Review text language follows the storefront's dominant language, not a
languageinput. - Apple's feed has been observed to stay empty, for a single app/country, well past this Actor's own retries (see the FAQ above) — rare, but possible. Querying more than one app/country at once (the default prefill does this) makes a run far more likely to come back with real reviews even if one specific app/country is having a bad moment.
Verified on Apify
On 2026-10-02 the Actor ran on Apify's own infrastructure: the nightly health check (Duolingo and Spotify, US and GB, up to 5 reviews each) returned reviews and passed. Remaining caveats are listed in VERIFY.md. In particular, Apify stops a run when your maximum charge is reached; the Actor does not stop itself earlier.