# Google Play Store Apps & Reviews Scraper (`trusted_tech_spot/google-play-store-apps-reviews-scraper`) Actor

Extract mobile app details, ratings, user reviews, developer contacts, installs count, and category rankings from Google Play Store.

- **URL**: https://apify.com/trusted_tech_spot/google-play-store-apps-reviews-scraper.md
- **Developed by:** [David Sandor](https://apify.com/trusted_tech_spot) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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 Store Apps & Reviews Scraper

> **High-speed, production-grade Google Play Store scraper.** Extract comprehensive Android app details, developer contact information (email, website, address), ratings distributions, category rankings, and authentic user reviews with pagination, sentiment filters, and AI / RAG tokenization.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com)
[![Pay-Per-Event](https://img.shields.io/badge/Pricing-Pay--Per--Event%20\($0.0015\)-green)](https://apify.com)
[![Node.js 20](https://img.shields.io/badge/Node.js-20-blue?logo=node.js)](https://nodejs.org)
[![Fast & Reliable](https://img.shields.io/badge/Speed-Instant%20Extraction-brightgreen)]()

***

### ⚡ Overview

The **Google Play Store Apps & Reviews Scraper** provides real-time access to the entire Android app catalog without requiring headless browsers, heavy Puppeteer overhead, or fragile browser sessions. It queries native Google Play endpoints with automated token pagination to capture deep app metadata and large volumes of user reviews at unbeatable speeds and lower compute costs.

Whether you are performing **competitor benchmarking**, **ASO (App Store Optimization) keyword analysis**, **customer sentiment research**, or **LLM/RAG training**, this Actor delivers clean, structured JSON in seconds.

***

### 🚀 Key Features

- **⚡ 1-Click Instant Run:** Pre-filled with `com.spotify.music`—click **Start** and receive structured data instantly without setup friction.
- **📱 Comprehensive App Metadata:** Extracts app title, package ID, developer name, verified developer email, developer website, physical address, privacy policy, category/genres, content rating, release date, last update timestamp, version, price, and currency.
- **⭐ Accurate Ratings & Stats:** Captures aggregate score, star rating distributions, verified install brackets (`1,000,000,000+`), and category rank (e.g. `#1 in Music & Audio`).
- **💬 Deep Reviews Pagination:** Extract dozens, hundreds, or thousands of user reviews with author names, profile avatars, star ratings (1–5), timestamps, helpfulness upvotes (`thumbsUpCount`), and official developer responses.
- **🔄 Flexible Sorting:** Sort reviews by **Helpfulness** (Most relevant), **Newest** (Latest updates/bugs), or **Rating**.
- **🌍 Global Localization:** Support for any language (`hl`) and country storefront (`gl`) to compare regional app store listings and localized pricing.
- **🧠 AI & RAG Ready:** Built-in semantic chunking and OpenAI token estimates (`tokenCount`, `ragChunks`, `markdown`) to ingest directly into LangChain, LlamaIndex, or vector databases (Pinecone, Weaviate, Qdrant).
- **💸 Cost-Effective Pay-Per-Event:** Only pay **$0.0015** per extracted app with all collected reviews.

***

### 📥 Input Parameters

| Parameter | Type | Default | Description |
| :--- | :---: | :---: | :--- |
| `appIdOrUrl` | String | `com.spotify.music` | **App ID / Package Name** (e.g., `com.spotify.music`, `com.whatsapp`, `org.telegram.messenger`) or full Play Store URL. |
| `maxReviews` | Integer | `20` | Total number of user reviews to harvest. Set higher (e.g., `100`, `500`) for deep sentiment audits. |
| `sort` | String | `HELPFULNESS` | Review sorting order: `HELPFULNESS`, `NEWEST`, or `RATING`. |
| `language` | String | `en` | ISO 639-1 language code (`en`, `es`, `de`, `fr`, `ja`, etc.). |
| `country` | String | `us` | Two-letter country store code (`us`, `gb`, `de`, `in`, `br`, etc.). |
| `includeKeywords` | String | `""` | Comma-separated keywords to filter reviews (e.g. `crash, bug, subscription`). |
| `excludeKeywords` | String | `""` | Comma-separated keywords to omit reviews. |
| `enableRagEnrichment`| Boolean | `true` | Automatically calculate OpenAI token counts and build semantic chunks for LLMs. |
| `outputFormat` | String | `JSON` | Preferred output representation (`JSON`, `Markdown`, `Flat`). |

***

### 📤 Output Dataset Format

Every run outputs a rich, schema-validated JSON object saved to the default Apify Dataset:

```json
{
  "appId": "com.spotify.music",
  "title": "Spotify: Music and Podcasts",
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music&hl=en&gl=us",
  "developer": "Spotify AB",
  "developerEmail": "support@spotify.com",
  "developerWebsite": "https://www.spotify.com",
  "developerAddress": "Regeringsgatan 19, 111 53 Stockholm, Sweden",
  "privacyPolicy": "https://www.spotify.com/legal/privacy-policy/",
  "score": 4.35,
  "scoreText": "4.3",
  "ratingsCount": 36565779,
  "reviewsCount": 36565779,
  "installs": "1,000,000,000+",
  "minInstalls": 1000000000,
  "price": 0,
  "currency": "USD",
  "free": true,
  "genres": [
    "Music & Audio"
  ],
  "genreId": "MUSIC_AND_AUDIO",
  "categoryRanking": "top free music & audio #1",
  "contentRating": "Teen",
  "released": "May 27, 2014",
  "updated": "Oct 23, 2026",
  "version": "Varies with device",
  "summary": "Listen to songs, play podcasts, create playlists and discover music you'll love",
  "icon": "https://play-lh.googleusercontent.com/IzQgYCcnCFCD08GR...",
  "headerImage": "https://play-lh.googleusercontent.com/WdedaGD6EAXZgy...",
  "reviewsTotalHarvested": 20,
  "userReviews": [
    {
      "id": "31dd5f9b-bd5f-4e2f-9465-71f707e14285",
      "author": "Marisa M",
      "userAvatar": "https://play-lh.googleusercontent.com/a-/ALV-Uj...",
      "score": 2,
      "text": "I don't know what you guys did in the last update, but now when I listen to any podcast, it plays the list opposite...",
      "date": "2026-09-18T06:24:22.000Z",
      "thumbsUpCount": 469,
      "developerReply": {
        "text": "Hi! For more information, visit support.spotify.com...",
        "date": "2026-09-18T15:50:44.000Z"
      }
    }
  ],
  "ragMetadata": {
    "tokenCount": 512,
    "semanticChunks": [ ... ]
  },
  "scrapedAt": "2026-10-31T00:30:54.000Z"
}
```

***

### 🏆 Comparison vs Alternative Scrapers

| Feature / Metric | Google Play Store Apps & Reviews Scraper | Generic Browser/Puppeteer Scrapers | Traditional REST APIs |
| :--- | :---: | :---: | :---: |
| **Execution Speed** | **< 3 seconds** | 30–60 seconds | 5–10 seconds |
| **Memory Footprint**| **512 MB** | 2048 MB - 4096 MB | 512 MB |
| **Developer Contact Info** | **Full (Email, Site, Address)** | Partial / Fragile | Often omitted |
| **Reviews Pagination** | **Automated RPC Batches** | Slow infinite scroll | Rate-limited |
| **Developer Replies** | **Included** | Rarely parsed | Missing |
| **RAG / AI Embeddings** | **Built-in Chunking & Tokens** | Not supported | Not supported |
| **Pricing Model** | **Pay-Per-Event ($0.0015)** | High compute runtime fees | Monthly subscription |

***

### 🔌 Integrations & Workflow Automation

#### 1. Make / Integromat & Zapier

- Trigger automated alerts whenever an app’s rating drops below 4.0.
- Automatically route 1-star and 2-star reviews into **Zendesk**, **Jira**, or **Slack** for instant customer support response.

#### 2. LangChain & LlamaIndex (AI Agents)

- Connect Google Play user reviews to custom GPT agents for automated competitor product audits, feature request extraction, and sentiment tracking.

#### 3. Google Sheets & Airtable

- Sync periodic app rank, install bracket, and review counts into live dashboards via Apify API webhooks.

***

### ❓ Frequently Asked Questions (FAQ)

#### Can I provide a full Google Play URL or just the package name?

Both! You can paste `https://play.google.com/store/apps/details?id=com.spotify.music` or simply `com.spotify.music`. The Actor will automatically normalize and validate the identifier.

#### Does this Actor require proxies?

No. The lightweight HTTP requests bypass heavy browser fingerprinting checks and execute reliably on standard Apify proxy infrastructure.

#### How do I scrape reviews from other countries or languages?

Specify the `country` parameter (e.g. `gb`, `de`, `fr`, `jp`) and `language` parameter (e.g. `en`, `de`, `fr`, `ja`). Google Play serves localized storefront descriptions, local user reviews, and regional currency pricing.

***

### 📞 Support & Customization

Need specialized enterprise scraping, bulk app batch processing, or customized webhook integrations?

- **Email:** contact@trustedtechspot.com
- **Apify Store:** [Explore Actor Catalog](https://apify.com/store)

# Actor input Schema

## `appIdOrUrl` (type: `string`):

Android package name (e.g. 'com.spotify.music' or 'com.whatsapp') or full Google Play Store URL. Click Start to run immediately!

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

Number of recent/relevant user reviews to collect for this app (default: 20)

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

Sort order for user reviews (Helpful / Most Relevant, Newest, or Rating)

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

ISO 639-1 language code (e.g., 'en', 'es', 'de', 'fr', 'pt', 'ja')

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

Two-letter country code for localized store data and pricing (e.g., 'us', 'gb', 'de', 'fr', 'in', 'br')

## `includeKeywords` (type: `string`):

Filter user reviews to only include items containing these comma-separated keywords

## `excludeKeywords` (type: `string`):

Filter out user reviews containing these comma-separated keywords

## `enableRagEnrichment` (type: `boolean`):

Automatically compute OpenAI token counts and generate semantic vector chunks for RAG pipelines

## `outputFormat` (type: `string`):

Format results for preferred downstream consumer (e.g. JSON, Markdown, Flat)

## Actor input object example

```json
{
  "appIdOrUrl": "com.spotify.music",
  "maxReviews": 20,
  "sort": "HELPFULNESS",
  "language": "en",
  "country": "us",
  "includeKeywords": "",
  "excludeKeywords": "",
  "enableRagEnrichment": true,
  "outputFormat": "JSON"
}
```

# Actor output Schema

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

Structured output and extracted data from Fast Google Maps & Places Business Scraper

# 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 = {
    "appIdOrUrl": "com.spotify.music",
    "maxReviews": 20,
    "sort": "HELPFULNESS",
    "language": "en",
    "country": "us",
    "includeKeywords": "",
    "excludeKeywords": "",
    "enableRagEnrichment": true,
    "outputFormat": "JSON"
};

// Run the Actor and wait for it to finish
const run = await client.actor("trusted_tech_spot/google-play-store-apps-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 = {
    "appIdOrUrl": "com.spotify.music",
    "maxReviews": 20,
    "sort": "HELPFULNESS",
    "language": "en",
    "country": "us",
    "includeKeywords": "",
    "excludeKeywords": "",
    "enableRagEnrichment": True,
    "outputFormat": "JSON",
}

# Run the Actor and wait for it to finish
run = client.actor("trusted_tech_spot/google-play-store-apps-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 '{
  "appIdOrUrl": "com.spotify.music",
  "maxReviews": 20,
  "sort": "HELPFULNESS",
  "language": "en",
  "country": "us",
  "includeKeywords": "",
  "excludeKeywords": "",
  "enableRagEnrichment": true,
  "outputFormat": "JSON"
}' |
apify call trusted_tech_spot/google-play-store-apps-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,trusted_tech_spot/google-play-store-apps-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/gexD4TDc8gh0crx4R/builds/crriaElwoU13CVfn5/openapi.json
