# Apple App Store Reviews Scraper (`seemuapps/apple-app-store-reviews-scraper`) Actor

Extract user reviews and ratings for any iOS app from the Apple App Store. Get rating, title, content, version, and author for up to the most recent 500 reviews per country.

- **URL**: https://apify.com/seemuapps/apple-app-store-reviews-scraper.md
- **Developed by:** [Andrew](https://apify.com/seemuapps) (community)
- **Categories:** Social media, Agents, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Apple App Store Reviews Scraper

Extract user reviews and ratings for any iOS app from the Apple App Store. Get rating, title, full review text, app version, author, and helpful-vote counts for the most recent 500 reviews per country — no developer account or login required.

### What you get

- One dataset record per review with: rating (1–5), title, content, app version, author name, author profile URL, vote counts, and review timestamp
- Sort by **Most Recent** (newest reviews first) or **Most Helpful** (highest-voted reviews first)
- Multi-country support — pull reviews from 29+ App Store regions, including US, UK, Japan, Germany, Brazil, India, and more
- Up to 500 reviews per app per country in a single run
- Export to JSON, CSV, or Google Sheets directly from the Apify console

### Use cases

- **Product feedback monitoring** — surface complaints, feature requests, and bug reports from real users
- **Competitive intelligence** — track sentiment and version-to-version changes across competitor apps
- **App Store Optimization (ASO)** — analyze keywords and themes mentioned in positive vs negative reviews
- **Customer support triage** — feed reviews into a ticketing system or LLM for tagging and prioritization
- **Localization research** — compare review themes across countries to inform regional product decisions
- **Investor / market research** — gauge user sentiment and adoption of public-company apps over time

### How to use

1. Find your app's ID — it's the number in any App Store URL. For `apps.apple.com/us/app/instagram/id389801252`, the ID is `389801252`
2. Paste it into **App ID**
3. Choose the **Country** storefront (reviews are localized — pull each country separately)
4. Choose **Sort By** — Most Recent for monitoring, Most Helpful for top sentiment
5. Set **Max Reviews** (0 fetches all available, capped at 500)
6. Click **Run** — reviews appear in the **Dataset** tab when complete

### Output format

Each dataset record:

```json
{
  "reviewId": "14044087091",
  "appId": "389801252",
  "country": "us",
  "rating": 1,
  "title": "They removed quizzes",
  "content": "No reason to use the app anymore",
  "version": "428.2.0",
  "author": "nickname.nbbfijxnd",
  "authorUrl": "https://itunes.apple.com/us/reviews/id955840349",
  "voteCount": 0,
  "voteSum": 0,
  "updatedAt": "2026-05-08T22:59:32-07:00",
  "sortBy": "mostrecent"
}
````

### Input options

| Field | Type | Description |
|-------|------|-------------|
| App ID | Text | Apple App Store numeric ID (find it in any App Store URL) |
| Country | Select | Two-letter ISO storefront code — `us`, `gb`, `de`, `jp`, etc. |
| Sort By | Select | `mostrecent` (default) or `mosthelpful` |
| Max Reviews | Integer | Cap on reviews to return; 0 = all available, max 500 |

### Limits

- Apple's customer-reviews feed is capped at **500 reviews per app per country** (10 pages × 50 reviews). Older reviews beyond that are not accessible.
- Reviews are localized per region — to monitor multiple markets, run the actor once per country.
- Review content reflects what's currently shown on the App Store, including any reviews that may have been hidden, edited, or removed since posting.

# Actor input Schema

## `appId` (type: `string`):

Either the numeric App Store ID (e.g. '389801252') or the full App Store URL (e.g. 'https://apps.apple.com/us/app/instagram/id389801252'). The ID will be extracted automatically.

## `country` (type: `string`):

Two-letter ISO country code for the App Store storefront. Reviews are localized per region — pull each country separately.

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

Most Recent returns the newest reviews first. Most Helpful returns reviews with the most votes.

## `maxReviews` (type: `integer`):

Maximum reviews to return. Apple's RSS feed caps at 500 reviews per app per country. Set 0 to fetch all available (up to 500).

## Actor input object example

```json
{
  "appId": "https://apps.apple.com/us/app/instagram/id389801252",
  "country": "us",
  "sortBy": "mostrecent",
  "maxReviews": 100
}
```

# Actor output Schema

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

One review per record: reviewId, appId, country, rating, title, content, version, author, authorUrl, voteCount, voteSum, updatedAt, sortBy.

# 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 = {
    "appId": "https://apps.apple.com/us/app/instagram/id389801252"
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/apple-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 = { "appId": "https://apps.apple.com/us/app/instagram/id389801252" }

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/apple-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 '{
  "appId": "https://apps.apple.com/us/app/instagram/id389801252"
}' |
apify call seemuapps/apple-app-store-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Apple App Store Reviews Scraper",
        "description": "Extract user reviews and ratings for any iOS app from the Apple App Store. Get rating, title, content, version, and author for up to the most recent 500 reviews per country.",
        "version": "1.0",
        "x-build-id": "itE5ELd8fMUqjMB9t"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/seemuapps~apple-app-store-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-seemuapps-apple-app-store-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/seemuapps~apple-app-store-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-seemuapps-apple-app-store-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/seemuapps~apple-app-store-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-seemuapps-apple-app-store-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "appId"
                ],
                "properties": {
                    "appId": {
                        "title": "App ID or App Store URL",
                        "type": "string",
                        "description": "Either the numeric App Store ID (e.g. '389801252') or the full App Store URL (e.g. 'https://apps.apple.com/us/app/instagram/id389801252'). The ID will be extracted automatically."
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "us",
                            "gb",
                            "ca",
                            "au",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "nl",
                            "se",
                            "no",
                            "dk",
                            "fi",
                            "ie",
                            "jp",
                            "kr",
                            "cn",
                            "tw",
                            "hk",
                            "sg",
                            "in",
                            "br",
                            "mx",
                            "ar",
                            "ru",
                            "tr",
                            "ae",
                            "sa",
                            "za"
                        ],
                        "type": "string",
                        "description": "Two-letter ISO country code for the App Store storefront. Reviews are localized per region — pull each country separately.",
                        "default": "us"
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "mostrecent",
                            "mosthelpful"
                        ],
                        "type": "string",
                        "description": "Most Recent returns the newest reviews first. Most Helpful returns reviews with the most votes.",
                        "default": "mostrecent"
                    },
                    "maxReviews": {
                        "title": "Max Reviews",
                        "minimum": 0,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum reviews to return. Apple's RSS feed caps at 500 reviews per app per country. Set 0 to fetch all available (up to 500).",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
