App Store Reviews Scraper - iOS & macOS Reviews avatar

App Store Reviews Scraper - iOS & macOS Reviews

Pricing

from $0.50 / 1,000 review returneds

Go to Apify Store
App Store Reviews Scraper - iOS & macOS Reviews

App Store Reviews Scraper - iOS & macOS Reviews

Scrape Apple App Store reviews for any iOS/macOS app across multiple countries in one run. Get ratings, titles, bodies, authors, versions, dates, votes, and URLs with rating, date, and keyword filters applied before billing. No login, no cookies, no external API keys.

Pricing

from $0.50 / 1,000 review returneds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

App Store Reviews Scraper - iOS & macOS Ratings

This Apify Actor helps product teams, ASO analysts, support teams, and AI agents collect Apple App Store reviews for one or many iOS or macOS apps across one or many country storefronts in a single run. It accepts numeric App Store IDs or full apps.apple.com URLs, and each output record represents one review. The dataset includes ratings, review titles, bodies, reviewer names, app versions, dates, helpfulness votes, and source URLs, with rating, date, keyword, and helpful-vote filters applied before billing. It runs without login, cookies, or external API keys, and it is usable through Apify MCP.

Best fit and connected workflows

This Actor fits workflows that start with an Apple App Store app ID and need structured review data from one storefront or many storefronts in one run.

It is a natural match for:

  • release monitoring, where teams track recent reviews around a launch window
  • ASO research, where analysts compare titles, bodies, and helpfulness signals
  • localization QA, where the same app is checked across storefronts such as us, gb, de, or jp
  • review triage, where keyword and star filters keep the output focused on the feedback you care about
  • AI-agent pipelines, where the input is simple and the output is flat JSON per review

Practical scenario

Maya, a product manager, has the App Store ID for her app and wants to check feedback from the United States and United Kingdom after a release. She enters the app ID, selects us and gb, and adds a date range plus a 1 and 2 star filter.

The returned records include title, body, rating, date, voteSum, and reviewUrl. Maya can quickly spot repeated bug reports, confirm which version a reviewer used, and send the review URLs to the engineering team for follow-up.

Input

Use one or more app IDs or full App Store URLs, then add the optional filters and run bounds that match your workflow.

FieldTypeRequiredDefaultPurpose
appIdsarray of stringsYes["324684580"]One or more numeric App Store IDs or full App Store URLs. Duplicate apps are processed once.
countriesarray of stringsNo["us"]One or more lowercase two-letter storefront codes. Reviews are fetched from each selected country in one run.
sortBystringNomostRecentChoose mostRecent or mostHelpful.
maxReviewsPerAppintegerNo500Paid review-row cap for each app within each country storefront.
maxReviewsintegerNo1000Hard billing and output cap across the full run.
ratingFilterarray of integersNo[]Keep only selected star ratings from 1 to 5.
dateFromstringNo""Keep only reviews dated on or after this ISO date.
dateTostringNo""Keep only reviews dated on or before this ISO date.
keywordsarray of stringsNo[]Keep only reviews whose title or body contains at least one case-insensitive keyword.
minVoteSumintegerNo0Keep only reviews whose helpful vote sum is at least this value.

Focused input example

{
"appIds": [
"324684580",
"https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
],
"countries": ["us", "gb"],
"sortBy": "mostRecent",
"maxReviews": 200,
"ratingFilter": [1, 2],
"dateFrom": "2026-01-01",
"keywords": ["crash", "login"],
"minVoteSum": 0
}

Output

Each matching review is written as one validated row in the default dataset.

FieldTypeMeaning
reviewIdstringStable Apple review identifier.
appIdstringNumeric App Store identifier for the app.
appNamestring or nullavailable app name when Apple exposes it.
countrystringStorefront code the review came from.
ratingintegerStar rating from 1 to 5.
titlestringReview headline.
bodystringFull review text.
reviewerNamestring or nullPublic reviewer name when available.
reviewerUrlstring or nullApple reviewer profile URL when exposed.
appVersionstring or nullApp version used by the reviewer.
datestringISOa bounded number of review timestamp.
voteSumintegerNet helpfulness vote sum reported by Apple.
voteCountintegerTotal helpfulness votes.
reviewUrlstring or nullCanonical Apple review URL when exposed.
scrapedAtstringISO 8601 timestamp when the row was saved.

Illustrative output record

