# Google Play Reviews Scraper – App Reviews API (`unnoted/google-play-reviews-scraper`) Actor

Get Google Play reviews for any Android app: star rating, review text, date, thumbs-up count, app version and the developer reply, plus the app name and rating. Sort by newest, most relevant or rating, filter by stars, many apps per run. Export JSON, CSV or Excel. No login needed. Unofficial.

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

## Pricing

from $0.15 / 1,000 reviews

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Google Play Reviews Scraper – App Reviews API do?

Google Play Reviews Scraper collects the public reviews of Android apps on Google Play: star rating, review text, date, thumbs-up count, app version and the developer reply, with the app name and average rating on every row, ready to export or call by API.

Unofficial, not affiliated with Google Play.

**Main features:** up to 100,000 reviews per run, no login needed, export to JSON, CSV or Excel, and full API and scheduling support on Apify.

### What data can you get from Google Play?

Each review is one row with these fields:

| Field | Description |
|---|---|
| `reviewId` | Google Play id of the review (always filled) |
| `appId` | Package name of the app (e.g. com.spotify.music) (always filled) |
| `rating` | Stars the reviewer gave (1–5) (always filled) |
| `appTitle` | Name of the app on Google Play |
| `appRating` | Average star rating of the app (1–5) |
| `appUrl` | Google Play page of the app |
| `text` | Text of the review |
| `publishedAt` | When the review was posted or last edited (ISO 8601) |
| `thumbsUpCount` | How many people marked the review as helpful |
| `appVersion` | App version the review was written for (empty when Google Play does not show it) |
| `developerReplyText` | The developer reply, if any |
| `developerRepliedAt` | When the developer replied (ISO 8601) |
| `language` | Language code the reviews were requested in |
| `country` | Country code of the Google Play store |
| `sort` | Sort order of the run (newest, mostRelevant or rating) |
| `scrapedAt` | When the review was collected (ISO 8601) |

### How to scrape Google Play with Google Play Reviews Scraper – App Reviews API

1. Open Google Play Reviews Scraper – App Reviews API on Apify and go to the **Input** tab.
2. In **Apps**, enter `com.spotify.music`.
3. In **Max items**, enter `100`.
4. Click **Start** and wait for the run to finish. A small run like this one takes under a minute.
5. Open the **Output** tab to see the results, or download them as JSON, CSV, Excel or HTML.

### Input

See the **Input** tab for every option. The fields:

