# App Store Reviews Scraper — iOS Reviews by Country & Stars (`lergassy/app-store-reviews-scraper`) Actor

\[$0.08/1K reviews] Apple App Store reviews for any app by id, URL or name in 155 countries: stars, title, text, author, date — plus the app's rating summary. Filter by stars. Apple's own feed went empty on 5 Oct 2026; read the depth note before a large job.

- **URL**: https://apify.com/lergassy/app-store-reviews-scraper.md
- **Developed by:** [Matvey](https://apify.com/lergassy) (community)
- **Categories:** AI, Agents
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.06 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**App Store Reviews Scraper** scrapes Apple App Store reviews for any iPhone, iPad or Mac app by app id, App Store URL or app name in 150+ country storefronts and returns star rating, title, review text, author, app version, helpful votes and date as JSON — plus one summary row per app with its overall rating, number of ratings, current-version rating, developer and category.

**$0.08 per 1,000 reviews** ($0.00008 per review), $0.001 per app summary row. No start fee, no login, no API key, no browser. Reviews outside your star filter, unknown apps and bad inputs are free.

### Tested head-to-head — 15 October 2026

Same request for every Actor: Duolingo, US App Store, newest reviews, 20 reviews. This Actor against the five most-used App Store review Actors on the Apify Store.

| | This Actor | The other five |
|---|---|---|
| Reviews returned (20 requested) | **20** | 10–20 (two of five stopped at 10) |
| Price per 1,000 reviews (Free plan) | **$0.08** | $0.10–$2.33 (start or setup fees included) |
| Fee per run | **None** | None to $0.0175 |
| Run time | **3 s** | 3–32 s |
| Helpful votes, total votes, app version, author link in every review | **Yes** | Not all of them |
| Up to 1,000 unique reviews per app and country | **Yes** (`sortBy: both`) | Most stop at 500 |

### What is App Store Reviews Scraper?

A review-mining tool for product managers, app marketers, ASO specialists, UX researchers, investors and AI agents. It reads Apple's public review feed for each country — the same reviews the App Store shows — and turns them into a table you can sort by stars, search for keywords or feed to an LLM for sentiment and feature requests.

Typical uses:

- **Complaint mining** — set **Maximum stars** to 2 and read what breaks for users after each release (`appVersion`).
- **Competitor research** — your app and five competitors, same countries, side by side.
- **Release monitoring** — schedule it daily and watch the rating of the current version.
- **International feedback** — the same app in the US, UK, Germany and Japan, each with its own reviews.
- **AI analysis** — clean text rows ready for sentiment, topic clustering or a weekly summary.

### What is in every row

**Review rows** (`type: review`)

| Field | Meaning |
|---|---|
| `rating`, `title`, `text` | Stars (1–5) and the review |
| `author`, `authorUrl`, `authorId` | Reviewer nickname, their App Store reviews page and numeric reviewer id |
| `appVersion` | App version the review was written for |
| `helpfulVotes`, `totalVotes` | How many people found it helpful, out of all votes |
| `date` | When it was written or last edited |
| `appId`, `appName`, `country`, `reviewId`, `sortedBy` | Which app, which storefront, which list |
| `reviewsUrl` | The app's "all reviews" page in that storefront — a single App Store review has no link of its own |

**App summary rows** (`type: app`, on by default): `rating`, `ratingsCount`, `ratingCurrentVersion`, `ratingsCountCurrentVersion`, `version`, `updatedAt`, `releasedAt`, `developer`, `bundleId`, `category`, `price`, `currency`, `contentRating`, `sizeBytes`, `url`, `iconUrl`.

Two table views come with the dataset: **Reviews** and **App summary**.

### How much does it cost?

| Row | Price |
|---|---|
| Review | **$0.00008** — $0.08 per 1,000 |
| App summary (one per app and country) | $0.001 |
| Filtered out, unknown app, bad input | **$0** |

- 1,000 reviews of one app in one country: **$0.081**.
- 10 apps × 3 countries × 500 reviews: **$1.23**.
- No start fee, no proxy charge.

The most-used App Store reviews Actor charges $0.10 per 1,000 reviews (checked on the Apify Store on 13 October 2026).

### How to use it in three steps

1. Put app ids, App Store URLs or app names into **📱 Apps**, one per line, and the storefronts into **🌍 Countries** (`us`, `gb`, `de`, `jp` …).
2. Choose which reviews to read (**Most recent**, **Most helpful** or **Both**), how many per app and country, and an optional star filter.
3. Press **Start**, then download JSON, CSV or Excel — or call the run from the API, n8n, Make, Zapier or an AI agent.

### ⬇️ Input

```json
{
  "apps": ["570060128", "https://apps.apple.com/us/app/headspace-meditation-sleep/id493145008", "Spotify"],
  "countries": ["us", "gb", "de"],
  "sortBy": "mostrecent",
  "maxReviewsPerApp": 500,
  "maxRating": 2,
  "includeAppInfo": true
}
```

### ⬆️ Output

```json
{
  "type": "review",
  "appId": "570060128",
  "appName": "Duolingo: Language Lessons",
  "country": "us",
  "reviewId": "14158523706",
  "rating": 5,
  "title": "Experience so far",
  "text": "So most importantly if you have a child who doesn't want to study or has disabilities, obviously it's not guaranteed to work but my kid does it and i haven't had to ask a single time…",
  "author": "DanteiXmyerZ",
  "authorUrl": "https://itunes.apple.com/us/reviews/id411871815",
  "authorId": "411871815",
  "appVersion": "7.125.1",
  "helpfulVotes": 0,
  "totalVotes": 0,
  "date": "2026-06-08T14:19:22.000Z",
  "sortedBy": "mosthelpful",
  "reviewsUrl": "https://apps.apple.com/us/app/id570060128?see-all=reviews"
}
```

### How many reviews can I get?

Apple publishes reviews per country, and serves two lists for each app: **most recent** and **most helpful**, up to **500 reviews each**.

- **Most recent** or **Most helpful** — up to 500 reviews per app and country.
- **Both** — reads the two lists and removes duplicates: up to **1,000 unique reviews** per app and country (1,000 of 1,000 for Spotify in the UK, checked on 13 October 2026).
- **Adding countries multiplies the result**, because every storefront has its own reviews — 10 countries can give you up to 10,000 reviews of one app.
- Older reviews beyond these lists are not published by Apple without a developer account.

Between 5 and roughly 12 October 2026 Apple's review feed answered with no reviews at all. During that time the Actor read them from the App Store page instead (10 per country, without app version and votes). The feed is back; the page is still used automatically if it goes quiet again, so a run never comes back empty while Apple shows reviews.

Apple's cache sometimes serves a single page of the feed empty while the pages after it are full (Spotify US, page 8, 15 October 2026). The Actor asks for such a page again under another spelling of the same address, so it does not stop early at 350 of 500 reviews.

### Tips

- **App names** are matched to the App Store search result whose name contains every word you typed; if nothing matches, you get a free error row. The same app given twice (id, URL and name) is read and billed once. An App Store URL or id is always exact.
- **Release monitoring:** schedule a daily run with **Most recent** and 100 reviews, and compare `ratingCurrentVersion` in the summary row.

### Integrations and API

Run it from the [Apify API](https://docs.apify.com/api/v2), the JavaScript and Python clients, a schedule, or a webhook, and push results to Google Sheets, Airtable, Slack, Jira or a database through **n8n**, **Make** or **Zapier**. The [Apify MCP server](https://mcp.apify.com) exposes it to Claude, ChatGPT and other agents as a tool: "summarise the 1- and 2-star App Store reviews of Headspace from the last month".

### FAQ

**Is it legal to scrape App Store reviews?** The Actor reads Apple's public review feed; reviewers appear under the nicknames they chose. You are responsible for how you use the data and for complying with Apple's terms and privacy laws such as GDPR.

**Do I need an Apple account or API key?** No.

**Does it work for Mac and iPad apps?** Yes — any app with an App Store id.

**What if my star filter matches nothing?** You get one free notice row that says how many reviews Apple served and that none had the stars you asked for. Minimum stars above maximum stars returns a free error row before any request is made.

### You might also like

- [App Store Scraper](https://apify.com/lergassy/app-store-scraper) — App Store apps from search, charts and developers: rating, price, version, size, languages.
- [Google Play Scraper](https://apify.com/lergassy/google-play-scraper) — the same for Android apps.
- [Software Reviews Scraper](https://apify.com/lergassy/software-reviews-scraper) — G2, Capterra and TrustRadius reviews of B2B software.
- [Trustpilot Reviews API](https://apify.com/lergassy/trustpilot-reviews-api) — company reviews from Trustpilot.
- [Pinterest Search Scraper](https://apify.com/lergassy/pinterest-search-scraper) — pins, boards and people for any keyword.

# Actor input Schema

## `apps` (type: `array`):

App Store ids, App Store URLs or app names, one per line — <b>570060128</b>, <b>https://apps.apple.com/us/app/duolingo/id570060128</b>, <b>Headspace</b>. A name is matched to the top App Store search result.

## `countries` (type: `array`):

Two-letter App Store country codes — <b>us</b>, <b>gb</b>, <b>de</b>, <b>jp</b>. Each country has its own reviews.

## `sortBy` (type: `string`):

Apple serves up to 500 reviews per country for each order. 'Both' reads the two lists and removes duplicates.

## `maxReviewsPerApp` (type: `integer`):

Apple serves up to 500 reviews per order and country; 'Both' reads the two lists and removes duplicates — up to 1,000 per country (checked 13.10.2026).

## `minRating` (type: `integer`):

Keep only reviews with at least this many stars. Leave empty for all.

## `maxRating` (type: `integer`):

Keep only reviews with at most this many stars — set 2 to collect complaints only.

## `includeAppInfo` (type: `boolean`):

One row per app and country with the overall rating, number of ratings, current version rating, price, developer and category.

## `proxyConfiguration` (type: `object`):

Off by default — Apple's feeds answer a direct request.

## Actor input object example

```json
{
  "apps": [
    "570060128"
  ],
  "countries": [
    "us"
  ],
  "sortBy": "mostrecent",
  "maxReviewsPerApp": 100,
  "includeAppInfo": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

One row per review, plus an app summary row per app and country.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "apps": [
        "570060128"
    ],
    "countries": [
        "us"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/app-store-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "apps": ["570060128"],
    "countries": ["us"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("lergassy/app-store-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "apps": [
    "570060128"
  ],
  "countries": [
    "us"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call lergassy/app-store-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/app-store-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/27xCoW2a1e1ErtiBd/builds/ue5GrEqJrcKbhCmVn/openapi.json
