# App Store Scraper & API - App Data, Ratings & Reviews (`surefeed/app-store-scraper`) Actor

Scrape the Apple App Store: rating, ratings count, 1-5 star histogram, chart position, version, price and developer, plus reviews with stars, title, text, date and version. Top charts, any or all countries. Privacy-safe, verified.

- **URL**: https://apify.com/surefeed/app-store-scraper.md
- **Developed by:** [gianluca de dominicis](https://apify.com/surefeed) (community)
- **Categories:** Agents, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.10 / 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 Scraper & API - App Data, Ratings & Reviews

Get **Apple App Store app data and reviews** for any app and country: rating, number of ratings, 1–5 star histogram, chart position, version and release notes, price, developer, age rating, size — and reviews with stars, title, text, date and app version, as a spreadsheet, JSON or a live API.

> ⭐ **Found this Actor useful?** [Leave a review](https://apify.com/surefeed/app-store-scraper/reviews) — it takes 30 seconds and helps other people find it.
>
> 🛠️ **Something not working?** [Open an issue](https://apify.com/surefeed/app-store-scraper/issues) with the run link and we'll fix it within 24–48 hours.

**What you get**

- ⭐ **App data**: rating and number of ratings (also for the current version), **1–5 star histogram**, **chart position** (e.g. #1 in Music), version and release notes, price, developer, category, age rating, size, languages, icon and screenshots
- 💬 **Reviews**: stars, title, full text, date, **app version**, helpful votes — most recent or most helpful
- 🌍 **Several countries — or all of them — in one run**: ratings, charts and reviews are per country, so you can compare markets and go beyond Apple's 500-reviews-per-country limit
- 🏆 **Top charts**: the top free, paid or grossing apps of any country and category (up to 200), with their rank, data and reviews
- 🎯 **Only the reviews you need**: filter by stars and by date; find apps by name if you don't know their id
- 🔒 **Privacy-safe by default**: no reviewer nicknames unless you ask for them

**Quick start:** click **Start** without changing anything to get Instagram's app data and its 100 most recent US reviews (about $0.02). Then add your own apps by id, link or name. No Apple account needed — you pay only per result.

Real results — Spotify, App Store Italy (October 2026), as shown on the store page:

| Rating | Ratings | Age rating | Chart | Size | Most helpful review |
|---|---|---|---|---|---|
| 4.7 | 2,975,781 | 13+ | #1 in Musica | 308.1 MB | ★5 "App del secolo" (2018-03-09) |

#### Why this App Store scraper?

| Typical scrapers | This Actor |
|---|---|
| Data copied from Apple's API as is | **Verified against the store page**: rating, number of ratings, price, developer and the most helpful reviews matched. Where Apple's API is out of date (it still says "12+" where the store shows Apple's new "13+" age rating) we use what the store shows |
| Average rating only | **1–5 star histogram** and **chart position** from the store page |
| One country per run | **Several countries, or `all` (150+)**, in one run, each with its own ratings and reviews |
| You need the app ids | Ids, links, **name search** or **top charts** (free, paid, grossing, by category — checked: US top 10 identical to the App Store charts page) |
| Reviewer nicknames in every row | **No personal data by default** |
| Re-download all reviews every day | **Reviews since** a date: daily runs return only new reviews and stop early |

#### Use cases

- **AI agents**: "what are users saying about the latest version of this app in Germany?" — reviews with version, date and country.
- **App teams**: monitor new 1–2★ reviews every day in every market you sell in.
- **Competitor research**: compare ratings, star histograms, chart positions and update frequency across apps and countries.
- **Market watch**: track the top 100 grossing games in 10 countries every week.
- **ASO and market research**: collect reviews by country for sentiment and keyword analysis.

#### How to use

1. Enter **Apps** (one per line) by id (`389801252`) or App Store link — and/or names in **Or search apps by name**, and/or **Or top charts** (with a **Chart category**).
2. Choose **Countries** (us, gb, it, de… or `all`).
3. Set **Max reviews per app and country** (0 = only app data), the **Review order**, and optionally **Only these star ratings** and **Reviews since**.
4. Click **Start** and download the results as JSON, CSV, Excel or via API.

#### Input

```json
{
    "apps": ["https://apps.apple.com/it/app/spotify-musica-e-podcast/id324684580"],
    "searchTerms": ["duolingo"],
    "resultsPerSearch": 1,
    "charts": ["top-grossing"],
    "chartCategory": "Games",
    "chartLimit": 10,
    "countries": ["it", "us"],
    "maxReviews": 500,
    "sortReviews": "mostrecent",
    "starRatings": [1, 2]
}
```

#### Output

One item per app and country, and one per review (real examples, shortened):

```json
{
    "type": "app",
    "appId": "324684580",
    "title": "Spotify: musica e podcast",
    "developer": "Spotify",
    "rating": 4.68942,
    "ratingCount": 2975781,
    "ratingHistogram": { "1": 74160, "2": 33522, "3": 101058, "4": 324886, "5": 2442155 },
    "contentRating": "13+",
    "chartPosition": 1,
    "chartCategory": "Musica",
    "sizeMB": 308.1,
    "version": "9.1.90",
    "free": true,
    "country": "it",
    "url": "https://apps.apple.com/it/app/spotify-musica-e-podcast/id324684580"
}
```

```json
{
    "type": "review",
    "appId": "389801252",
    "appTitle": "Instagram",
    "reviewId": "14637030892",
    "rating": 1,
    "title": "Too much information",
    "text": "Now you have my dob pictures and all sorts of info why do I have to email you my id to get my account back…",
    "date": "2026-10-07T05:51:34.000Z",
    "appVersion": "450.1.0",
    "helpfulVotes": 0,
    "totalVotes": 0,
    "country": "us"
}
```

| Field | Meaning |
|---|---|
| `type` | `app` or `review` |
| `rating` | App: average rating in that country. Review: the reviewer's stars (1–5) |
| `ratingHistogram` | Number of ratings with 1–5 stars in that country (from the store page) |
| `ratingCurrentVersion` / `ratingCountCurrentVersion` | Rating of the current version only |
| `chartPosition` / `chartCategory` | Position shown on the app page (e.g. #1 in Music), when the app is ranked |
| `topChart` | Only for apps from **Or top charts**: `{ chart, category, rank }` |
| `contentRating` | Age rating as shown on the store (Apple's current scale: 4+, 9+, 13+, 16+, 18+) |
| `helpfulVotes` / `totalVotes` | "Helpful" votes and all votes on the review |

#### How much does it cost?

**Pay per event** — no monthly rental, no start fee, no proxy or compute surcharge:

- **Review** — each review returned: **$0.15 per 1,000**.
- **App** — each app's data in one country: **$1.50 per 1,000**.

Example: 500 reviews of 4 apps in 2 countries ≈ $0.09. Set **Max cost per run** for a hard cap on spending.

#### Automate & integrate

Schedule a daily run with **Reviews since** = yesterday to get only new reviews, trigger webhooks, or send results to Google Sheets, Slack, Make, Zapier or n8n. Call it from any language through the Apify API.

#### Use with AI assistants (MCP)

Add this Actor as a tool to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server (`https://mcp.apify.com`). Your assistant can then read and summarise App Store reviews on demand.

#### Agent-ready: autonomous payments (x402 & Skyfire)

AI agents can discover, run and pay for this Actor on their own — no Apify account or API key needed — using x402 (USDC on Base) or Skyfire.

#### FAQ

**How many reviews can I get?**
Apple publishes the latest 500 reviews per app, country and order (most recent or most helpful) — every App Store tool has this limit. To get more, add countries or use `all`: each country has its own reviews.

**How accurate are the top charts?**
We compared the US top free chart with the App Store charts page in a browser (October 2026): the first 10 apps were the same, in the same order.

**How accurate is the data?**
We compared Spotify on the Italian App Store with the store page in a browser (October 2026): rating, number of ratings, price, developer, age rating, chart position, size and the two most helpful reviews (stars, title, date, text) were identical.

**Why does the age rating differ from other tools?**
Apple moved to a new age-rating scale (4+, 9+, 13+, 16+, 18+), but its public API still returns the old one (e.g. 12+). We take the rating shown on the store page.

**Can I get reviewer nicknames?**
Turn on **Include reviewer nicknames** only if you have a lawful reason to process them (GDPR and similar laws).

**Is it legal to scrape the App Store?**
This Actor only collects publicly available data, mostly through Apple's own public feeds. Check Apple's terms and your local laws before using the data.

**Something is broken — what now?**
Open an issue on the **Issues** tab with the run link. We usually fix problems within 24–48 hours.

#### More tools from us

- [Kleinanzeigen Scraper & API](https://apify.com/surefeed/kleinanzeigen-scraper) — every listing for any search on Kleinanzeigen.de, past the 1,250 limit, with price drops and only-new monitoring.
- [Google Hotels Scraper & API](https://apify.com/surefeed/google-hotels-scraper) — hotel prices with taxes, every booking site's offer, and hotels near any address.
- [Google Flights Scraper & API](https://apify.com/surefeed/google-flights-scraper) — fares, stops, layovers and CO2 emissions for any route, flexible dates.
- [Google Trends Scraper & API](https://apify.com/surefeed/google-trends-scraper) — interest over time, by region, related queries and trending searches.
- [Google Play Scraper & API](https://apify.com/surefeed/google-play-scraper) — Android app data, star histograms and reviews.
- [Workday Jobs Scraper & API](https://apify.com/surefeed/workday-jobs-scraper) — every job from any Workday careers site, with exact posting date, salary range and remote status.
- [Eventbrite Scraper & API](https://apify.com/surefeed/eventbrite-scraper) — every event in any city or online, with ticket prices, sold out and organizer details.

#### Legal

**Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Apple Inc. It only collects publicly available data. All trademarks belong to their respective owners.

# Actor input Schema

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

One app per line: its numeric id (389801252) or its App Store link (https://apps.apple.com/us/app/instagram/id389801252).

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

Optional: app names or keywords; the first results of each search are added (see "Results per search").

## `resultsPerSearch` (type: `integer`):

How many apps to take from each name search.

## `charts` (type: `array`):

Optional: add the apps of Apple's top charts in each country (rank included in topChart).

## `chartCategory` (type: `string`):

Optional: a category for the top charts (empty = all apps).

## `chartLimit` (type: `integer`):

How many top apps to take from each chart (up to 200).

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

One result per app and country: rating, number of ratings, 1–5 star histogram, version and release notes, price, developer, category, age rating, size, languages, icon and screenshots.

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

How many reviews to get (0 = none). Apple publishes up to 500 reviews per country and order; add countries to get more.

## `sortReviews` (type: `string`):

Most recent or most helpful first.

## `starRatings` (type: `array`):

Optional: keep only reviews with these ratings, e.g. \[1, 2] for complaints. Empty = all.

## `reviewsSince` (type: `string`):

Optional date (YYYY-MM-DD): skip older reviews. With "Most recent" the run stops as soon as it reaches older ones — ideal for daily monitoring.

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

App Store countries (two-letter codes: us, gb, it, de…), or "all" for every country. Ratings, charts and reviews are per country; each country is a separate result. Apple publishes up to 500 reviews per app and country, so more countries = more reviews.

## `includeReviewerNames` (type: `boolean`):

Off by default: nicknames can identify people. Turn on only if you have a lawful reason to process them (GDPR and similar laws).

## Actor input object example

```json
{
  "apps": [
    "389801252"
  ],
  "resultsPerSearch": 5,
  "charts": [],
  "chartCategory": "",
  "chartLimit": 25,
  "includeAppDetails": true,
  "maxReviews": 100,
  "sortReviews": "mostrecent",
  "starRatings": [],
  "countries": [
    "us"
  ],
  "includeReviewerNames": false
}
```

# Actor output Schema

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

Items produced by the run.

## `runSummary` (type: `string`):

Duration, charged events and whether the spending limit was reached.

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

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

# Run the Actor and wait for it to finish
run = client.actor("surefeed/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": [
    "389801252"
  ]
}' |
apify call surefeed/app-store-scraper --silent --output-dataset

```

## MCP server setup

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