# App Store and Play Store Review Intelligence (`scrapemint/app-review-intelligence`) Actor

Pulls every review for any iOS App Store or Google Play app: rating, title, body, reviewer, date, app version, country, and developer replies. Track release sentiment, flag regressions per version, and benchmark competitors.

- **URL**: https://apify.com/scrapemint/app-review-intelligence.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Developer tools, SEO tools, Automation
- **Stats:** 7 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$2.00 / 1,000 app store review rows

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## App Store Review Intelligence and Google Play Review Export Tool

Export every review for any iOS App Store or Google Play app into a clean JSON, CSV, or Excel file. Pull star ratings, review titles, full text, app version, country storefront, developer replies, and reviewer names for your app and every competitor in one run.

Built for mobile product managers, ASO specialists, QA leads, indie developers, and user research teams who need App Store and Play Store review data without building a scraper from scratch or paying $299 per month for an ASO dashboard.

***

### Who uses this app review scraper

```mermaid
flowchart TD
    A[Mobile PMs] -->|Tag 1 star complaints<br/>per release| D[App Review<br/>Data Export]
    B[ASO specialists] -->|Mine keywords and<br/>track sentiment| D
    C[QA and support] -->|Find bug reports<br/>hidden in reviews| D
    E[Indie developers] -->|Catch crashes in<br/>the new version| D
    D --> F[Release quality report]
    D --> G[Competitor tear down]
    D --> H[Support ticket queue]
```

| Role | What this scraper unlocks |
|---|---|
| **Mobile PM** | Review count and star trend per app version, so you see which release regressed |
| **ASO specialist** | Full review corpus for keyword mining and sentiment tracking |
| **QA lead** | Crash and bug reports grouped by app version, pulled same day as a release |
| **Indie developer** | App Store reviews signal without paying for AppFollow or Sensor Tower |
| **User research team** | Real user language for onboarding copy, interview prep, and product briefs |

***

### How the app review scraper works

```mermaid
flowchart LR
    A[App Store or<br/>Play Store URL] --> B{Detect platform}
    B -->|apps.apple.com| C[Apple RSS<br/>reviews feed]
    B -->|play.google.com| D[Play Store<br/>reviews endpoint]
    C --> E[Loop countries<br/>pages 1 to 10]
    D --> F[Paginate internal<br/>tokens]
    E --> G[Normalize fields]
    F --> G
    G --> H[(JSON / CSV / Excel)]
```

Paste one or more App Store or Google Play URLs. The actor auto detects the platform from the hostname, pulls the public review feeds both stores already expose, and returns one normalized dataset. No login, no captcha, no fragile DOM pulling.

iOS uses Apple's RSS customer reviews feed. Up to 500 reviews per country storefront. Loop multiple countries in one run.

Android uses the same reviews endpoint the Play Store web UI uses. Pagination is automatic, so popular apps return thousands of reviews per pull.

***

### ASO dashboards vs this scraper

```mermaid
flowchart LR
    subgraph Paid[AppFollow, Sensor Tower, Appbot]
        A1[$99 to $999 per month]
        A2[Seat licensed]
        A3[Vendor owns the data]
    end
    subgraph Actor[This actor]
        B1[Pay per review]
        B2[Raw JSON export]
        B3[You own the data]
    end
    Paid -.-> X[Pick based on<br/>what you need]
    Actor --> X
```

| Feature | ASO SaaS dashboards | This actor |
|---|---|---|
| Pricing | $99 to $999 per month, flat | Pay per review, first 2 per run free |
| iOS coverage | Limited countries per plan tier | All 155 iOS country storefronts |
| Android coverage | Capped by plan | Full pagination, thousands of reviews |
| Data ownership | Vendor hosts behind a login | Raw JSON in your account |
| Scheduling | Built in, but locked in | Apify Scheduler, plus webhooks to Slack or your DB |
| Export format | CSV or PDF, often paywalled | JSON, CSV, Excel, or API |

***

### Quick start

Export recent reviews for one iOS app across 3 country storefronts:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~app-review-intelligence/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "appUrls": [
      { "url": "https://apps.apple.com/us/app/instagram/id389801252" }
    ],
    "iosCountries": ["us", "gb", "de"],
    "maxReviewsPerApp": 500
  }'
