App Store Reviews Scraper - Apple iOS Reviews & Ratings API avatar

App Store Reviews Scraper - Apple iOS Reviews & Ratings API

Pricing

from $6.15 / 1,000 results

Go to Apify Store
App Store Reviews Scraper - Apple iOS Reviews & Ratings API

App Store Reviews Scraper - Apple iOS Reviews & Ratings API

Scrape Apple App Store reviews and ratings for any iOS app by app ID, URL or search term. Get star rating, title, body, author, app version, date and developer response across 150+ country stores, with rating, date, version and keyword filters. No API key. Export to JSON, CSV or Excel.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

11 days ago

Last modified

Share

Apple App Store Reviews & Ratings Scraper

Apple App Store Reviews & Ratings Scraper

Here is one real result, with every field the actor returns (the appDescription, appScreenshots, and appLanguages arrays are trimmed here for readability):

{
"appId": 333903271,
"appName": "X",
"appAverageRating": 4.58335,
"appRatingCount": 10938508,
"appVersionLatest": "12.16",
"seller": "X Corp.",
"genre": "News",
"appDescription": "X (formerly Twitter) is a social media app where you can follow breaking news, live events, and trending topics as they happen...",
"appReleaseNotes": "We made improvements and squashed bugs so X is even better for you.",
"appPrice": 0,
"appFormattedPrice": "Free",
"appCurrency": "USD",
"appContentRating": "17+",
"appReleaseDate": "2009-10-09T19:50:00Z",
"appCurrentVersionReleaseDate": "2026-08-10T22:31:11Z",
"appSizeBytes": 496360448,
"appMinimumOsVersion": "15.0",
"appDeveloperName": "X Corp.",
"appDeveloperUrl": "http://x.com/",
"appDeveloperViewUrl": "https://apps.apple.com/us/developer/x-corp/id296415947?uo=4",
"appDeveloperId": 296415947,
"appBundleId": "com.atebits.Tweetie2",
"appIcon": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/c8/a4/ff/c8a4ffb6-5efa-2202-61bb-d727ff3497a6/ProductionAppIcon-0-0-1x_U007emarketing-0-8-0-0-0-85-220.png/512x512bb.jpg",
"appScreenshots": ["https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/21/82/3c/.../320x480bb.jpg"],
"appGenres": ["News", "Social Networking"],
"appLanguages": ["AR", "EN", "ES", "FR", "JA", "PT"],
"appAverageRatingCurrentVersion": 4.58335,
"appRatingCountCurrentVersion": 10938508,
"country": "us",
"reviewId": "14420739998",
"author": "hi 录哥",
"authorUrl": "https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewUserReviews?userProfileId=1956428607",
"rating": 5,
"title": "好",
"body": "非常好",
"appVersion": "12.16",
"voteSum": null,
"voteCount": null,
"developerResponse": null,
"developerResponseDate": null,
"updatedAt": "2026-08-13T00:00:00.000Z",
"url": "https://apps.apple.com/us/app/x/id333903271?uo=4",
"aiSentiment": null,
"aiSentimentScore": null,
"aiSummary": null,
"aiTopics": null,
"aiCategory": null,
"observedAt": "2026-08-14T05:42:07.440Z",
"error": null
}

The most complete Apple App Store reviews scraper and iOS app reviews API on Apify. Pull App Store customer reviews and ratings for any iOS app by app ID, App Store URL, or search term, in a single country or across 150+ country storefronts at once. Unlike scrapers built on Apple's public RSS feed, which stops at roughly 500 reviews per app, this actor reads the storefront review feed that paginates thousands of reviews per app and country so you get real depth for app review analysis, App Store Optimization (ASO), and app reputation monitoring.

It returns every field the review feed exposes (star rating, title, body, author, app version, and review date) joined with full app metadata (average rating, rating count, developer, price, size, genres, languages, screenshots), plus optional AI add-ons for sentiment, summary, and topics, and gives you seven review filters (rating range, date range, keyword, app version, and developer-response) to target exactly the reviews you need. No API key, no Apple developer account.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor resolves apps from app IDs, App Store URLs, or a search term, then pulls each app's metadata and its customer review feed for every country you request (one, several, or all supported storefronts). It applies your rating, date, keyword, version, and developer-response filters and writes one normalized record per review to the run's dataset. Each review record is joined with the full app metadata so every row is self-contained. Missing source values are returned as null, never invented. Three optional AI add-ons (paid plans only) can classify sentiment, summarize the review, and extract topics and a category.

Common uses: app review analysis and customer feedback mining, App Store Optimization (ASO), competitor and category benchmarking, release-quality tracking by app version, developer-response auditing, and building NLP or sentiment training datasets.

Quickstart

