# Google Play Reviews Fast (`realai_pl/google-play-reviews-fast`) Actor

Fast Google Play review extraction without login, a browser, or a configured proxy. Batch apps, filter by rating, include developer replies, and pay only for delivered reviews.

- **URL**: https://apify.com/realai\_pl/google-play-reviews-fast.md
- **Developed by:** [Dawid Mańkowski](https://apify.com/realai_pl) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.05 / 1,000 delivered google play reviews

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/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

## Google Play Reviews Fast

Export public Google Play app reviews as structured data. Compare feedback across apps, filter by star rating and locale, and use the results in spreadsheets, support workflows, or your own API integration. The Actor runs without a browser or configured proxy.

### Common uses

- Track low-star feedback for an Android app by language and country.
- Compare complaints across competing apps using the same dataset format.
- Export review rows for spreadsheet analysis or scheduled API workflows.

This is a batch extractor. Each run fetches a fresh set of reviews; it does not remember the previous run or return only new reviews.

### What you get

- Review ID, star rating, text, publication time, and thumbs-up count
- App version and developer reply when Google Play provides them
- App ID, language, country, and collection time
- Optional reviewer name and image, disabled by default
- A `RUN_SUMMARY` record with counts and errors for each run

Results depend on what Google Play makes available for the selected app, language, country, and sort order. A request for 500 reviews may return fewer.

### Run it

Enter a Google Play package ID, such as `com.spotify.music`, or an app URL in **Apps**. You can mix up to 50 unique apps in one run. Set **Maximum reviews per app** to 1–5,000, then choose sort order, language, country, and an optional exact star rating.

Example input:

```json
{
  "apps": ["com.spotify.music", "com.duolingo"],
  "maxReviewsPerApp": 100,
  "sort": "newest",
  "rating": 1,
  "language": "en",
  "country": "us",
  "includeReviewerDetails": false,
  "concurrency": 5
}
```

`rating: 0` includes all star ratings. The Actor can process 1–10 apps concurrently. If one app fails, the others can still return results; check `RUN_SUMMARY.errors` after the run.

### Output

The default dataset contains one JSON object per delivered review. This is an illustrative example of the format:

```json
{
  "store": "google-play",
  "appId": "com.spotify.music",
  "reviewId": "example-review-id",
  "rating": 4,
  "text": "Example review text",
  "thumbsUpCount": 2,
  "appVersion": "1.0.0",
  "publishedAt": "2026-09-01T12:00:00",
  "hasDeveloperReply": false,
  "developerReply": null,
  "developerRepliedAt": null,
  "language": "en",
  "country": "us",
  "sourceUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=US",
  "collectedAt": "2026-09-23T12:00:00+00:00"
}
```

`sourceUrl` links to the app listing, not to an individual review. Fields that Google Play does not provide can be `null`. Reviewer fields appear only when **Include reviewer name and image** is enabled.

The Actor also saves `RUN_SUMMARY` in its default key-value store. It reports requested and successful apps, fetched and delivered review counts, errors, and whether the maximum-charge limit stopped output.

### Use the API

You can start a run from code with the [Apify Run Actor API](https://docs.apify.com/api/v2/act-runs-post). Send the same JSON input shown above. Read the run's `defaultDatasetId`, then fetch its items with the [Dataset Items API](https://docs.apify.com/api/v2/dataset-items-get). Pass your API token in the `Authorization: Bearer` header.

### Pricing and limits

This Actor uses pay-per-event pricing: one `review` event for each review the Actor delivers. The current price and any plan discounts are shown on its Apify Store page. When a run reaches its maximum-charge limit, the Actor stops delivering reviews and records that in `RUN_SUMMARY`. The price displayed by Apify when you start a run is authoritative.

### Data use

Reviews are public user-generated content. Reviewer details are off by default. You are responsible for your own lawful purpose, retention policy, and downstream processing. Google Play may change availability or rate limits; this Actor is not affiliated with Google.

# Actor input Schema

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

Google Play package IDs or app URLs. Up to 50 unique apps per run.

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

Maximum number of reviews to collect from each app.

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

Ordering used by Google Play.

## `rating` (type: `integer`):

0 means all ratings. Otherwise return only 1–5 star reviews.

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

Google Play language code, for example en, de, pl.

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

Two-letter Google Play country code, for example us, de, pl.

## `includeReviewerDetails` (type: `boolean`):

Off by default to minimize personal-data collection.

## `concurrency` (type: `integer`):

How many apps to fetch in parallel. Higher is faster but can increase upstream throttling risk.

## Actor input object example

```json
{
  "apps": [
    "com.spotify.music"
  ],
  "maxReviewsPerApp": 100,
  "sort": "newest",
  "rating": 0,
  "language": "en",
  "country": "us",
  "includeReviewerDetails": false,
  "concurrency": 5
}
```

# Actor output Schema

## `reviews` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("realai_pl/google-play-reviews-fast").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("realai_pl/google-play-reviews-fast").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 '{}' |
apify call realai_pl/google-play-reviews-fast --silent --output-dataset

```

## MCP server setup

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

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/MgRQdphexQBpeubgA/builds/ndq2fjYcAIwd5PMKq/openapi.json
