# App Store Scraper – Reviews, App Details, Search & Top Charts (`pardoning_vacation/app-store-scraper`) Actor

Scrape Apple App Store reviews from any country, full app details (ratings, version, size, developer), keyword search rankings and top free / paid / grossing charts by category. Fast, no login, no API key.

- **URL**: https://apify.com/pardoning_vacation/app-store-scraper.md
- **Developed by:** [Павел Тищенко](https://apify.com/pardoning_vacation) (community)
- **Categories:** Marketing, Developer tools, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/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

### What does App Store Scraper do?

**App Store Scraper** collects data from Apple's App Store in four modes:

1. **Reviews** — reviews of any iPhone/iPad app with star rating, title, text, date, app version and helpfulness votes, **from as many countries as you want**. Filter by star rating.
2. **App details** — the full app record: average rating and **number of ratings** (overall and for the current version), price, category, content rating, release and update dates, version and release notes, description, size, minimum iOS, languages, screenshots, developer and website.
3. **Search** — the apps the App Store returns for any keyword, **in ranking order** — for ASO keyword tracking.
4. **Top charts** — Top free, Top paid and **Top grossing**, overall or for any category (Games, Finance, Health & Fitness, …), in any country.

No Apple account, no API key, no browser — fast and lightweight.

### Why use it?

- **Product & UX research**: find bugs, complaints and feature requests in your or your competitors' reviews.
- **Sentiment analysis & AI**: send review text to LLMs to cluster themes and track satisfaction release by release.
- **ASO**: track keyword rankings, competitors' titles, descriptions and release cadence.
- **Market research**: compare apps by number of ratings, follow top-grossing charts by country and category.
- **Localization insight**: compare how the same app is rated in different countries.

### How to use it

1. Choose **What to scrape**.
2. Reviews / App details: paste App Store URLs or numeric IDs (e.g. `310633997`).
   Search: enter keywords. Top charts: pick the chart and category.
3. Add one or more **Countries** (`us`, `gb`, `de`, `fr`, `jp`, …).
4. Click **Start** and export JSON, CSV or Excel, or use the API.

#### Input example — reviews from three countries

```json
{
  "mode": "reviews",
  "apps": ["https://apps.apple.com/us/app/whatsapp-messenger/id310633997"],
  "countries": ["us", "gb", "ca"],
  "maxReviewsPerApp": 1500,
  "reviewSort": "mostrecent",
  "reviewRating": 0
}
```

#### Review output

```json
{
  "type": "review",
  "appId": "310633997",
  "reviewId": "14597356001",
  "userName": "I am ok46",
  "date": "2026-09-26T16:01:11-07:00",
  "score": 2,
  "title": "WhatsApp fix your app.",
  "text": "I keep getting my account reviewed every single day and I barely use WhatsApp",
  "appVersion": "26.37.76",
  "voteSum": 0,
  "voteCount": 0,
  "country": "us"
}
```

#### App output (abridged)

```json
{
  "type": "app",
  "appId": "310633997",
  "title": "WhatsApp Messenger",
  "developer": "WhatsApp Inc.",
  "score": 4.68,
  "ratings": 18741518,
  "price": 0,
  "genre": "Social Networking",
  "version": "26.37.76",
  "country": "us",
  "url": "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
}
```

### How much does it cost?

**Pay-per-event pricing** — a small fixed price per review and per app record delivered (see the Pricing tab). Errors are free and platform usage is included.

### Limitations

- Apple serves up to **500 most recent (or most helpful) reviews per app per country**. To get more, add more countries — reviews are de-duplicated.
- Top charts return up to 200 apps per chart and country.

### FAQ

**Is it legal?** The Actor reads only public App Store data that Apple publishes for anyone. Use it responsibly and in line with applicable laws.

**Need Google Play too?** See our Google Play Scraper in the Store.

# Actor input Schema

## `mode` (type: `string`):

Choose the data you need.

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

App Store URLs or numeric app IDs, e.g. https://apps.apple.com/us/app/whatsapp-messenger/id310633997 or 310633997.

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

Two-letter App Store country codes, e.g. us, gb, de, fr, jp. Reviews are collected from every listed country (Apple serves up to 500 recent reviews per country), so adding countries gives more reviews.

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

Reviews mode only. Total across all countries.

## `reviewSort` (type: `string`):

Order in which reviews are collected.

## `reviewRating` (type: `integer`):

1–5 keeps only reviews with that many stars. 0 = all ratings.

## `searchTerms` (type: `array`):

Each keyword returns matching apps in App Store ranking order — useful for ASO.

## `maxSearchResults` (type: `integer`):

How many apps to take per keyword.

## `chart` (type: `string`):

Which App Store chart to collect.

## `genre` (type: `string`):

App Store category of the chart.

## `maxChartResults` (type: `integer`):

How many apps to take from the chart.

## `includeAppDetails` (type: `boolean`):

Add the complete app record (ratings count, version, description, size, languages...) to chart results.

## Actor input object example

```json
{
  "mode": "reviews",
  "apps": [
    "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
  ],
  "countries": [
    "us"
  ],
  "maxReviewsPerApp": 500,
  "reviewSort": "mostrecent",
  "reviewRating": 0,
  "maxSearchResults": 50,
  "chart": "topfree",
  "genre": "all",
  "maxChartResults": 100,
  "includeAppDetails": true
}
```

# Actor output Schema

## `overview` (type: `string`):

Main results table.

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

Every field of every result item.

# 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": [
        "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
    ],
    "countries": [
        "us"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pardoning_vacation/app-store-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": ["https://apps.apple.com/us/app/whatsapp-messenger/id310633997"],
    "countries": ["us"],
}

# Run the Actor and wait for it to finish
run = client.actor("pardoning_vacation/app-store-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": [
    "https://apps.apple.com/us/app/whatsapp-messenger/id310633997"
  ],
  "countries": [
    "us"
  ]
}' |
apify call pardoning_vacation/app-store-scraper --silent --output-dataset

```

## MCP server setup

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