# Play Store Reviews Scraper (`burbn/play-store-reviews-scraper`) Actor

Instantly collect thousands of user reviews from any Android app on the Google Play Store! Scrape full review texts, precise timestamps, likes, and developer responses using deep pagination. Track user issues or monitor competitor app feedback effortlessly.

- **URL**: https://apify.com/burbn/play-store-reviews-scraper.md
- **Developed by:** [Kevin](https://apify.com/burbn) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Google Play Store Reviews Scraper | App Reviews API

Scrape user reviews from apps on the Google Play Store. Extract detailed user feedback, star ratings, device info, and developer replies. Supports sorting, pagination, and filters for specific devices, ratings, regions, and languages. The best Play Store scraper for app sentiment analysis, competitive intelligence, and feedback monitoring.

### ❓ What is the Play Store Reviews Scraper?

**Play Store Reviews Scraper** is a powerful Apify actor that lets you extract detailed user reviews from any application on the **Google Play Store**. Perfect for app developers, product managers, marketers, and market researchers who need to understand user sentiment.

With this tool, you can:

- 🔍 **Scrape by App ID** — Target any app using its unique identifier (e.g., "com.snapchat.android", "com.whatsapp").
- 🌍 **Region & Language** — Filter reviews by specific country/region (ISO 3166-1) and language (ISO 639-1).
- ⭐ **Filter by Rating** — Extract exactly the feedback you want by filtering for 1-star, 5-star, or any specific rating.
- 📱 **Device Filtering** — Filter reviews written on a specific device type (Phone, Tablet, or Chromebook).
- 🔄 **Sort Results** — Sort reviews by Most Relevant, Newest, or Rating.
- 📄 **Deep Pagination** — Scrape hundreds or thousands of reviews automatically.

### 🎯 What Data Can You Extract?

| Field | Description |
|-------|-------------|
| `review_id` | Unique identifier for the review |
| `app_id` | Target Google Play Store App ID |
| `review_text` | The actual review content provided by the user |
| `review_rating` | Star rating given by the user (1-5) |
| `author_id` | Unique ID of the review author |
| `author_name` | Name of the user who wrote the review |
| `author_photo` | URL to the author's profile photo |
| `author_app_version` | The app version the user was on when writing the review |
| `review_timestamp` | Unix timestamp of when the review was created |
| `review_datetime_utc` | Formatted UTC datetime of the review |
| `review_likes` | The number of likes/helpful votes the review received |
| `app_developer_reply` | The developer's official reply to the review (if any) |
| `app_developer_reply_timestamp` | Unix timestamp of the developer reply |
| `app_developer_reply_datetime_utc` | Formatted UTC datetime of the developer reply |

### 🚀 How to Use the Scraper

#### Step 1: Provide the App ID

Enter the App ID of the Play Store app you want to scrape (e.g., `com.snapchat.android`).

#### Step 2: Set Filters (Optional)

| Input | Type | Default | Description |
|-------|------|---------|-------------|
| `app_id` | String | (Required) | The unique App ID of the app |
| `limit` | Integer | `100` | Number of reviews to fetch per page |
| `maxPages` | Integer | `5` | Maximum number of pagination requests |
| `sort_by` | Enum | `NEWEST` | Sort order (MOST_RELEVANT, NEWEST, RATING) |
| `rating` | Enum | `ANY` | Star rating filter (ONE_STAR, TWO_STARS, etc.) |
| `device` | Enum | `PHONE` | Device used for review (PHONE, TABLET, etc.) |
| `region` | String | `US` | ISO 3166-1 alpha-2 country code |
| `language` | String | `EN` | ISO 639-1 alpha-2 language code |

#### Step 3: Run and Download Results

Click **Start** to run the scraper. Results are available in JSON, CSV, Excel, XML, and RSS formats.

### 📋 Example Input

```json
{
  "app_id": "com.instagram.android",
  "limit": 100,
  "maxPages": 3,
  "sort_by": "NEWEST",
  "rating": "ANY",
  "device": "PHONE",
  "region": "US",
  "language": "EN"
}
````

### 📋 Example Output

```json
{
  "review_id": "9463eacd-fdd3-4afe-8bdd-57615ef730bc",
  "review_text": "Amazing 😍🤩",
  "review_rating": 5,
  "author_id": "116080582967771641831",
  "author_name": "BISWANATH NANDA",
  "author_photo": "https://play-lh.googleusercontent.com/a/ACg8ocIAmS1-DumL6eDMmNIvU2tQLgyr_wGSe-JQVuPfJdgh6mz2fQ=mo",
  "author_app_version": "415.0.0.36.76",
  "review_timestamp": 1775975582,
  "review_datetime_utc": "2026-04-12T06:33:02.000Z",
  "review_likes": 0,
  "app_developer_reply": null,
  "app_developer_reply_timestamp": null,
  "app_developer_reply_datetime_utc": null,
  "app_id": "com.instagram.android"
}
```

### 🎨 Dataset Views

| View | Description |
|------|-------------|
| 📊 **Reviews Overview** | See all reviews combined with text, rating, author details, and likes. |
| 🛠️ **Developer Replies** | Easily isolate reviews where developers responded and see their exact replies. |

### 💡 Use Cases

- **Sentiment Analysis** — Gather massive datasets of user feedback to evaluate app reception.
- **Bug & Issue Tracking** — Filter by 1 or 2 stars to uncover bugs mentioned by frustrated users.
- **Competitor Analysis** — Check out what users love or hate about competing apps in your niche.
- **Feature Requests** — Find out what features your audience genuinely wants added to the platform.
- **Support Monitoring** — Ensure your developers' responses are helpful and timely.

### 🔧 Tips for Best Results

1. **Be mindful of Limits** — Don't set the `limit` too high if you're experiencing random timeouts; an optimal limit ensures smoother pagination.
2. **Sort intelligently** — Use `NEWEST` for recent bug reports and `MOST_RELEVANT` for an overview of general app sentiments.
3. **Use the Device filter** — Determine if users are complaining specifically because of bugs on `TABLET` or `CHROMEBOOK` interfaces.
4. **Localize your scrape** — Combine language and region exactly (like `ES` / `ES` or `EN` / `US`) for highly accurate market insight.

### 🏷️ Tags

`play store` `google play` `play store reviews` `app reviews scraper` `play store api` `app sentiment analysis` `feedback extractor` `user reviews` `android app` `review crawler`

### 🎁 Get $5 Free Apify Credits

New to Apify? [Sign up using this link](https://apify.com?fpr=free-credits) and get **$5 free credits** to start scraping Play Store Reviews right away! No credit card required.

### 📞 Support

For questions, feedback, or issues, please contact us through Apify or open an issue.

***

**Happy searching Play Store Reviews! 🔍✨**

# Actor input Schema

## `app_id` (type: `string`):

The unique App ID of the Play Store app you want to scrape (e.g., 'com.snapchat.android', 'com.whatsapp').

## `limit` (type: `integer`):

Number of reviews to fetch per page/request. Range: 1-4000. Larger limits can be faster but may increase timeout risks.

## `maxPages` (type: `integer`):

Maximum number of pagination requests to make. Set higher for comprehensive review data extraction.

## `sort_by` (type: `string`):

Order parameter for the reviews. Options: MOST\_RELEVANT, NEWEST, RATING.

## `rating` (type: `string`):

Filter reviews by a specific star rating number to focus on exactly what you need.

## `device` (type: `string`):

Filter reviews published by users evaluating the app on a specific device type.

## `region` (type: `string`):

ISO 3166-1 alpha-2 country code to localize the requested Play Store results (e.g. US, IN, GB).

## `language` (type: `string`):

ISO 639-1 alpha-2 language code corresponding to user locales (e.g. EN, ES, HI).

## Actor input object example

```json
{
  "app_id": "com.instagram.android",
  "limit": 30,
  "maxPages": 1,
  "sort_by": "NEWEST",
  "rating": "ANY",
  "device": "PHONE",
  "region": "US",
  "language": "EN"
}
```

# Actor output Schema

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

View all extracted reviews with author name, rating, text, likes, and dates.

## `developer_replies` (type: `string`):

Focus strictly on reviews that received a developer reply and what the developer said.

# 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 = {
    "app_id": "com.instagram.android",
    "limit": 30,
    "maxPages": 1,
    "sort_by": "NEWEST",
    "rating": "ANY",
    "device": "PHONE",
    "region": "US",
    "language": "EN"
};

// Run the Actor and wait for it to finish
const run = await client.actor("burbn/play-store-reviews-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 = {
    "app_id": "com.instagram.android",
    "limit": 30,
    "maxPages": 1,
    "sort_by": "NEWEST",
    "rating": "ANY",
    "device": "PHONE",
    "region": "US",
    "language": "EN",
}

# Run the Actor and wait for it to finish
run = client.actor("burbn/play-store-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "app_id": "com.instagram.android",
  "limit": 30,
  "maxPages": 1,
  "sort_by": "NEWEST",
  "rating": "ANY",
  "device": "PHONE",
  "region": "US",
  "language": "EN"
}' |
apify call burbn/play-store-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=burbn/play-store-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Play Store Reviews Scraper",
        "description": "Instantly collect thousands of user reviews from any Android app on the Google Play Store! Scrape full review texts, precise timestamps, likes, and developer responses using deep pagination. Track user issues or monitor competitor app feedback effortlessly.",
        "version": "1.0",
        "x-build-id": "B9wPcEG7vqy2hQvBD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/burbn~play-store-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-burbn-play-store-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/burbn~play-store-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-burbn-play-store-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/burbn~play-store-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-burbn-play-store-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "app_id"
                ],
                "properties": {
                    "app_id": {
                        "title": "📱 App ID",
                        "type": "string",
                        "description": "The unique App ID of the Play Store app you want to scrape (e.g., 'com.snapchat.android', 'com.whatsapp').",
                        "default": "com.instagram.android"
                    },
                    "limit": {
                        "title": "📦 Reviews per Page",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Number of reviews to fetch per page/request. Range: 1-4000. Larger limits can be faster but may increase timeout risks.",
                        "default": 30
                    },
                    "maxPages": {
                        "title": "📑 Maximum Pages",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of pagination requests to make. Set higher for comprehensive review data extraction.",
                        "default": 1
                    },
                    "sort_by": {
                        "title": "🔄 Sort By",
                        "enum": [
                            "MOST_RELEVANT",
                            "NEWEST",
                            "RATING"
                        ],
                        "type": "string",
                        "description": "Order parameter for the reviews. Options: MOST_RELEVANT, NEWEST, RATING.",
                        "default": "NEWEST"
                    },
                    "rating": {
                        "title": "⭐ Star Rating Filter",
                        "enum": [
                            "ANY",
                            "ONE_STAR",
                            "TWO_STARS",
                            "THREE_STARS",
                            "FOUR_STARS",
                            "FIVE_STARS"
                        ],
                        "type": "string",
                        "description": "Filter reviews by a specific star rating number to focus on exactly what you need.",
                        "default": "ANY"
                    },
                    "device": {
                        "title": "📱 Device Filter",
                        "enum": [
                            "PHONE",
                            "TABLET",
                            "CHROMEBOOK"
                        ],
                        "type": "string",
                        "description": "Filter reviews published by users evaluating the app on a specific device type.",
                        "default": "PHONE"
                    },
                    "region": {
                        "title": "🌍 Region / Country Code",
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 country code to localize the requested Play Store results (e.g. US, IN, GB).",
                        "default": "US"
                    },
                    "language": {
                        "title": "🗣️ Language Code",
                        "type": "string",
                        "description": "ISO 639-1 alpha-2 language code corresponding to user locales (e.g. EN, ES, HI).",
                        "default": "EN"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
