# Apple App Store Review Scraper (`mrdoe/apple-app-store-review-scraper`) Actor

Returns reviews for any Apple App Store app, with ratings, full text, dates and helpful votes. No login needed.

- **URL**: https://apify.com/mrdoe/apple-app-store-review-scraper.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.10 / 1,000 review returneds

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

![Apple App Store Review Scraper — get any iOS app's reviews with ratings, full text, dates and helpful votes](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/apple-app-store-review-scraper--hero.png)

### What does Apple App Store Review Scraper do?

Apple App Store Review Scraper returns reviews for any iOS app on Apple's App Store as clean
structured data. For each review you get the star rating, title, full review text, the date
it was posted, the reviewer's name, how many people found it helpful, and the app version
they had installed. No login, no Apple account needed.

### Why use Apple App Store Review Scraper?

- **No account needed** - works fully logged out, every run.
- **Full detail, not a summary** - complete review title and text, exact dates and
  helpful-vote counts, not just a star average.
- **Any app** - just give it the numeric App ID from the app's own App Store URL.
- **Two ways to sort** - most recent, or most helpful.
- **Any country storefront** - read reviews from any App Store country/locale.

### What makes this different

Most review lookups only show you the handful of reviews visible on an app's main App Store
page. This Actor pages all the way through an app's reviews automatically, so you can pull
hundreds of real reviews in one run instead of scrolling and copy-pasting by hand.

### Who uses Apple App Store Review Scraper?

- **App developers and product teams** - monitor what users are saying about your own iOS
  app, including recent complaints and praise, without opening the App Store every day.
- **Competitive analysts** - see exactly what users like and dislike about a competitor's
  app, straight from their own words.
- **Market researchers** - gauge real user sentiment and common complaints for any app or
  category before making a decision.
- **Cross-platform teams** - pair this with a Google Play review scraper to compare iOS vs
  Android sentiment for the same app side by side.

### How it works

![How Apple App Store Review Scraper turns an app ID into review data](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/apple-app-store-review-scraper--how-it-works.png)

1. **Your input** - an app's numeric App ID, a sort order, and a country.
2. **The Actor collects it** - it reads Apple's own App Store review data for that app, works
   fully logged out, and pages through automatically up to your limit.
3. **Your output** - one structured record per review, ready for a spreadsheet, dashboard or
   report.

### What data can you extract?

| Field | Description |
|---|---|
| `authorName` / `authorProfileUrl` | The reviewer's display name and App Store profile link |
| `title` | The review's title |
| `reviewText` | The full review text |
| `rating` | Star rating, 1 to 5 |
| `reviewDate` | When the review was posted |
| `voteCount` / `voteSum` | How many people voted on whether this review was helpful |
| `appVersionAtReview` | The app version the reviewer had installed |
| `appId` / `country` / `sortedBy` | The app, country and sort order used for this run |
| `scrapedAt` | When this record was collected (ISO timestamp) |

### How to use Apple App Store Review Scraper

1. Open the Actor and go to the **Input** tab.
2. Enter an **App ID** - the number from the app's App Store URL (see the screenshot below).
3. Choose a **Sort by** order and, optionally, a **Country**.
4. Optionally set **Max results**.
5. Click **Start**.
6. Open the **Dataset** tab, or pull results via the API, once the run finishes.

![Apple App Store Review Scraper input form with app ID, sort order and country](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/apple-app-store-review-scraper--input.png)

### Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `appId` | String | Yes | `"284882215"` | The app's numeric App Store ID |
| `sortBy` | String | No | `"most_recent"` | `"most_recent"` or `"most_helpful"` |
| `country` | String | No | `"us"` | The App Store country storefront to read from |
| `maxItems` | Integer | No | `50` | Maximum number of reviews to return (Apple caps this feed at 500) |
| `proxyConfiguration` | Object | No | No proxy | Advanced - this works without a proxy for moderate volumes |

### Output Data

Each review produces one dataset record. Example:

```json
{
    "reviewId": "14692320526",
    "appId": "284882215",
    "country": "us",
    "sortedBy": "most_recent",
    "authorName": "pinteres is of little use",
    "authorProfileUrl": "https://itunes.apple.com/us/reviews/id627403682",
    "title": "Fb blows goats",
    "reviewText": "This platform sux.",
    "rating": 1,
    "appVersionAtReview": "584.0.0",
    "reviewDate": "2026-10-21T00:53:47-07:00",
    "voteCount": 0,
    "voteSum": 0,
    "scrapedAt": "2026-10-22T16:45:05.213Z"
}
```

![Sample dataset table from Apple App Store Review Scraper](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/apple-app-store-review-scraper--output.png)
![Every output field labelled on one example record](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/apple-app-store-review-scraper--fields.png)

### Usage Examples

- **Own-app monitoring** - run against your own app's ID on a schedule, sorted by
  `most_recent`, to catch new complaints or praise as they come in.
- **Competitor research** - run against a competitor's app ID to see what their users say.
- **Cross-platform comparison** - run this alongside a Play Store review scraper for the same
  app to compare iOS and Android sentiment.
- **Multi-market check** - run the same app with different `country` values to compare
  sentiment across storefronts.

### Tips for Best Results

- Find the numeric `appId` from the app's own App Store URL - it's the number after `id`.
- Apple's own feed caps at 500 reviews per country/sort combination - that's a platform
  limit, not something this Actor imposes.
- `most_helpful` surfaces the reviews with the most votes, which are often the most
  representative of common sentiment.

### Known Limitations

- Returns up to 500 reviews per country/sort combination - Apple's own App Store feed doesn't
  expose more than that for a given combination.
- Reflects a snapshot at the time of the run; new reviews are posted continuously.

### Integrations

Connect Apple App Store Review Scraper to the rest of your stack via the [Apify API](https://docs.apify.com/api/v2),
[webhooks](https://docs.apify.com/platform/integrations/webhooks), scheduled runs, or directly
to Google Sheets, Make, and Zapier through Apify's built-in integrations.

### Export Formats

Download results as **JSON, CSV, Excel, or XML** from the Dataset tab, or fetch them
programmatically via the Apify API.

### Frequently Asked Questions

#### Do I need an Apple account or to log in?

No. Every run works fully logged out.

#### Where do I find an app's App ID?

It's the number in the app's App Store URL - for example, `284882215` in
`https://apps.apple.com/us/app/facebook/id284882215`.

#### Can I get reviews from a specific country?

Yes - set `country` to the matching 2-letter code (e.g. `"gb"`, `"de"`, `"jp"`).

#### Can I schedule this to run automatically?

Yes, use Apify's built-in [Scheduler](https://docs.apify.com/platform/schedules) to re-check an
app's reviews on any interval you choose.

### Support

Found an issue or have a request? Open it on the Actor's **Issues** tab in the Apify Console.

### Legal / Responsible Use

You're responsible for using this Actor in compliance with applicable laws and the target
platform's terms of service. This Actor retrieves publicly viewable review information only;
it does not collect personal data beyond what reviewers themselves chose to make public.

# Actor input Schema

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

The app's numeric Apple ID, found in its App Store URL after "id" (e.g. "284882215" for https://apps.apple.com/us/app/facebook/id284882215).

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

Which order to return reviews in.

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

The App Store country storefront to read reviews from (2-letter code, e.g. "us", "gb", "de").

## `maxItems` (type: `integer`):

Maximum number of reviews to return (Apple's own feed caps at 500 per country/sort combination).

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

Advanced - this works without a proxy for moderate volumes.

## Actor input object example

```json
{
  "appId": "284882215",
  "sortBy": "most_recent",
  "country": "us",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "appId": "284882215",
    "sortBy": "most_recent",
    "country": "us",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/apple-app-store-review-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": "284882215",
    "sortBy": "most_recent",
    "country": "us",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/apple-app-store-review-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 '{
  "appId": "284882215",
  "sortBy": "most_recent",
  "country": "us",
  "maxItems": 50
}' |
apify call mrdoe/apple-app-store-review-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/apple-app-store-review-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/gTxHIQTz8c4Bqn1ec/builds/ZH5B1YkvTdu09ugj2/openapi.json
