# Google Play Search - Keyword Search & Full Detail (`ryyos/google-play-search-scraper`) Actor

\[$1.5/1000] Search Google Play Store by keyword across apps, games, movies, TV shows, books, comics and audiobooks, then get full detail per result - the same depth as this project's dedicated per-catalog actors (description, media, ratings, real reviews, price, and every type-specific field).

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

## Pricing

from $1.50 / 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.

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

Search Google Play Store by keyword - across apps, games, movies, TV shows, books, comics and audiobooks in one run - and get full detail on every result, not just the title and icon you'd see on the results page.

### What does Google Play Search Scraper do?

This Actor runs your keywords against [Google Play Store's](https://play.google.com/store) own search, the same search behind the box at the top of the Play Store app and website, then opens every result it finds to pull complete detail: full description, every image, the rating breakdown, real user reviews, price, and every field specific to that content type (permissions for apps, cast and pricing for movies/TV, ISBN and author bio for books, narrator and duration for audiobooks). One search actor covers what would otherwise take five separate lookups. Run it directly from the [Apify Console](https://console.apify.com), on a schedule, or through the [Apify API](https://docs.apify.com/api/v2) and pull results via integrations with Make, Zapier, Google Sheets and more.

### Why use Google Play Search Scraper?

- **Competitive discovery** - find every app, book or show matching a keyword or brand name, not just the ones you already know to look for.
- **Brand monitoring** - search your own product name and see exactly what shows up, in what order, across every content type Google Play sells.
- **Content research** - pull full detail on every movie, book or audiobook matching a topic or franchise in one pass.
- **ASO and merchandising** - see which apps actually rank for a keyword, with full metadata to benchmark against.

### How to use Google Play Search Scraper

1. Open the Actor's **Input** tab.
2. Enter one or more search keywords.
3. Optionally narrow **content types** (apps, movies, TV, books, audiobooks) - leave empty for all 5.
4. Click **Start** and watch results land in the **Output** tab as they're scraped.
5. Export the dataset as JSON, CSV, Excel, HTML or via the API.

### Input

| Field | Description | Default |
|---|---|---|
| `queries` | Keywords/phrases to search for. | required |
| `contentTypes` | Which content types to keep (`apps`, `movies`, `tv`, `books`, `audiobooks`). Leave empty for all 5. | all 5 |
| `maxResultsPerQuery` | Cap on results detail-scraped per keyword, across all selected content types combined. `0` = take Google's whole server-rendered batch. | `50` |
| `maxReviewsPerItem` | Cap on reviews kept per app/book/audiobook result. Ignored for movies/TV (no reviews on Play Store). | `50` |
| `maxEpisodesPerShow` | Cap on episodes kept per TV show result. Ignored for every other content type. | `50` |
| `country` | Two-letter Play Store storefront country code (`gl`), e.g. `us`, `gb`, `id`. | `us` |
| `language` | Language code for scraped text (`hl`), e.g. `en`, `id`, `ja`. | `en` |
| `proxyConfiguration` | Apify Proxy settings. Not required (no anti-bot encountered), but recommended for large runs. | Apify Proxy on |

### Output

Each dataset item is one search result, shaped exactly like the matching item from this project's own per-catalog actors, plus 4 search-context fields. An app result, for example:

```json
{
  "searchQuery": "python",
  "searchRank": 1,
  "searchContentType": "apps",
  "thumbnailUrl": "https://play-lh.googleusercontent.com/...",
  "packageId": "org.termuxstudio.python_app",
  "title": "Python",
  "ratingValue": 4.8,
  "reviews": [ { "author": "Jane Doe", "rating": 5, "text": "Works great." } ],
  "url": "https://play.google.com/store/apps/details?id=org.termuxstudio.python_app&hl=en&gl=us"
}
```

A movie result for the same run keeps the movie actor's own shape (`id`, `cast`, `directors`, `offers`, ...), a book result keeps the books actor's own shape (`bookId`, `isbn`, `authorBio`, ...), and so on - only the 4 search-context fields below are added on top of whichever shape matches the result's content type.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel from the **Output** tab or the API.

### Data table

| Field | Description |
|---|---|
| `searchQuery` | Which input keyword found this result |
| `searchRank` | Position in Google's own search ranking for that keyword (1 = top result) |
| `searchContentType` | `apps`, `movies`, `tv`, `books` or `audiobooks` |
| `thumbnailUrl` | Icon/poster/cover, whichever image field this content type has |
| everything else | The exact same fields as this project's `google-play-apps-scraper`, `google-play-movies-tv-scraper`, `google-play-books-scraper` or `google-play-audiobooks-scraper`, depending on `searchContentType` - see each of those Actors' own README for the full field list per type |

### Pricing / Cost estimation

This Actor is priced at **$1.5 per 1,000 results scraped** (pay-per-result), matching this project's other Google Play actors. Apify's free plan includes monthly platform credit, so small test runs cost nothing.

### Tips or advanced options

- Google Play's own search only exposes 3 result verticals server-side: apps, movies+TV combined, and books+audiobooks combined. Requesting just `tv` (or just `audiobooks`) still queries the combined vertical and filters afterward - it costs the same one request as requesting both halves.
- Each vertical returns one fixed batch of results per keyword (roughly 30 for apps, 40-60 for movies+TV, ~40 for books+audiobooks) - `maxResultsPerQuery` caps how much of that batch gets detail-scraped, it does not paginate beyond it.
- Results are interleaved fairly across content types before the cap is applied, so a low `maxResultsPerQuery` with multiple content types selected still surfaces a mix rather than being dominated by whichever type Google happens to return the most of.

### FAQ, disclaimers and support

This Actor only extracts publicly visible data from Google Play Store pages that anyone can view in a browser without logging in - no login wall, CAPTCHA or paid content is accessed or bypassed. Note that Google Play's `robots.txt` excludes automated access to its search page specifically (though not to the app/movie/book/audiobook pages this Actor also visits); this Actor is used with that noted and accepted. Reviews returned are the batch Google Play itself renders on each result's own page. Google Play's own layout can change over time, which may require an update to this Actor - please report any issue via the Issues tab. Need a custom scraper or a feature this Actor doesn't cover? Reach out and a tailored solution can be built.

# Actor input Schema

## `queries` (type: `array`):

One or more keywords/phrases to search Google Play for, exactly as typed into the Play Store's own search box.

## `contentTypes` (type: `array`):

Which Google Play content types to keep from the search results. Leave empty to include all 5. Note: Google's search endpoint only exposes 3 verticals (apps / movies+tv / books+audiobooks) - requesting just 'tv' still queries the movies vertical, then keeps only the TV-show results from that response, so it costs the same one request as requesting 'movies' too.

## `maxResultsPerQuery` (type: `integer`):

Upper bound on how many search results (across all selected content types combined) to detail-scrape per keyword. Set to 0 for no cap - Google itself server-renders one fixed batch per vertical per query (typically ~30 for apps, ~60 combined for movies+TV, ~40 combined for books+audiobooks), so 0 just means 'take that whole batch', not unlimited pagination.

## `maxReviewsPerItem` (type: `integer`):

Upper bound on featured reviews kept per app/book/audiobook result (movies and TV shows have no reviews on Google Play - this is ignored for those). Set to 0 to skip review extraction entirely.

## `maxEpisodesPerShow` (type: `integer`):

Upper bound on episodes kept per TV show result. Only affects the single season Google Play's own page renders by default (see the TV Scraper's own known limitation) - ignored for every other content type.

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

