# Apify App Store Reviews Scraper

> Scrape Apple App Store reviews into structured JSON with the Apify Apple App Store Reviews API Actor (johnvc/apple-app-store-reviews-api). Give it a numeric Apple product ID or just an app name and get one row per review with rating, review_title, review_text, author_name, reviewed_version, review_date_iso, and app context, across 52 country stores, sorted by most recent, most helpful, most favorable, or most critical. Use when the user wants an app store reviews scraper, wants to scrape App Store reviews or iOS app reviews, export Apple app reviews to JSON or CSV, build a review dataset for one or more apps, or pull the reviews behind a competitor's App Store listing. Pay-per-review billing, MCP-ready for Claude and other AI agents.

- Skill: `johnisanerd/apify-app-store-reviews-scraper` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add johnisanerd/apify-app-store-reviews-scraper`
- Raw SKILL.md: https://api.skillmd.com/api/skills/johnisanerd/apify-app-store-reviews-scraper/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- License: MIT
- Author: johnisanerd (https://skillmd.com/u/johnisanerd)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/johnisanerd/apify-app-store-reviews-scraper

---


# App Store Reviews Scraper: Apple Reviews to Structured JSON

Scrape Apple App Store reviews into clean JSON with the Apify Apple App Store Reviews API. Give it a numeric product ID or just an app name, pick a country store and a sort order, and get one flat row per review: rating, title, body text, author, reviewed version, and dates.

## When to use this skill

- The user wants to scrape App Store reviews (to JSON, CSV, a sheet, or a database).
- They want the reviews for a specific iOS or macOS app as a dataset.
- They want reviews from a specific country store, or the most critical or most helpful reviews first.
- They ask for an "app store reviews scraper", "apple reviews scraper", or "iOS review export".

Not for: App Store keyword rankings or app search results (use the Apple App Store Search Actor), app listing metadata such as price or screenshots (use the Apple App Store Product API Actor), or Google Play reviews (different store, different Actor).

## What you get (one row per review)

`review_id`, `review_title`, `review_text`, `rating` (integer 1 to 5), `review_date` (locale string) plus `review_date_iso`, `reviewed_version`, `author_name`, `author_id`, `product_id`, `app_platform` (ios or macos), `app_country`, `sort_order`, `page_number`, `position_on_page`, `position_global`, `total_page_count`, `reviews_for_current_version`, `fetch_timestamp`. When a review carries helpfulness votes and `parse_helpfulness` is on, `helpful_count` and `total_helpful_count` are added; most rows do not have them.

## Prerequisites

- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).
- Authentication via `apify login`, or an `APIFY_TOKEN` environment variable (Apify Console, Settings, Integrations).

## The Actor

- Store page: https://apify.com/johnvc/apple-app-store-reviews-api?fpr=9n7kx3&fp_sid=skillrepo
- Actor ID: `johnvc/apple-app-store-reviews-api`
- Pricing: pay per review returned, plus a small per-run setup fee (see `references/gotchas.md`).

## Run it with the Apify CLI

Scrape by app name (the Actor resolves the top App Store search match):

```bash
apify actors call "johnvc/apple-app-store-reviews-api" -i '{"app_name":"spotify","country":"us","sort":"mostrecent","max_reviews":100}' \
  --json \
  --user-agent apify-awesome-skills/apify-app-store-reviews-scraper \
  2>/dev/null
```

Scrape exact apps by product ID, most critical first, from the UK store:

```bash
apify actors call "johnvc/apple-app-store-reviews-api" -i '{"product_ids":["534220544","363590051"],"country":"gb","sort":"mostcritical","max_reviews":200}' \
  --json \
  --user-agent apify-awesome-skills/apify-app-store-reviews-scraper \
  2>/dev/null
```

Every call carries the three flags this repo expects: `--json`, `--user-agent apify-awesome-skills/apify-app-store-reviews-scraper`, and `2>/dev/null`.

## Run it from Claude or another AI agent (MCP)

The Actor is MCP-ready. Add the hosted server URL:

`https://mcp.apify.com/?tools=actors,docs,johnvc/apple-app-store-reviews-api`

Then ask, for example: "Scrape the 100 most recent App Store reviews for Duolingo in the US and export them as JSON." MCP setup docs: https://docs.apify.com/platform/integrations/mcp

## Workflow

1. Identify the app. Prefer `product_ids` (the number after `id` in an App Store URL: apps.apple.com/us/app/slug/idNNNNNNNN) for exact targeting. `app_name` is fine when the user only knows the name; the Actor reviews the top search match.
2. Pick the store and order. `country` (two-letter code, 52 stores, default `us`) drives the storefront and the locale of review text and dates. `sort` is `mostrecent`, `mosthelpful`, `mostfavorable`, or `mostcritical` (iOS only; macOS always returns most recent).
3. Bound the volume. `max_reviews` caps rows per app (default 100). Setting 0 means unlimited up to 50 pages, about 1,250 reviews on iOS or 500 on macOS.
4. Estimate cost, then confirm with the user if the run is large. See `references/gotchas.md`.
5. Run the Actor and read the dataset. Deliver rows as JSON or CSV, or hand back the dataset link. Dedupe across runs on `review_id`.

## Inputs

- `product_ids` (array of strings): numeric Apple product IDs, fetched sequentially in one run
- `app_name` (string): free-form app name, auto-resolved to the top search match when `product_ids` is empty (one of the two is required)
- `country` (enum, 52 codes, default `us`): Apple country store
- `sort` (enum, default `mostrecent`): `mostrecent`, `mosthelpful`, `mostfavorable`, `mostcritical`
- `max_reviews` (integer, default 100): cap per app; 0 = unlimited up to 50 pages
- `start_page` (integer, default 1): resume a long run
- `include_macos` (boolean, default true): set false to skip macOS apps without charges
- `normalize_dates` (boolean, default true): adds `review_date_iso`
- `parse_helpfulness` (boolean, default true): adds helpfulness counts when a review has votes

## Cost

Billing is per review returned plus a small one-time setup fee per run. A 100-review run is well under a dollar; even the 1,250-review iOS maximum for one app stays around two dollars. Batch multiple `product_ids` into one run so the setup fee is paid once. Live prices and estimates are in `references/gotchas.md`.

## Honest limits

- `sort` applies to iOS apps only; macOS apps always return most recent.
- `app_name` resolution takes the top search match, which can be the wrong app for generic names; use `product_ids` when it matters.
- `review_date_iso` is best-effort parsing and can be null for unfamiliar locale formats; the raw `review_date` string is always there.
- Helpfulness counts appear only on reviews that have votes; do not promise them on every row.
- Apple serves a bounded review window per app (about 50 pages), not the full historical archive.

## Troubleshooting

- Empty dataset: wrong `product_id`, an app with no reviews in that country store, or a macOS app with `include_macos` false.
- Wrong app came back: `app_name` matched a different app; rerun with the exact `product_ids`.
- Fewer rows than `max_reviews`: the store had fewer reviews; `total_page_count` on each row shows what was available.
- Run stops around 1,250 rows per iOS app: the 50-page cap; use `start_page` to continue in a follow-up run.

See `references/gotchas.md` for cost guardrails and error recovery, and `references/actor-index.md` for the Actor routing table.

## Related Apple App Store Actors

- Apple App Store Search (keyword rankings and search results): https://apify.com/johnvc/apple-app-store-search?fpr=9n7kx3&fp_sid=skillrepo
- Apple App Store Product API (listing details for an app ID): https://apify.com/johnvc/apple-app-store-product-api?fpr=9n7kx3&fp_sid=skillrepo