| Field | Name | What it does | Default |
|---|---|---|---|
| `appIds` | Apps | Apps to get reviews for: package names (e.g. com.spotify.music) or Google Play app URLs (https://play.google.com/store/apps/details?id=…). |  |
| `sort` | Sort reviews by | The order Google Play lists the reviews in. "Rating" lists the highest-rated reviews first. Options: `newest` (Newest), `mostRelevant` (Most relevant), `rating` (Rating). | `"newest"` |
| `starRating` | Star rating | Only reviews with this many stars. Options: `any` (Any), `1` (1 star), `2` (2 stars), `3` (3 stars), `4` (4 stars), `5` (5 stars). | `"any"` |
| `country` | Country | Two-letter country code of the Google Play store (e.g. us, gb, de, in). | `"us"` |
| `language` | Language | Two-letter language code (e.g. en, de, es). Google Play returns the reviews written in this language. | `"en"` |
| `maxItemsPerApp` | Max reviews per app | Maximum number of reviews per app. Leave empty to share Max items evenly across the apps. |  |
| `maxItems` | Max items | Maximum number of reviews in total. You pay only for reviews saved. | `100` |

Example input:

```json
{
  "appIds": [
    "com.spotify.music"
  ],
  "maxItems": 100
}
```

### Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. One real result:

```json
{
  "reviewId": "4eb8287a-7119-44c0-99c6-13d114fd81f4",
  "appId": "com.spotify.music",
  "appTitle": "Spotify: Music and Podcasts",
  "appRating": 4.35,
  "appUrl": "https://play.google.com/store/apps/details?id=com.spotify.music",
  "rating": 5,
  "text": "very good",
  "publishedAt": "2026-10-07T06:02:55.000Z",
  "thumbsUpCount": 0,
  "appVersion": null,
  "developerReplyText": null,
  "developerRepliedAt": null,
  "language": "en",
  "country": "us",
  "sort": "newest",
  "scrapedAt": "2026-10-08T06:04:00.125Z"
}
```

### How much does it cost to scrape Google Play?

Google Play Reviews Scraper – App Reviews API uses pay-per-event pricing: **$0.15 per 1,000 reviews** (Review). You pay only for reviews saved to the dataset; platform usage is included in the price. Each run also has Apify's standard start fee of a fraction of a cent.

| Reviews | Price |
|---|---|
| 100 | $0.01 |
| 1,000 | $0.15 |
| 10,000 | $1.50 |

Set **Max items** (and the run's maximum cost in the run options) to cap what a run can spend. The run stops when either limit is reached.

### Use cases

- **App review monitoring:** schedule a daily run sorted by newest and catch new 1-star reviews, bugs and complaints right after a release.
- **Competitor research:** compare what users praise and dislike in competing apps, many apps in one run.
- **Product feedback and sentiment analysis:** feed review text and ratings into your NLP, LLM or BI pipeline to find feature requests and pain points.
- **Release tracking:** group reviews by app version to see how each update landed.
- **Support quality:** see which reviews got a developer reply and how fast.

### Tips

- Paste **package names** (com.spotify.music) or **Google Play URLs**: the Actor reads the id from the URL.
- Use **Star rating** with **Newest** to follow only the 1- or 2-star reviews of your app.
- Reviews are listed per **language**: set Language (e.g. de) to get the reviews written in it. Country picks the Google Play store.
- Set **Max reviews per app** when you scrape many apps and want the same number from each.
- Popular apps have millions of reviews. Set **Max items** to what you need: you pay only for reviews saved.

### FAQ

#### Is it legal to scrape Google Play?

Google Play Reviews Scraper – App Reviews API collects only data that Google Play shows publicly to every visitor, and it leaves out personal data such as private profiles and contact details. Our Actors are ethical and do not extract private user data. Results could still contain personal data in titles or descriptions written by uploaders. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You are responsible for how you use the data.

#### Can I use it through an API?

Yes. Every Apify Actor has an API: start runs, pass input and read results over HTTP, or use the JavaScript and Python clients. See the **API** tab on the Actor page for ready-made examples.

#### Can I schedule runs and connect other apps?

Yes. Use Apify **Schedules** to run Google Play Reviews Scraper – App Reviews API every hour, day or week, and integrations (Make, Zapier, Google Sheets, webhooks and more) to send the results where you need them.

#### Why did I get fewer results than expected?

The run stops at **Max items** or at the run's maximum cost, whichever comes first. Google Play may also return fewer results for rare search terms. Duplicates across search terms are saved once. Check the run's `RUN_SUMMARY` record in the key-value store for the inputs that returned nothing.

#### What if it stops working?

Sites change. We run a daily check of our own and fix breakages quickly. If something looks wrong, open an issue in the **Issues** tab with the run link and we'll look at it.

#### How many reviews can I get per app?

Google Play lists reviews page by page, and the Actor follows the pages until Max items or Max reviews per app is reached or the app has no more reviews in the chosen language and star filter.

#### Does it include the reviewer's name or picture?

No. The output holds no reviewer identity: no name, picture, profile id or link. Each review has its own id so you can track it over time.

#### Why are some app versions empty?

Google Play does not show the app version for every review (for example when the reviewer's device did not report it), so the field is empty for those.

### Not included

No personal data: reviewer names, profile pictures, profile ids and links are left out. App details beyond the name and average rating (description, screenshots, installs) are not included.

### More Actors from us

- [AliExpress Search Scraper – Products & Prices](https://apify.com/unnoted/aliexpress-product-search)
- [BBB Scraper – Business Ratings & Accreditation](https://apify.com/unnoted/bbb-business-search)
- [Bilibili Scraper – Video Search & Stats API](https://apify.com/unnoted/bilibili-video-scraper)
- [Bumeran Jobs Scraper – LATAM Job Listings](https://apify.com/unnoted/bumeran-job-listings)
- [Foundit Jobs Scraper – India Job Listings API](https://apify.com/unnoted/foundit-job-listings)
- [Google Jobs Scraper – Job Listings API](https://apify.com/unnoted/google-jobs-listings)
- [Google Trends Scraper – Interest & Related Queries](https://apify.com/unnoted/google-trends-data)
- [Idealo Scraper – Price Comparison Data](https://apify.com/unnoted/idealo-price-search)
- [Kleinanzeigen Scraper – Listings & Prices](https://apify.com/unnoted/kleinanzeigen-listings-scraper)
- [Mercari Japan Scraper – Listings & Prices API](https://apify.com/unnoted/mercari-japan-search)
- [Resident Advisor Scraper – RA Event Listings](https://apify.com/unnoted/resident-advisor-events)
- [Sainsbury's Scraper – UK Grocery Prices](https://apify.com/unnoted/sainsburys-grocery-search)
- [Tokopedia Scraper – Product Search & Prices](https://apify.com/unnoted/tokopedia-product-search)
- [Workday Jobs Scraper – Any Careers Site](https://apify.com/unnoted/workday-jobs-scraper)
- [Yandex Maps Scraper – Places & Business Data](https://apify.com/unnoted/yandex-maps-places)

# Actor input Schema

## `appIds` (type: `array`):

Apps to get reviews for: package names (e.g. com.spotify.music) or Google Play app URLs (https://play.google.com/store/apps/details?id=…).

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

The order Google Play lists the reviews in. "Rating" lists the highest-rated reviews first.

## `starRating` (type: `string`):

Only reviews with this many stars.

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

Two-letter country code of the Google Play store (e.g. us, gb, de, in).

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

Two-letter language code (e.g. en, de, es). Google Play returns the reviews written in this language.

## `maxItemsPerApp` (type: `integer`):

Maximum number of reviews per app. Leave empty to share Max items evenly across the apps.

## `maxItems` (type: `integer`):

Maximum number of reviews in total. You pay only for reviews saved.

## Actor input object example

```json
{
  "appIds": [
    "com.spotify.music"
  ],
  "sort": "newest",
  "starRating": "any",
  "country": "us",
  "language": "en",
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

One item per review.

## `runSummary` (type: `string`):

Items saved, inputs done, and how complete each field was.

# 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 = {
    "appIds": [
        "com.spotify.music"
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("unnoted/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 = {
    "appIds": ["com.spotify.music"],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("unnoted/google-play-reviews-scraper").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 '{
  "appIds": [
    "com.spotify.music"
  ],
  "maxItems": 100
}' |
apify call unnoted/google-play-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unnoted/google-play-reviews-scraper"
        }
    }
}
```

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/8ehpf0S8Q2bimRUpY/builds/n1cgBxg3iO03hrjN7/openapi.json
