# App Store + Google Play Scraper (`novashieldai/app-store-scraper`) Actor

Dual-platform app store scraper. Search apps, get details, reviews, and developer info from Apple App Store and Google Play Store.

- **URL**: https://apify.com/novashieldai/app-store-scraper.md
- **Developed by:** [Ali haydar Karadaş](https://apify.com/novashieldai) (community)
- **Categories:** Developer tools, Marketing
- **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/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## App Store and Google Play Scraper

App Store and Google Play Scraper extracts app listings, reviews, and developer profiles from both Apple App Store and Google Play in a single actor. Built for mobile app market research, competitor tracking, and review monitoring at scale.

### What does App Store and Google Play Scraper do?

This actor covers both major app stores with four modes of operation. **Search** finds apps by keyword, with optional category and country filters. **Detail** pulls the full profile for a specific app -- description, screenshots, version history, ratings, and more. **Reviews** collects user reviews for any app, including rating, review text, app version, and date. **Developer** lists all apps published by a specific developer.

You can target Apple App Store, Google Play, or both. Country codes let you localize results to any market -- US, UK, Germany, Japan, or anywhere else the stores operate. Pagination is built in, so you can pull large result sets across multiple pages.

The output is normalized across both platforms, meaning the same field names and data structure regardless of whether the data came from Apple or Google. That makes cross-platform analysis straightforward.

### What data do you get?

**App search and details:**
- **app_id**, **name**, **developer**, **developer_id**
- **icon_url**, **rating**, **review_count**
- **price**, **currency**, **is_free**, **category**
- **platform**, **url**, **description_short**
- **description** (full), **screenshots**, **version**, **size** (detail mode)
- **updated_date**, **released_date**, **min_os**, **content_rating** (detail mode)
- **languages**, **in_app_purchases**, **whats_new** (detail mode)
- **privacy_url**, **website** (detail mode)

**Reviews:**
- **author**, **rating** (1-5), **date**, **title**, **text**
- **version**, **platform**

**Developer profiles:**
- **developer_id**, **name**, **url**, **app_count**, **platform**
- **apps** -- full list of the developer's published apps

### Who is this for?

- **Mobile app developers** -- research competitors, track market trends, and monitor your own reviews
- **Product managers** -- analyze user feedback across both platforms to inform roadmap decisions
- **Market research firms** -- build datasets on app categories, pricing, and rating distributions
- **Investors and analysts** -- evaluate app performance and developer portfolios
- **ASO specialists** -- study keyword rankings, review sentiment, and category competition

### How to use it

1. Open the actor in Apify Console and select a mode (search, detail, reviews, or developer).
2. Choose a platform (appstore or gplay) and enter the required input -- search query, app ID, or developer ID.
3. Set optional filters like category, country, and result limit.
4. Click "Start" to begin the run.
5. Export results as JSON, CSV, or Excel, or connect via the Apify API.

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| mode | string | search | Scraping mode: search, detail, reviews, or developer |
| platform | string | appstore | Target platform: appstore or gplay |
| query | string | -- | Search query (for search mode) |
| app_id | string | -- | App ID, bundle ID, package name, or store URL (for detail and reviews modes) |
| developer_id | string | -- | Developer ID (for developer mode) |
| category | string | -- | Filter by category: games, business, education, entertainment, finance, health, etc. |
| limit | integer | 20 | Maximum results to return (1-200) |
| page | integer | 1 | Page number (1-50) |
| country | string | us | Country code for localized results (e.g., us, gb, de, jp) |

### Sample output

```json
{
  "app_id": "com.spotify.music",
  "name": "Spotify: Music and Podcasts",
  "developer": "Spotify AB",
  "developer_id": "spotify-ab",
  "icon_url": "https://play-lh.googleusercontent.com/spotify-icon.png",
  "rating": 4.3,
  "review_count": 28450000,
  "price": null,
  "currency": "USD",
  "is_free": true,
  "category": "music",
  "platform": "gplay",
  "url": "https://play.google.com/store/apps/details?id=com.spotify.music",
  "description_short": "Spotify gives you instant access to millions of songs..."
}
````

### How much does it cost?

Each result costs **$0.002**. Scraping 1,000 app listings costs just $2, and 10,000 costs $20.

Apify gives every new user $5 in free monthly credits, so you can pull about 2,500 results for free.

### Common questions

**Can I scrape both App Store and Google Play in one run?**
Each run targets one platform at a time. Run the actor once for App Store and once for Google Play -- both use the same input structure, so it's simple to switch.

**What app ID format should I use?**
For Google Play, use the package name (e.g., "com.spotify.music"). For App Store, use the bundle ID or the numeric ID. You can also paste the full store URL and the actor will extract the ID automatically.

**Does it support non-English markets?**
Yes. Use the `country` parameter with any valid country code (us, gb, de, fr, jp, kr, etc.) to get localized results including pricing, descriptions, and reviews in the local language.

### Contact & Custom Solutions

Need a custom scraper, higher volume, or a specific integration? We're here to help.

If anything isn't working right or you need support, don't hesitate to reach out.

- Telegram: [t.me/novashield\_dev](https://t.me/novashield_dev)
- Email: novashield.dev@gmail.com

# Actor input Schema

## `mode` (type: `string`):

Scraping mode: search apps, get app details, get reviews, or list developer apps

## `platform` (type: `string`):

Target platform: Apple App Store or Google Play

## `query` (type: `string`):

Search query (for 'search' mode)

## `app_id` (type: `string`):

App ID, bundle ID, package name, or store URL (for 'detail' and 'reviews' modes)

## `developer_id` (type: `string`):

Developer ID (for 'developer' mode)

## `category` (type: `string`):

Filter by category (for 'search' mode)

## `limit` (type: `integer`):

Max Results

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

Page

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

Country code for localized results (e.g., us, gb, de, jp)

## Actor input object example

```json
{
  "mode": "search",
  "platform": "appstore",
  "query": "weather app",
  "limit": 20,
  "page": 1,
  "country": "us"
}
```

# 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 = {
    "query": "weather app"
};

// Run the Actor and wait for it to finish
const run = await client.actor("novashieldai/app-store-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 = { "query": "weather app" }

# Run the Actor and wait for it to finish
run = client.actor("novashieldai/app-store-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "weather app"
}' |
apify call novashieldai/app-store-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=novashieldai/app-store-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "App Store + Google Play Scraper",
        "description": "Dual-platform app store scraper. Search apps, get details, reviews, and developer info from Apple App Store and Google Play Store.",
        "version": "1.0",
        "x-build-id": "Rr14IjjmPUFvDkQYE"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/novashieldai~app-store-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-novashieldai-app-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/novashieldai~app-store-scraper/runs": {
            "post": {
                "operationId": "runs-sync-novashieldai-app-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/novashieldai~app-store-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-novashieldai-app-store-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "detail",
                            "reviews",
                            "developer"
                        ],
                        "type": "string",
                        "description": "Scraping mode: search apps, get app details, get reviews, or list developer apps",
                        "default": "search"
                    },
                    "platform": {
                        "title": "Platform",
                        "enum": [
                            "appstore",
                            "gplay"
                        ],
                        "type": "string",
                        "description": "Target platform: Apple App Store or Google Play",
                        "default": "appstore"
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search query (for 'search' mode)"
                    },
                    "app_id": {
                        "title": "App ID",
                        "type": "string",
                        "description": "App ID, bundle ID, package name, or store URL (for 'detail' and 'reviews' modes)"
                    },
                    "developer_id": {
                        "title": "Developer ID",
                        "type": "string",
                        "description": "Developer ID (for 'developer' mode)"
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "games",
                            "business",
                            "education",
                            "entertainment",
                            "finance",
                            "health",
                            "lifestyle",
                            "music",
                            "news",
                            "photo",
                            "productivity",
                            "social",
                            "travel",
                            "utilities",
                            "weather",
                            "food",
                            "shopping",
                            "sports",
                            "medical",
                            "books",
                            "developer"
                        ],
                        "type": "string",
                        "description": "Filter by category (for 'search' mode)"
                    },
                    "limit": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Max Results",
                        "default": 20
                    },
                    "page": {
                        "title": "Page",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Page",
                        "default": 1
                    },
                    "country": {
                        "title": "Country Code",
                        "type": "string",
                        "description": "Country code for localized results (e.g., us, gb, de, jp)",
                        "default": "us"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
