# App Store Reviews Scraper — iOS Customer Reviews (`darknezz/app-store-reviews-scraper`) Actor

Scrape customer reviews for any iOS app from the Apple App Store. Multiple apps, 175+ country storefronts, sorted by most recent or most helpful. Clean JSON with rating, text, version and helpfulness votes — perfect for ASO, competitor research and sentiment analysis.

- **URL**: https://apify.com/darknezz/app-store-reviews-scraper.md
- **Developed by:** [Oaida Adrian](https://apify.com/darknezz) (community)
- **Categories:** Marketing, E-commerce, AI
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 review scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## App Store Reviews Scraper — iOS Customer Reviews

Scrape customer reviews for **any iOS app** from the Apple App Store — across 175+ country storefronts, sorted by most recent or most helpful. No login, no API key, no proxies. Pass app IDs or App Store URLs and get one clean JSON item per review, ready for dashboards, sentiment models and ASO analysis.

Built for product, ASO and research teams who need structured, labeled review data (rating + text) at scale, without wrestling with Apple's undocumented feeds.

### Why this Actor

- **Zero configuration** — no Apple ID, no credentials, no proxy budget. Paste app IDs, press run.
- **175+ storefronts** — scrape the same app across `us`, `gb`, `de`, `ro` and any other country code to compare markets in one run.
- **Labeled, LLM-ready output** — every item pairs a 1–5 star rating with the full review text, so it drops straight into sentiment training sets and analytics.
- **Resilient by design** — an app with no reviews in a given storefront is logged and skipped, never crashing the batch. Scraping 20 apps × 5 countries returns every review it can reach.

### How it works

Give it a list of numeric app IDs (e.g. `310633997`) or full App Store URLs. For each app and each requested country the Actor reads Apple's public, unauthenticated review feed — the same one that powers RSS readers — and outputs **one dataset item per review** with the rating, title, body, author, app version and helpfulness votes. Set `maxReviewsPerApp` to cap volume and `sortBy` to choose most-recent or most-helpful ordering.

### Input

```json
{
  "apps": ["310633997", "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"],
  "countries": ["us", "gb", "de"],
  "sortBy": "mostRecent",
  "maxReviewsPerApp": 100
}
```

| Field | Type | Description |
|---|---|---|
| `apps` | array | Numeric App Store IDs or full app URLs (**required**) |
| `countries` | array | Storefront country codes (`us`, `gb`, `de`, `ro`, …); default `["us"]` |
| `sortBy` | string | `mostRecent` or `mostHelpful` |
| `maxReviewsPerApp` | integer | Max reviews per app per country (Apple caps the feed at ~500) |

Both numeric app IDs and full App Store URLs work — mix and match freely.

### Output (one item per review)

```json
{
  "appId": "310633997",
  "appName": "WhatsApp Messenger",
  "developer": "WhatsApp Inc.",
  "country": "us",
  "rating": 1,
  "title": "Latest update broke notifications",
  "content": "Since the last update I don't get any notifications...",
  "appVersion": "24.11.79",
  "author": "jsmith_42",
  "updatedAt": "2026-07-01T09:12:44-07:00",
  "voteCount": 12
}
```

### Use cases

- 📈 **ASO & product** — track how each release lands, catch bug-report spikes and notification/crash complaints early.
- 🔎 **Competitor research** — mine competitors' 1-star reviews for feature gaps and churn drivers.
- 🤖 **Sentiment analysis / AI** — clean labeled text (rating + review) for training models and building topic dashboards.
- 🌍 **Market comparison** — diff sentiment across storefronts to spot region-specific issues before they escalate.
- 🛠️ **Agencies** — automated review monitoring and weekly digests for every client app.

### Run it from the API

Trigger the Actor and get results in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/darknezz~app-store-reviews-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apps":["310633997"],"countries":["us","gb"],"maxReviewsPerApp":50}'
```

**Scheduling:** attach an Apify Schedule (e.g. daily) to keep a dataset of the latest reviews continuously refreshed for your monitoring dashboard or alerting pipeline.

### Pricing

Pay per event: a small fee **per review scraped**, plus Apify's standard platform events (actor start + dataset item). No subscription — scrape 50 reviews or 50,000 and pay only for what you run.

### FAQ

**How many reviews can I get per app?** Apple's public feed serves up to ~500 most-recent reviews per app per country. Scraping multiple countries multiplies coverage.

**Do I need an Apple developer account or API key?** No. The data comes from Apple's own public, unauthenticated review feed — nothing to configure.

**Can I scrape reviews in other languages?** Yes — each storefront returns reviews in that market's language. Add the country codes you care about to `countries`.

**Is this against Apple's ToS?** The feed is the same public RSS source Apple exposes for anyone to read. You are responsible for how you use the data (e.g. GDPR/CCPA when processing reviewer names).

**What if an app has no reviews in a country?** That app/country pair is logged and skipped; every other combination in the run still returns normally.

**Do I need a proxy?** No. The Actor reads Apple's feed directly over HTTPS — no proxy or residential IP budget required.

# Actor input Schema

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

App Store app IDs (e.g. 310633997) or full App Store URLs.

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

Storefront country codes (e.g. us, gb, de, ro).

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

Review sort order.

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

Maximum reviews to scrape per app per country (Apple caps the feed at ~500).

## Actor input object example

```json
{
  "apps": [
    "310633997"
  ],
  "countries": [
    "us"
  ],
  "sortBy": "mostRecent",
  "maxReviewsPerApp": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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": [
        "310633997"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("darknezz/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": ["310633997"] }

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "310633997"
  ]
}' |
apify call darknezz/app-store-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=darknezz/app-store-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3ieR5X48Yd3dhfuQs/builds/dSgH3jGHgWJzoTG4F/openapi.json