Open the actor, paste this into the input, and press Run. It returns the 10 most recent US reviews for X (formerly Twitter).

{
"appIds": ["333903271"],
"country": "us",
"maxReviews": 10,
"sortBy": "mostRecent"
}

Provide appIds, appUrls, or a searchTerm. Use countries to scrape several storefronts in one run (for example ["us","gb","mx","br"], or ["all"] for every supported country).

Input reference

FieldTypeRequiredDefaultDescription
appIdsstring[]no["324684580"]Apple App Store numeric app IDs, for example 324684580 for Spotify.
appUrlsstring[]no(empty)Full App Store URLs, for example https://apps.apple.com/us/app/spotify/id324684580. App ID and country are read from the URL.
startUrlsarrayno(empty)Alias for appUrls. Accepts plain URL strings or { "url": "..." } objects. Merged with appUrls.
searchTermstringno(none)Find apps by name and scrape reviews of the top matches.
searchLimitintegerno3How many apps to take from the search term.
countrystringnousTwo-letter App Store country code, for example us, gb, mx, br. Used when countries is empty.
countriesstring[]no(empty)Multiple two-letter country codes to scrape each app in every listed storefront. Use ["all"] for every supported country. Overrides country when set.
maxReviewsintegerno10Maximum reviews per app and country. Also accepted as maxItems / maxReviewsPerApp. The feed paginates deep (thousands of reviews for popular apps). Set 0 with includeAppMetadata for metadata only.
sortByenumnomostRecentReview order. One of mostRecent, mostHelpful.
includeAppMetadatabooleannofalseAlso output one app-details row for apps with no reviews (or when maxReviews is 0).
minRatingintegerno(none)Only return reviews with a star rating >= this value (1 to 5).
maxRatingintegerno(none)Only return reviews with a star rating <= this value (1 to 5).
reviewsFromDatestringno(none)Only return reviews on or after this date, for example 2025-01-01. Also accepted as until.
reviewsToDatestringno(none)Only return reviews on or before this date, for example 2025-12-31.
reviewKeywordstringno(none)Only return reviews whose title or body contains this text (case-insensitive).
reviewAppVersionstringno(none)Only return reviews left on this exact app version, for example 8.9.0.
onlyWithDeveloperResponsebooleannofalseOnly return reviews that have a developer reply.
withSentimentbooleannofalseAI add-on (paid plans only). Classify each review's sentiment with a confidence score. Billed only when produced.
withSummarybooleannofalseAI add-on (paid plans only). Generate a 1 to 2 sentence summary of each review. Billed only when produced.
withTopicsbooleannofalseAI add-on (paid plans only). Extract discussed aspects/keywords and a broad category. Billed only when produced.

Output reference

One dataset item per review (each joined with the app's metadata). Types: string, number, integer, boolean, string[], or null when the source value is absent.

FieldTypeDescription
appIdintegerApple App Store numeric app ID.
appNamestringApp name.
appAverageRatingnumberOverall average rating (0 to 5).
appRatingCountintegerTotal number of ratings.
appVersionLateststringLatest published app version.
sellerstringSeller name.
genrestringPrimary genre.
appDescriptionstringFull app description.
appReleaseNotesstringRelease notes for the current version.
appPricenumberPrice as a number.
appFormattedPricestringPrice as displayed, for example Free.
appCurrencystringCurrency code.
appContentRatingstringContent advisory rating, for example 17+.
appReleaseDatestringISO original release date.
appCurrentVersionReleaseDatestringISO release date of the current version.
appSizeBytesintegerApp download size in bytes.
appMinimumOsVersionstringMinimum iOS version required.
appDeveloperNamestringDeveloper name.
appDeveloperUrlstringDeveloper website URL.
appDeveloperViewUrlstringDeveloper page URL on the App Store.
appDeveloperIdintegerApple developer ID.
appBundleIdstringApp bundle identifier.
appIconstringApp icon image URL.
appScreenshotsstring[]App screenshot image URLs.
appGenresstring[]All genres the app is listed under.
appLanguagesstring[]Supported language codes.
appAverageRatingCurrentVersionnumberAverage rating of the current version.
appRatingCountCurrentVersionintegerRating count of the current version.
countrystringApp Store country code the review was pulled from.
reviewIdstringUnique review ID.
authorstringReview author display name.
authorUrlstringAuthor profile URL.
ratingintegerStar rating of the review (1 to 5).
titlestringReview title.
bodystringReview body text.
appVersionstringApp version the review was left on.
voteSumintegerNet helpful votes, or null.
voteCountintegerTotal votes cast, or null.
developerResponsestringDeveloper reply text when the feed includes one. This review feed rarely exposes developer replies, so it is usually null.
developerResponseDatestringISO date of the developer reply, or null.
updatedAtstringISO date the review was posted or updated.
urlstringApp Store URL for the app.
aiSentimentstringSentiment from the AI add-on (positive, negative, neutral), or null.
aiSentimentScorenumberSentiment confidence 0 to 1 from the AI add-on, or null.
aiSummarystringShort summary from the AI add-on, or null.
aiTopicsstring[]Topics/keywords from the AI add-on, or null.
aiCategorystringBroad category from the AI add-on, or null.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"appIds": ["333903271"], "country": "us", "maxReviews": 3, "sortBy": "mostRecent"}):

