# Google Play Review Tracker (`arched_friend/google-play-review-tracker`) Actor

Track Google Play reviews for any Android app and country. Catch every new review as it lands, watch competitor apps, filter by rating or keyword, and see which reviews the developer answered.

- **URL**: https://apify.com/arched\_friend/google-play-review-tracker.md
- **Developed by:** [Peach O](https://apify.com/arched_friend) (community)
- **Categories:** Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 app checkeds

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?

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 Review Tracker: Never Miss a Review

Track what Android users say about your app, or anyone else's. Pull every review with its rating, version and developer reply, then run it again tomorrow and get only what is new.

Built for product teams, support leads and app marketers who need to see a one star review the day it lands, not at the end of the sprint.

### How it works

```mermaid
flowchart LR
    A["Package ids<br/>com.spotify.music"] --> B["Google Play"]
    C["Country stores<br/>us, gb, de"] --> B
    B --> D["App details<br/>name, average, total ratings"]
    B --> E["Reviews, paged"]
    E --> F{"Filters<br/>rating, keyword, date"}
    F --> G{"Seen before?"}
    G -->|no| H[("New review rows")]
    G -->|yes| I["Skipped"]
```

Every app is checked in every country you list, so one run can cover a global launch.

### Built for

- **Product teams** watching complaints against the version that just shipped
- **Support leads** catching refund and crash reports before they pile up
- **App marketers** tracking rating trends through a campaign
- **Competitor research** reading what users dislike about a rival app

### Input

```json
{
  "apps": ["com.spotify.music", "com.netflix.mediaclient"],
  "countries": ["us", "gb"],
  "maxReviewsPerApp": 200,
  "sortBy": "newest",
  "onlyNewReviews": true
}
```

| Setting | What it does |
| --- | --- |
| `apps` | Package ids or Google Play URLs |
| `countries` | Every country store to check |
| `onlyNewReviews` | Return only reviews not seen on a previous run |
| `minRating` / `maxRating` | Narrow to praise or to complaints |
| `searchQuery` | Keep only reviews mentioning a word such as crash |
| `since` | Ignore anything older than a date |

### Output

```json
{
  "reviewId": "124ee18b-bcd3-4922-a8bf-77803129e901",
  "appId": "com.spotify.music",
  "appName": "Spotify: Music and Podcasts",
  "developer": "Spotify AB",
  "country": "us",
  "author": "Rohit Kumar",
  "rating": 5,
  "text": "best all songs listening",
  "thumbsUp": 0,
  "appVersion": "9.1.78.2218",
  "reviewedAt": "2026-09-03T08:06:18.000Z",
  "developerReply": null,
  "appAverageRating": 4.34,
  "appRatingCount": 36240018,
  "playStoreUrl": "https://play.google.com/store/apps/details?id=com.spotify.music&gl=us"
}
```

`appVersion` is the field most teams miss. Filter on it and you can see whether a release made ratings better or worse.

### Watch complaints only

```json
{
  "apps": ["com.your.app"],
  "countries": ["us", "gb", "de"],
  "minRating": 1,
  "maxRating": 2,
  "onlyNewReviews": true
}
```

Schedule that daily and each run returns the new one and two star reviews across all three stores, and nothing else.

### Run it as an API

```bash
curl -X POST "https://api.apify.com/v2/acts/arched_friend~google-play-review-tracker/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "apps": ["com.spotify.music"],
    "countries": ["us"],
    "maxReviewsPerApp": 50,
    "searchQuery": "crash"
  }'
```

### Pricing

You pay $0.02 for each app and country pair checked, whatever the review count. Checking one app in three countries is three checks.

| Watching 5 apps in 3 countries daily | Monthly cost |
| --- | --- |
| Reading the stores by hand | roughly 15 hours |
| App review monitoring suites | $50 to $300 per month |
| This Actor | $9 per month |

### Common questions

**Why does the same app show different reviews per country?** Because Google serves a different review pool per store. That is why country is its own field on every row.

**Does it catch developer replies?** Yes. `developerReply` and `developerRepliedAt` are filled in when the developer has answered, so you can spot reviews still waiting on a response.

**How does it know what is new?** It remembers every review id it has returned and compares the next run against that list, so scheduled runs stay short.

### Related products

- **App Store Review Tracker** for the same monitoring on Apple's store, so you cover both platforms
- **Google Maps Lead Finder** to find local businesses behind the apps
- **Website Lead Extractor** to pull contact details for a developer
- **Tech Stack Checker** to see what an app maker runs on the web

# Actor input Schema

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

Package ids such as com.spotify.music, or full Google Play URLs, one per line.

## `countries` (type: `array`):

Two letter country codes to check, one per line. Each app is checked in every country listed.

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

Two letter language code for the reviews and app details.

## `sortBy` (type: `string`):

Which reviews Google returns first.

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

How many reviews to pull for each app and country pair.

## `onlyNewReviews` (type: `boolean`):

Remember every review id across runs and return only the ones that appeared since last time. Turn this on for scheduled monitoring.

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

Keep only reviews rated at least this high.

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

Keep only reviews rated at most this high. Set both to 2 to watch complaints only.

## `searchQuery` (type: `string`):

Keep only reviews whose text contains this word, for example crash or refund.

## `since` (type: `string`):

A date such as 2026-08-01. Reviews older than this are dropped.

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

Recommended when checking many apps or countries in one run.

## Actor input object example

```json
{
  "apps": [
    "com.spotify.music"
  ],
  "countries": [
    "us"
  ],
  "language": "en",
  "sortBy": "newest",
  "maxReviewsPerApp": 200,
  "onlyNewReviews": false,
  "minRating": 1,
  "maxRating": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

One row per review, with rating, text, author, app version and any developer reply.

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

Per app rating breakdown, negative review counts and the store average at the time of the run.

# 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": [
        "com.spotify.music"
    ],
    "countries": [
        "us"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("arched_friend/google-play-review-tracker").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": ["com.spotify.music"],
    "countries": ["us"],
}

# Run the Actor and wait for it to finish
run = client.actor("arched_friend/google-play-review-tracker").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 '{
  "apps": [
    "com.spotify.music"
  ],
  "countries": [
    "us"
  ]
}' |
apify call arched_friend/google-play-review-tracker --silent --output-dataset

```

## MCP server setup

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

```

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/EsYnESAMaLZLNaqqe/builds/wxhOGUXSZNhZyjfh9/openapi.json
