# Google Play Similar Apps Scraper (`googleapi/google-play-similar-apps-scraper`) Actor

Collect public related and similar-app recommendations from Google Play listings.

- **URL**: https://apify.com/googleapi/google-play-similar-apps-scraper.md
- **Developed by:** [Google API](https://apify.com/googleapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 this Actor does

Google Play Similar Apps Scraper collects app recommendations shown in the **Similar apps** section of public Google Play listings. Each dataset row links one recommended app to the source app whose page displayed it. Featured apps and “More by developer” cards are not included.

Use package IDs, public Google Play URLs, or search terms to choose source apps. Results reflect the Similar apps shelf visible for the selected market and at the time of the run.

### Input

1. Open the Actor's Input tab.
2. Enter one or more app package IDs, public Google Play URLs, or search terms.
3. Set `maxSimilar` to limit recommendations per source app and `maxItems` to limit total rows.
4. Run the Actor and view or download the dataset.

```json
{"appId":"com.google.android.apps.maps","maxSimilar":6}
```

```json
{"searchTerms":["navigation","travel maps"],"maxApps":8,"maxTargets":12,"maxItems":100}
```

| Input | Description | Default |
|---|---|---:|
| `appId` / `appIds` | One or more source app package IDs. | — |
| `startUrls` | Public app, search, or category pages. `sourceUrls`, `urls`, and `url` are aliases. | — |
| `searchTerm` / `searchTerms` | Search terms used to find source apps. | — |
| `maxSimilar` | Maximum recommendations read from each source app’s Similar apps shelf (1–100). | 20 |
| `maxApps` / `maxTargets` | Maximum apps discovered per search and source pages processed. | 20 / 10 |
| `maxItems` | Maximum recommendation records across the run (1–1,000). `maxResults` is an alias. | 200 |
| `includeSimilarAppDetails` | Visit recommended apps’ public listings for additional details. | `false` |
| `maxDetailApps` | Maximum recommended app pages to visit when details are enabled (1–100). | 20 |
| `deduplicate` | Keep one row per source and recommended-app pair. | `true` |
| `locale` / `language` / `country` | Select the Google Play storefront and language. `location` is a country alias. | — |
| `page` / `maxPages` | Starting source page and maximum pages to follow for search/category URLs. | 1 / 10 |

Results reflect the Similar apps cards visible for the selected market. Enabling app details adds page visits and may increase run time.

### Dataset output

Each record contains the source app ID and title, recommended app ID and title, visible developer and rating text, app link, relationship type, and the card's order in the Similar apps shelf. The `rank` value is only shelf order; it is not an overall popularity score.

When detail fetching is enabled, available fields from the recommended app's own listing may include its description, category, rating and rating counts, install label, update text, price, screenshots, data-safety summary, and public developer links.

```json
{
  "sourceAppId": "com.example.source",
  "sourceAppTitle": "Example Source App",
  "similarAppId": "com.example.recommended",
  "similarAppTitle": "Example Recommended App",
  "similarAppDeveloper": "Example Publisher",
  "similarAppUrl": "https://play.google.com/store/apps/details?id=com.example.recommended",
  "similarAppRatingText": "Rating text shown on card",
  "relationship": "similarApp",
  "rank": 1
}
```

Optional values appear only when they are available on the source page. Card rating text is preserved as displayed; a numeric rating is not inferred from it. Dataset results can be downloaded in JSON, CSV, Excel, or another format supported by Apify.

### Cost, coverage, and responsible use

Check the Actor's Pricing tab for current Actor and Apify platform charges. Detail fetching adds page requests, so leave it disabled when card-level recommendations are sufficient.

Google Play may vary recommendation shelves by market and page context. The Actor reads publicly available listing pages and does not access private account data or bypass access controls. Use results in accordance with Google Play's terms and applicable laws.

# Actor input Schema

## `appId` (type: `string`):

Google Play package ID to inspect as a source app.

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

Package IDs for several source app listings.

## `startUrls` (type: `array`):

Public HTTPS Google Play app-detail, search, or category pages.

## `sourceUrls` (type: `array`):

Compatibility alias for a list of public Google Play URLs.

## `urls` (type: `array`):

Compatibility alias for a list of public Google Play URLs.

## `url` (type: `string`):

Compatibility alias for one public Google Play URL.

## `searchTerm` (type: `string`):

Discover app listings from the public Google Play app-search page.

## `searchTerms` (type: `array`):

Discover app listings from up to 20 public Google Play searches.

## `maxApps` (type: `integer`):

Maximum distinct app listings discovered from each search source.

## `maxTargets` (type: `integer`):

Maximum source app-detail pages processed, including apps discovered from search pages.

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

Global limit on similar-app records across all source apps.

## `maxResults` (type: `integer`):

Compatibility alias for maxItems.

## `page` (type: `integer`):

One-based page to begin processing. The Actor follows only next-page links present in the public source; Google Play currently may expose no next link.

## `maxPages` (type: `integer`):

Maximum pages followed per search/category URL, including pages traversed to reach the starting page.

## `maxSimilar` (type: `integer`):

Maximum distinct cards read from each source app's Similar apps shelf.

## `deduplicate` (type: `boolean`):

Keep only one record for each source-app and recommended-app package-ID pair.

## `includeSimilarAppDetails` (type: `boolean`):

Optionally fetch each recommended app's public listing to add its description, screenshots, rating distribution, data-safety summary, and developer links. Disabled by default to avoid extra page requests.

## `maxDetailApps` (type: `integer`):

Global cap on additional recommended-app pages fetched when detail enrichment is enabled.

## `locale` (type: `string`):

Google Play language-country locale used for generated page URLs, for example en-US.

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

Optional two-letter language override. Must agree with locale when both are provided.

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

Optional two-letter country override. Must agree with locale when both are provided.

## `location` (type: `string`):

Compatibility alias for country.

## `requestTimeoutSecs` (type: `integer`):

Maximum seconds per public Google Play request.

## `requestTimeoutMs` (type: `integer`):

Compatibility alias for requestTimeoutSecs, in milliseconds.

## `timeoutSecs` (type: `integer`):

Compatibility alias for requestTimeoutSecs.

## `requestDelayMs` (type: `integer`):

Minimum delay before every later public page request.

## `maxRequestRetries` (type: `integer`):

Finite retries for transient network and server failures.

## `maxResponseBytes` (type: `integer`):

Maximum HTML bytes accepted from any page.

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

Optional active Apify Proxy configuration. No proxy is selected automatically.

## Actor input object example

```json
{
  "maxApps": 20,
  "maxTargets": 10,
  "maxItems": 200,
  "page": 1,
  "maxPages": 10,
  "maxSimilar": 20,
  "deduplicate": true,
  "includeSimilarAppDetails": false,
  "maxDetailApps": 20,
  "requestTimeoutSecs": 30,
  "requestDelayMs": 500,
  "maxRequestRetries": 1,
  "maxResponseBytes": 2500000
}
```

# Actor output Schema

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

No description

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

No description

## `runHealth` (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("googleapi/google-play-similar-apps-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 = {}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,googleapi/google-play-similar-apps-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/55ZroOviklmv4mAwe/builds/sB5jePB9JRHI5YCMs/openapi.json