```

Compare your app against 2 Android competitors, filter for 1 and 2 star reviews:

```json
{
  "appUrls": [
    { "url": "https://play.google.com/store/apps/details?id=com.yourapp" },
    { "url": "https://play.google.com/store/apps/details?id=com.competitor.one" },
    { "url": "https://play.google.com/store/apps/details?id=com.competitor.two" }
  ],
  "maxReviewsPerApp": 1000,
  "androidCountry": "us",
  "androidLanguage": "en",
  "filterByRating": ["1", "2"],
  "sortBy": "NEWEST"
}
```

Mix iOS and Android URLs in the same run. The actor detects each platform from the URL.

***

### What one review record looks like

```json
{
  "platform": "ios",
  "appId": "389801252",
  "appName": "Instagram",
  "developer": "Instagram, Inc.",
  "appCategory": "Photo & Video",
  "reviewId": "13971286458",
  "rating": 1,
  "title": "Keeps crashing on 345.0",
  "text": "App crashes every time I open Reels after the last update...",
  "author": "t4351278",
  "appVersion": "425.0.0",
  "helpfulVotes": 12,
  "updated": "2026-04-18T14:22:00.000Z",
  "country": "us",
  "developerResponse": null,
  "developerResponseDate": null,
  "sourceUrl": "https://apps.apple.com/us/app/instagram/id389801252",
  "scrapedAt": "2026-04-19T19:30:00.000Z"
}
```

Every row: platform (ios or android), star rating, title, full body, author, app version at time of review, helpful votes, published date, country, developer reply, and source URL.

***

### Pricing

First 2 reviews per run are free. After that you pay per review extracted. No seat licenses. No tier gating. 1000 reviews lands under $2 on the Apify free plan.

***

### FAQ

**Can this pull App Store reviews for any app?**
Yes. Any iOS or Android app with a public store listing. Paste the URL, the actor pulls the review feed.

**How many reviews can I get per app?**
iOS caps at 500 per country storefront. Across 10 countries that is 5000 per app. Android returns up to a few thousand per call depending on the app's total review count.

**Is pulling App Store reviews legal?**
Both feeds are public and Apple and Google expose them openly. The iOS RSS feed is documented by Apple. The Play Store reviews endpoint is the same one Google's own web UI uses.

**How do I track review sentiment per release?**
Each review includes the app version field. Group by version in a spreadsheet and you see which release caused a drop in stars.

**Does it pull developer responses?**
Yes. The `developerResponse` and `developerResponseDate` fields include the reply you posted from App Store Connect or Play Console.

**Can I run this on a schedule?**
Yes. Use the Apify Scheduler to run every hour, every day, or on your own cron. Add a webhook to push new 1 star reviews straight to Slack.

**Does it work for games, fintech, utilities, and B2B apps?**
Yes. The feed shape is the same across every category on both stores.

**What about apps with reviews in many languages?**
iOS ships reviews per country storefront, so set `iosCountries` to match the markets you care about. Android accepts a single `androidLanguage` per run, so run the actor once per language.

***

### Related actors by Scrapemint

- **TripAdvisor Review Intelligence and Hotel Reputation Monitor** for hotels and attractions
- **Google Play Reviews Scraper** for Android review history on a single listing
- **Steam Game and Review Intelligence Monitor** for PC games and player sentiment

Stack these to cover every review surface one brand touches.

# Actor input Schema

## `appUrls` (type: `array`):

Paste iOS App Store or Google Play Store URLs. The actor auto-detects the platform. Example: https://apps.apple.com/us/app/instagram/id389801252  or  https://play.google.com/store/apps/details?id=com.instagram.android

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

Hard cap per app. iOS RSS feed returns at most 500 per country. Android via scraper returns up to a few thousand.

## `iosCountries` (type: `array`):

iOS reviews differ per country storefront. Leave empty to use 'us'. Example: us, gb, de, fr, jp.

## `androidCountry` (type: `string`):

Two-letter country code for Google Play reviews.

## `androidLanguage` (type: `string`):

Language code for Google Play reviews.

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

Sort order for Google Play reviews. iOS RSS is always most recent.

## `filterByRating` (type: `array`):

Only return reviews with these star ratings. Valid values: 1, 2, 3, 4, 5. Leave empty for all.

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

Apify proxy settings. Datacenter proxies are enough for both iOS RSS and Play Store.

## Actor input object example

```json
{
  "appUrls": [
    {
      "url": "https://apps.apple.com/us/app/instagram/id389801252"
    },
    {
      "url": "https://play.google.com/store/apps/details?id=com.instagram.android"
    }
  ],
  "maxReviewsPerApp": 500,
  "iosCountries": [
    "us"
  ],
  "androidCountry": "us",
  "androidLanguage": "en",
  "sortBy": "NEWEST",
  "filterByRating": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "appUrls": [
        {
            "url": "https://apps.apple.com/us/app/instagram/id389801252"
        },
        {
            "url": "https://play.google.com/store/apps/details?id=com.instagram.android"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/app-review-intelligence").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 = {
    "appUrls": [
        { "url": "https://apps.apple.com/us/app/instagram/id389801252" },
        { "url": "https://play.google.com/store/apps/details?id=com.instagram.android" },
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/app-review-intelligence").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 '{
  "appUrls": [
    {
      "url": "https://apps.apple.com/us/app/instagram/id389801252"
    },
    {
      "url": "https://play.google.com/store/apps/details?id=com.instagram.android"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapemint/app-review-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemint/app-review-intelligence"
        }
    }
}

```

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/w4cg5YaCTWgMy11XK/builds/3bfANGaHTauRxqjm0/openapi.json
