# Google Play Reviews Scraper 🤮⭐ / 🤩⭐⭐⭐⭐⭐ (`lokki/google-play-reviews-scraper`) Actor

Turn Google Play reviews into product insights: compare competitors, find complaints, feature requests, customer language, and category opportunities.

- **URL**: https://apify.com/lokki/google-play-reviews-scraper.md
- **Developed by:** [Ian Dikhtiar](https://apify.com/lokki) (community)
- **Categories:** E-commerce, Other, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## Google Play Reviews Scraper

Your next feature, campaign, or competitor angle may already be sitting in Google Play reviews.

This Actor collects written reviews from the products you choose or finds products for you by search and category. Filter by star rating, compare competing apps, and export the results to JSON, CSV, or Excel for research and analysis.

### What reviews can tell you

A star rating tells you whether someone was happy. The review tells you why.

Use the data to find:

- Bugs and recurring complaints that push users away
- Features customers keep asking for
- Subscription, advertising, and paywall frustration
- What loyal users would miss if the product disappeared
- The words customers use to describe the problem and the outcome
- Weak spots in competing products that your product could solve better
- Changes in sentiment after a new release or app version

### Who this is for

#### Product teams

Turn scattered feedback into a backlog grounded in customer language. Compare one-star pain against five-star praise before deciding what to fix or build next.

#### Founders and product researchers

Validate an idea before spending months on it. Search a market such as `budget planner`, `meal delivery`, or `AI photo editor`, then study what users love and what they still cannot get.

#### Competitive intelligence teams

Place several competing products in one run. Compare complaints, feature requests, developer replies, helpful-vote counts, and recent sentiment in one dataset.

#### Marketers and copywriters

Find phrases customers already use. Reviews can reveal landing-page angles, objections, desired outcomes, comparison points, and the benefits users care about enough to mention without being asked.

#### Game studios

Study complaints about ads, difficulty, balancing, crashes, rewards, subscriptions, and in-app purchases. Compare genres or research the Top free, Top paid, and Top grossing charts.

#### Agencies and consultants

Build evidence-backed voice-of-customer reports, competitor teardowns, app audits, positioning briefs, and product opportunity reports for clients.

#### Support and QA teams

Collect recent low-rating reviews to spot regressions, device-specific failures, version problems, and issues that have not yet reached support tickets.

#### Investors and operators

Review customer sentiment before an acquisition, partnership, or market entry. A polished store listing can hide a product users are quietly abandoning.

### Turn the research into content

Review data can also power social and editorial content. For example:

- TikTok or Reel: `We read 500 reviews of budgeting apps. These were the 3 complaints nobody has fixed.`
- LinkedIn post: `What 1,000 Google Play reviews taught us about subscription fatigue.`
- X thread: `Why users are leaving popular music apps, in their own words.`
- YouTube video: `I compared the top 10 puzzle games by reading their worst reviews.`
- Newsletter: `Five product opportunities hiding in this month's app reviews.`
- Sales deck: `Where competitors disappoint customers and how our product is different.`

Use quotes responsibly. Remove personal information, avoid presenting a review as an endorsement, and follow the rules that apply to your use of the data.

### Useful research plays

#### Build a pain-point map

Collect one- and two-star reviews across competing products. Group complaints by bugs, subscriptions, missing features, onboarding, support, and reliability.

#### Find the real value proposition

Collect four- and five-star reviews. Look for repeated outcomes and emotional language. Customers often describe the value more clearly than the product's marketing page does.

#### Find the gap in the middle

Three-star reviews are underrated. These users saw enough value to stay, but something stopped them from loving the product. Their reviews often contain the most practical improvement ideas.

#### Watch a release

Sort by newest and keep the app version in the output. Compare complaints before and after an update to see whether the release helped or created new problems.

#### Scan a market you do not know yet

Start with a search term or Google Play category. The Actor finds products, removes duplicates, and collects reviews from each one.

### Choose how to find products

You can use one method or combine all three in the same run.

1. **Exact products:** paste Google Play links or package IDs. In Apify Console, paste one item per line. You can submit up to 50 products.
2. **Product names or ideas:** enter searches such as `Spotify`, `expense tracker`, or `meditation app`. The Actor finds matching Google Play products before collecting reviews.
3. **Category research:** choose a Google Play category and select Top free, Top paid, or Top grossing.

The Actor removes duplicate products and respects the total product limit you choose.

### Start in Apify Console

1. Open the **Input** tab.
2. Paste product links, add research searches, or select a category.
3. Choose the star ratings and number of matching reviews you want per product.
4. Click **Start** and open the dataset when the run finishes.

A sensible first run is 5 products with 100 reviews per product. Increase the limits after checking that the results match your research question.

### Ready-to-run templates

#### Compare exact products using low-rating reviews

```json
{
  "apps": [
    "https://play.google.com/store/apps/details?id=com.spotify.music",
    "https://play.google.com/store/apps/details?id=com.whatsapp",
    "https://play.google.com/store/apps/details?id=com.roblox.client"
  ],
  "minRating": 1,
  "maxRating": 2,
  "maxReviews": 100
}
```

#### Discover products from an idea

```json
{
  "searchTerms": ["expense tracker", "budget planner"],
  "maxAppsPerDiscovery": 5,
  "maxTotalApps": 10,
  "minRating": 1,
  "maxRating": 5,
  "maxReviews": 100
}
```

#### Research a category

```json
{
  "category": "GAME_PUZZLE",
  "collection": "TOP_FREE",
  "maxAppsPerDiscovery": 10,
  "minRating": 1,
  "maxRating": 3,
  "maxReviews": 100
}
```

#### Find the language customers use when they love a product

```json
{
  "apps": ["com.spotify.music"],
  "minRating": 5,
  "maxRating": 5,
  "sort": "HELPFULNESS",
  "maxReviews": 500
}
```

#### Combine a known competitor with market discovery

```json
{
  "apps": [
    "https://play.google.com/store/apps/details?id=com.spotify.music"
  ],
  "searchTerms": ["music streaming", "podcast player"],
  "category": "MUSIC_AND_AUDIO",
  "collection": "GROSSING",
  "maxAppsPerDiscovery": 5,
  "maxTotalApps": 15,
  "minRating": 1,
  "maxRating": 3,
  "maxReviews": 100
}
```

### What the dataset looks like

Each review becomes one clean row. You can see the product, rating, review text, date, app version, helpful votes, developer reply, reviewer, source URL, locale, and how the Actor found the product.

Example from a product-search test run:

```json
{
  "appTitle": "MyMoney—Track Expense & Budget",
  "discoverySource": "search",
  "discoveryValue": "budget planner",
  "rating": 5,
  "text": "easy to organize and navigate",
  "language": "en",
  "country": "us"
}
```

Use the dataset directly in Apify or export it to JSON, CSV, or Excel. It is also ready for spreadsheets, dashboards, notebooks, AI classification, sentiment analysis, and topic clustering.

### Rating filters

- Use 1 to 5 stars to collect every rating.
- Set the minimum and maximum to the same number for an exact rating.
- Use a range such as 1 to 3 for negative and mixed feedback.
- `maxReviews` counts reviews that match your filter for each product.
- Set `maxReviews` to `0` only when you genuinely want every review Google exposes for the selected locale.

### What to know before running

- Google Play exposes reviews by language and storefront. "All reviews" means all written reviews Google exposes for the selected language and country, not every review worldwide.
- Google may repeat, omit, reorder, or stop exposing reviews through its public web endpoints. The Actor removes duplicate review IDs within each product run.
- Newest and Most helpful sorting are supported. Rating sort is excluded because it can prevent low-rating research from reaching useful results.
- Google can temporarily throttle large or fast jobs. The Actor uses request timeouts and retries temporary failures.
- This Actor reads public Google Play data without login. You are responsible for using the results lawfully and following applicable privacy, platform, and content rules.

# Actor input Schema

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

Paste one exact Google Play URL or package ID per line, up to 50. Do not enter ordinary product names here; use Product search terms for names or ideas.

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

Enter product names or research ideas such as Spotify, expense tracker, meditation, or photo editor. The Actor finds matching products first. Maximum 10 searches.

## `category` (type: `string`):

Optionally discover products from one category.

## `collection` (type: `string`):

Ranking used when discovering products from a category.

## `maxAppsPerDiscovery` (type: `integer`):

Maximum products added by each search term and by the category.

## `maxTotalApps` (type: `integer`):

Hard cap after combining and deduplicating direct apps, searches, and category results.

## `minRating` (type: `integer`):

Set equal to Maximum rating for one exact rating. Use 1 and 5 for all ratings.

## `maxRating` (type: `integer`):

Inclusive upper end of the rating filter.

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

Stops after this many reviews per product that match the rating filter. Set to 0 for all exposed reviews.

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

Two- or three-letter language code.

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

Two- or three-letter code controlling the Google Play storefront.

## `sort` (type: `string`):

Order used before the rating filter is applied.

## `maxPagesPerApp` (type: `integer`):

Hard stop for unlimited runs. Each page contains up to roughly 150 reviews.

## `requestsPerSecond` (type: `integer`):

Keep this low to reduce Google Play throttling risk.

## `includeAppMetadata` (type: `boolean`):

Fetches one extra app-details request per product.

## Actor input object example

```json
{
  "apps": [
    "https://play.google.com/store/apps/details?id=com.spotify.music"
  ],
  "searchTerms": [
    "expense tracker"
  ],
  "category": "",
  "collection": "TOP_FREE",
  "maxAppsPerDiscovery": 10,
  "maxTotalApps": 50,
  "minRating": 1,
  "maxRating": 5,
  "maxReviews": 1000,
  "language": "en",
  "country": "us",
  "sort": "NEWEST",
  "maxPagesPerApp": 1000,
  "requestsPerSecond": 2,
  "includeAppMetadata": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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": [
        "https://play.google.com/store/apps/details?id=com.spotify.music"
    ],
    "searchTerms": [
        "expense tracker"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lokki/google-play-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 = {
    "apps": ["https://play.google.com/store/apps/details?id=com.spotify.music"],
    "searchTerms": ["expense tracker"],
}

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/YIBHw3ZLhdXasRJny/builds/VG4EfAxCh6ggsyNtx/openapi.json
