# Playstore Reviews Scraper (`fetchcraftlabs/playstore-reviews-scraper`) Actor

Scrape and collect Google Play Store app reviews easily.
Easily collect Google Play Store app reviews to uncover user insights, track feedback trends, and analyze ratings — all in one simple, automated scraper. Perfect for market research and app performance monitoring.

- **URL**: https://apify.com/fetchcraftlabs/playstore-reviews-scraper.md
- **Developed by:** [FetchCraft Labs](https://apify.com/fetchcraftlabs) (community)
- **Categories:** Integrations, SEO tools, Other
- **Stats:** 114 total users, 4 monthly users, 99.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.07 / 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 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

## Playstore Reviews Scraper

The Playstore Reviews Scraper gathers fresh public feedback directly from Google Play Store listings. Provide the store URL or app ID, choose how many reviews you need, and the Actor assembles a clean dataset with the latest comments, ratings, timestamps, and reviewer metadata. Each run can collect up to 25,000 records, giving you enough depth to spot sentiment shifts and emerging themes.

### What You Get

- **Complete review history** – capture both recent and legacy feedback to compare how sentiment evolves over time.
- **Structured insights** – every review includes rating, headline, body text, user name, version, locale, and date so you can filter by any dimension you care about.
- **Flexible slicing** – grab reviews for a single app, multiple locales, or specific time windows without manual copy-paste work.

### Popular Use Cases

- **Analytics & Dashboards** – feed the dataset into BI tools to monitor weekly satisfaction, highlight recurring bugs, or track the impact of releases.
- **Market & Product Research** – benchmark against competitors, uncover feature requests, and understand what’s resonating with different user segments.
- **Support & Operations** – surface critical issues faster by forwarding 1-star spikes to support teams or triaging feedback by keywords.
- **Growth & Marketing** – identify testimonials to spotlight in campaigns and watch how messaging changes user perception.

### Typical Workflow

1. Enter the Google Play Store URL or app ID you want to analyze.
2. Set how many reviews to gather (up to 25k) and choose optional filters like minimum rating or language.
3. Run the Actor and download the resulting dataset or stream it directly to your analytics stack.

### Example Outcomes

- Weekly sentiment tracker combining average rating, review volume, and top keywords for leadership reports.
- Competitive landscape comparison showing how users rate feature depth, stability, and support responsiveness across similar apps.
- AI-powered insights such as auto-generated release summaries, clustering feedback with LLMs, or training sentiment models tailored to your product language.
- Feature request backlog mined from “most helpful” reviews, prioritized by the number of mentions and star rating.

### Sample Output

```json
[
  {
    "appId": "com.supercell.clashroyale",
    "appUrl": "https://play.google.com/store/apps/details?id=com.supercell.clashroyale",
    "language": "en",
    "country": "us",
    "sort": "RELEVANT",
    "retrievedAt": "2025-10-27T17:52:19.392740+00:00",
    "reviewId": "623651c0-ff2c-4657-857a-049e192dd052",
    "userName": "Christian Monserrate",
    "userImage": "https://play-lh.googleusercontent.com/a-/ALV-UjX3Ua5_PcKGnGjVuC6GvJk-x2A3IiEuEFTJ-Lo9WPSwzJLVxT10",
    "score": 4,
    "content": "It's a great game overall, my biggest complaint is how pay to win the game can be, about 75 percent of the items in the shop are bought with money, which makes it so much easier to level up cards instantly. I don't like about paying for mobile games, so I've always been a free to play user. There's been some challenges against pay to win users, but nothing major if you manage to have good level cards",
    "thumbsUpCount": 1061,
    "appVersion": "120169008",
    "at": "2025-10-10T00:47:17"
  },
  {
    "appId": "com.supercell.clashroyale",
    "appUrl": "https://play.google.com/store/apps/details?id=com.supercell.clashroyale",
    "language": "en",
    "country": "us",
    "sort": "RELEVANT",
    "retrievedAt": "2025-10-27T17:52:19.392740+00:00",
    "reviewId": "a381c175-4824-4618-afb2-0064556dd913",
    "userName": "Lincoln M.",
    "userImage": "https://play-lh.googleusercontent.com/a/ACg8ocJzPmkCi6NFQYtG0MmfCNDE3miFaFvUXufNQ0BKLBXTuGKe-Q=mo",
    "score": 3,
    "content": "This game makes it so you fight in a regular match, but the player that you are fighting has a large number of cards you don't have. And when that happens, your cards don't really stand a chance. So that reason makes the game a lot harder to play and more frustrating for the players. But sometimes the matches that I play are still pretty fair, so that is why my rating is in the middle. So if the game made a change that you could be able to fight players that have the same cards that you have.",
    "thumbsUpCount": 17,
    "appVersion": "120169018",
    "at": "2025-10-22T04:15:59"
  },
  {
    "appId": "com.supercell.clashroyale",
    "appUrl": "https://play.google.com/store/apps/details?id=com.supercell.clashroyale",
    "language": "en",
    "country": "us",
    "sort": "RELEVANT",
    "retrievedAt": "2025-10-27T17:52:19.392740+00:00",
    "reviewId": "f4d2a001-44d0-4101-8174-592d89a361bd",
    "userName": "Radu Codreanu",
    "userImage": "https://play-lh.googleusercontent.com/a-/ALV-UjV-FOEgkqpZvfphc33Y5fvpO75MGI7AJD_6mzJ_nLU-mZFWZQ_z",
    "score": 3,
    "content": "Honestly I think the game was in a good spot and still is, but for whatever reason they decided to add... merge tactics (of all things) to it, instead of maybe improving on the clan gameplay? And they locked away the ranked mode which was really fun. One step forward, two steps back. The matchmaking feels better overall though for some time now.",
    "thumbsUpCount": 152,
    "appVersion": "120169008",
    "at": "2025-10-16T16:49:47"
  },
  {
    "appId": "com.supercell.clashroyale",
    "appUrl": "https://play.google.com/store/apps/details?id=com.supercell.clashroyale",
    "language": "en",
    "country": "us",
    "sort": "RELEVANT",
    "retrievedAt": "2025-10-27T17:52:19.392740+00:00",
    "reviewId": "3e1bb50e-bed8-4ad1-aaff-a9370e0b3dc2",
    "userName": "Eluen Rodriguez V.",
    "userImage": "https://play-lh.googleusercontent.com/a-/ALV-UjVewaMhsZlqQU5W5e3uHvN0LCQ0rEX6nYBlsuxEbBk_ey2X5Z7S",
    "score": 4,
    "content": "I really like most of the changes that the game has made over the years, I just wish that it was more f2p friendly, bring back the season shop, but better, making it easier to get the things the shop had to offer, the evo shards, currencies, cards, it would be nice if they added elite wildcards too, but maybe it's too much to ask. But there's a lot of potential in that idea, bringing back the trading tokens or whatever, I think it would make everyone happy.",
    "thumbsUpCount": 2785,
    "appVersion": "110548000",
    "at": "2025-08-19T05:54:08"
  }
]
```

### Next Steps

- Schedule the Actor on Apify to keep your dataset refreshed automatically.
- Connect the output to Google Sheets, BigQuery, or your CRM to enrich existing workflows.
- Share the dataset with teammates so product, research, and marketing stay aligned on real user feedback.

# Actor input Schema

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

List of Google Play Store app URLs or app IDs to fetch reviews for.

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

Proxy settings for the actor. Disabled by default; enable Apify proxy only if your account includes access.

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

Maximum number of reviews to retrieve for each app (must be at least 1).

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

Two-letter language code passed to Google Play.

## `country` (type: `string`):

Two-letter country code passed to Google Play.

## `reviewsSort` (type: `string`):

Sort reviews by NEWEST, RELEVANT, or RATING.

## `ratingFilter` (type: `string`):

Select the exact star rating (1-5) that should be returned from the reviews.

## Actor input object example

```json
{
  "appUrls": [
    "https://play.google.com/store/apps/details?id=com.whatsapp"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxReviewsPerApp": 500,
  "language": "en",
  "country": "us",
  "reviewsSort": "NEWEST",
  "ratingFilter": ""
}
```

# 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": [
        "https://play.google.com/store/apps/details?id=com.whatsapp"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetchcraftlabs/playstore-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 = { "appUrls": ["https://play.google.com/store/apps/details?id=com.whatsapp"] }

# Run the Actor and wait for it to finish
run = client.actor("fetchcraftlabs/playstore-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 '{
  "appUrls": [
    "https://play.google.com/store/apps/details?id=com.whatsapp"
  ]
}' |
apify call fetchcraftlabs/playstore-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/m4NBdwLdhFRGNyNeZ/builds/xJjQyO9zahY345Svp/openapi.json