Two-letter Google Play storefront country code, e.g. 'us', 'gb', 'id', 'jp'. Affects search results, pricing, availability and ranking.

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

Language code for the scraped text (title, description, reviews UI), e.g. 'en', 'id', 'ja'.

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

play.google.com did not require proxies during testing (no CAPTCHA/anti-bot challenge on search or detail pages), but Apify Proxy is recommended for large runs to keep your IP healthy given the request volume of many keywords.

## Actor input object example

```json
{
  "queries": [
    "python",
    "the matrix",
    "dune"
  ],
  "contentTypes": [
    "apps",
    "movies",
    "tv",
    "books",
    "audiobooks"
  ],
  "maxResultsPerQuery": 50,
  "maxReviewsPerItem": 50,
  "maxEpisodesPerShow": 50,
  "country": "us",
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `runInfo` (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 = {
    "queries": [
        "python",
        "the matrix",
        "dune"
    ],
    "contentTypes": [
        "apps",
        "movies",
        "tv",
        "books",
        "audiobooks"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ryyos/google-play-search-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 = {
    "queries": [
        "python",
        "the matrix",
        "dune",
    ],
    "contentTypes": [
        "apps",
        "movies",
        "tv",
        "books",
        "audiobooks",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("ryyos/google-play-search-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 '{
  "queries": [
    "python",
    "the matrix",
    "dune"
  ],
  "contentTypes": [
    "apps",
    "movies",
    "tv",
    "books",
    "audiobooks"
  ]
}' |
apify call ryyos/google-play-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ryyos/google-play-search-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/R4e9t9wMB4vF92WNG/builds/t07Kw9N9bnhjij0Xx/openapi.json