{
"appId": 333903271,
"appName": "X",
"appAverageRating": 4.58335,
"appRatingCount": 10938508,
"seller": "X Corp.",
"genre": "News",
"country": "us",
"reviewId": "14420739998",
"author": "hi 录哥",
"rating": 5,
"title": "好",
"body": "非常好",
"appVersion": "12.16",
"voteSum": null,
"voteCount": null,
"developerResponse": null,
"developerResponseDate": null,
"updatedAt": "2026-08-13T00:00:00.000Z",
"url": "https://apps.apple.com/us/app/x/id333903271?uo=4",
"observedAt": "2026-08-14T05:42:07.440Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~app-store-reviews-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"appIds":["333903271"],"country":"us","maxReviews":50,"minRating":1,"maxRating":2}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~app-store-reviews-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchTerm":"spotify","searchLimit":3,"country":"gb","maxReviews":100,"sortBy":"mostHelpful"}'

Apify CLI:

apify call scrapers_lat/app-store-reviews-scraper \
--input '{"appUrls":["https://apps.apple.com/us/app/spotify/id324684580"],"maxReviews":50}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

How we compare

This actor is a strict superset of the popular App Store review scrapers: it accepts all of their inputs and returns all of their data, plus deeper pagination, more filters, and richer app metadata.

CapabilityThis actorautomation-labtheagents / thewolves
App ID / App Store URL inputYes (appIds, appUrls, startUrls)YesYes
Search by app nameYes (searchTerm)NoNo
Multiple countries / all storefrontsYes (countries, ["all"])YesCountry or all
Sort (recent / helpful)YesRecentRecent
Reviews per appThousands (deep feed)~500 (RSS ceiling)~500 (RSS ceiling)
Rating range filterYes (minRating/maxRating)NoNo
Date range filterYes (reviewsFromDate/reviewsToDate/until)Nountil only
Keyword filterYes (reviewKeyword)NoNo
App-version filterYes (reviewAppVersion)NoNo
Full app metadata joined per reviewYes (30+ fields)PartialMinimal
Optional AI sentiment / summary / topicsYes (opt-in, paid)NoNo
No API key / no Apple accountYesYesYes

Common input aliases (startUrls, maxItems, maxReviewsPerApp, until) are accepted so you can point existing workflows at this actor without rewriting your input.

Billing and limits

  • Pay per result. You are charged per review returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Apps that return no reviews cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 results per run. AI add-ons are disabled for free plans.
  • AI add-ons (withSentiment, withSummary, withTopics) require a paid plan and are charged per review only when the model returns usable output. They are billed after the review row is delivered, never before.
  • Review depth. The storefront review feed paginates far deeper than Apple's public RSS feed (which stops near 500 reviews). Popular apps expose thousands of reviews per country; smaller apps return everything they have. Set maxReviews to the depth you need.

FAQ and troubleshooting

A run returned 0 reviews. Why? The app has no reviews in that country, or your filters matched nothing. Zero-result runs are not charged. Try a different country or loosen rating and date filters.

How do I get reviews for a specific country, or many countries? Set country to the two-letter App Store code, for example mx or br. For several storefronts in one run, set countries to a list such as ["us","gb","mx","br"], or ["all"] for every supported country. App Store URLs already encode their own country. Reviews are localized, so each storefront returns that country's reviews in its own language.

How many reviews can I get per app? Is there a 500 limit? No. Tools built on Apple's public RSS feed stop at about 500 reviews per app. This actor reads the deeper storefront review feed, which paginates through thousands of reviews per app and country. Set maxReviews (or maxItems) to the depth you want; smaller apps simply return everything available.

Why are votes null? The current App Store review feed does not expose helpful-vote counts for every review; missing values are returned as null, never invented.

How do I only get complaints? Set maxRating to 2 (or minRating/maxRating to 1) and optionally add a reviewKeyword.

Why are the AI fields null? The AI add-ons are off by default and require a paid plan. Enable withSentiment, withSummary, or withTopics on a paid plan to populate them.

Is this an official Apple tool? No. This actor is independent and has no affiliation with Apple. It reads only data that is publicly available through the Apple App Store.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Apple. Accesses only publicly available App Store data.