{
"reviewId": "14376567123",
"appId": "324684580",
"appName": null,
"country": "us",
"rating": 5,
"title": "Amazing",
"body": "Easy to use and So much more",
"reviewerName": "Arpi house",
"reviewerUrl": "https://itunes.apple.com/us/reviews/id1726025656",
"appVersion": "9.1.68",
"date": "2026-08-01T23:53:50.000Z",
"voteSum": 0,
"voteCount": 0,
"reviewUrl": "https://itunes.apple.com/us/review?id=324684580&type=Purple%20Software",
"scrapedAt": "2026-08-03T12:00:00.000Z"
}

How it works

This Actor reads Apple's public iTunes RSS customer-reviews feed for each requested app and country pair:

https://itunes.apple.com/{country}/rss/customerreviews/id={appId}/sortBy={sort}/page={n}/json

It walks the selected storefronts, deduplicates identical reviews across countries, applies your filters before billing, and writes each matching review to the default dataset as a validated record. The live contract includes two sort orders: mostRecent and mostHelpful.

Pricing

App Store Reviews Scraper - iOS & macOS Ratings uses Pay per event plus Apify platform usage.

The charged events are:

  • Actor start
  • Review returned

A Review returned event is charged only when one complete, schema-validated review is written to the default dataset. Reviews filtered out by rating, date, keyword, or helpful-vote rules are skipped before billing.

For current pricing details, open the live Pricing tab in Apify. As a simple example written in words, a run capped at one thousand reviews can charge up to one thousand review-returned events, plus platform usage reported by Apify.

Use with AI agents (MCP)

This Apify Actor is usable through Apify MCP as a tool for fetching structured Apple App Store review data.

Tool description: given one or more App Store IDs and optional storefront and filter settings, it returns one JSON record per review, with provenance fields that show the app, country, source URL, and scrape timestamp.

Exact Actor identity: khadinakbar/appstore-reviews-scraper

Pull Apple App Store reviews for app ID 324684580 across us and gb. Keep only 1-star and 2-star reviews from the last 30 days, return the dataset rows, and include helpfulness votes and source URLs.

Output interpretation:

  • each dataset row represents one Apple review
  • rating, title, body, reviewerName, appVersion, date, voteSum, and reviewUrl are the core fields for analysis
  • reviewId, appId, country, and scrapedAt support traceability and deduplication
  • if you select multiple storefronts, identical reviews are deduplicated across countries

Scope and pagination guidance:

  • Apple returns reviews by page in its public RSS feed
  • the Actor follows the feed across the requested storefronts
  • Apple returns at mosta bounded number of reviews per app per country, so maxReviewsPerApp and maxReviews help bound the run size and cost

Cost guidance:

  • filters are applied before billing
  • the Review returned event is charged only for written dataset rows
  • setting a tighter date range, rating list, or keyword list keeps the output focused

Apify API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
appIds: ["324684580"],
countries: ["us"],
sortBy: "mostRecent",
maxReviews: 25,
ratingFilter: [1, 2]
};
const run = await client.actor("khadinakbar/appstore-reviews-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Set APIFY_TOKEN in your environment before running the example.

Best results and outcome guidance

For focused review collection, start with one or a few app IDs and the storefronts that matter to your workflow.

Useful patterns:

  • use dateFrom and dateTo for release-window review tracking
  • use ratingFilter to isolate praise or complaints
  • use keywords to surface bug reports, feature requests, or localized terms
  • use sortBy: mostHelpful when you want more endorsement-heavy feedback
  • use maxReviewsPerApp and maxReviews to keep the run size aligned with your workflow

Continue the workflow

Design note

I found that the dataset contract includes both voteSum and voteCount, which makes helpfulness signal analysis more precise than using star rating alone.

FAQ

Can I run this Actor for multiple countries at once?

Yes. Pass multiple lowercase storefront codes in countries, and the Actor fetches each selected storefront in one run.

Can I pass App Store URLs instead of numeric IDs?

Yes. The input accepts both numeric App Store IDs and full apps.apple.com URLs, and URL IDs are reduced to numeric IDs.

Which review order should I use?

Use mostRecent for fresh monitoring and mostHelpful when you want reviews with more helpfulness votes near the top.

How do I focus on release feedback?

Add a dateFrom value near your release date and combine it with a star filter such as [1, 2].

Can I use this with Apify MCP?

Yes. This Actor is usable through Apify MCP and returns structured review rows that agents can parse directly.

Responsible use

Use this Actor in ways that respect Apple's terms, applicable laws, and the privacy expectations of the review authors. It reads publicly available Apple App Store review data and does not require login, cookies, or external API keys. Review the data with care when storing, sharing, or automating actions from it.