---
title: ToolRouter — Tool Detail
description: Detailed documentation for a ToolRouter tool including skills, parameters, and examples.
url: https://toolrouter.com/tools/play-store-aso
---
# Play Store ASO

Research competitors, optimize store listings, manage screenshots, track releases, and respond to reviews on Google Play. Search keyword rankings, audit listings for gaps, update titles and descriptions across locales, and manage reviews.

- **Version:** 0.02
- **Categories:** marketing, analytics

## Skills (10)

### Search Apps (`search_apps`)

Search the Google Play Store for apps matching a search term. Returns app title, developer, rating, reviews, installs, and price for each result. Use this to see what apps rank for a given keyword.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `term` | string | Yes | Search term to look up |
| `country` | string | No | Country code (e.g. us, gb, de, jp) [default: "us"] |
| `num` | number | No | Number of results to return (max 20) [default: 10] |

**Returns:** List of matching Android apps with title, developer, rating, review count, installs, price, and package name

**Examples:**

*Search Google Play for fitness apps:*

```json
{
  "term": "fitness tracker",
  "country": "us",
  "num": 10
}
```

### App Details (`app_details`)

Get full details for a specific Android app on Google Play Store. Returns title, rating, reviews, description, version, category, developer info, install counts, and more. Use a package name like "com.example.app".

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `app_id` | string | No | Android package name (e.g. "com.whatsapp") |
| `country` | string | No | Country code [default: "us"] |

**Returns:** Full Android app metadata including title, rating, reviews, description, version, category, installs, and developer info

**Examples:**

*Get details for WhatsApp on Android:*

```json
{
  "app_id": "com.whatsapp"
}
```

### Audit Listings (`audit_listings`)

Audit all Google Play store listings across locales with warnings for missing or underutilized fields. Checks for empty short descriptions, full descriptions under 100 characters, and missing titles.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name (e.g. "com.example.app"). Falls back to saved play_store_app_id. |

**Returns:** Audit report with all locale listings and warnings for missing or short content

**Examples:**

*Audit listings for an Android app:*

```json
{
  "package_name": "com.example.app"
}
```

### Export Listings (`export_listings`)

Full export of all Google Play Store data including listings, images, tracks, and app details. Returns a comprehensive JSON backup of the entire store presence for a given package.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name. Falls back to saved play_store_app_id. |

**Returns:** Complete JSON export of all Play Store data: listings, images, tracks, and app details

**Examples:**

*Export all data for an Android app:*

```json
{
  "package_name": "com.example.app"
}
```

### Update Listing (`update_listing`)

Update a Google Play store listing for a specific locale. Supports title, short description, full description, and video URL. Defaults to dry-run mode — set dry_run to false to apply changes.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name. Falls back to saved play_store_app_id. |
| `locale` | string | Yes | Locale code (e.g. "en-US", "de-DE") |
| `title` | string | No | New app title (max 30 chars) |
| `short_description` | string | No | New short description (max 80 chars) |
| `full_description` | string | No | New full description (max 4000 chars) |
| `video_url` | string | No | Promo video URL |
| `dry_run` | boolean | No | If true, show changes without applying them (default: true) [default: true] |

**Returns:** List of changes applied (or that would be applied in dry-run mode) with old and new values

**Examples:**

*Preview listing update for en-US:*

```json
{
  "package_name": "com.example.app",
  "locale": "en-US",
  "title": "My App",
  "short_description": "The best app ever",
  "dry_run": true
}
```

### List Images (`list_images`)

List images by type and locale for a Google Play store listing. Returns image IDs, URLs, and SHA256 hashes. Supports phone screenshots, feature graphics, icons, tablet screenshots, wear, and TV assets.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name. Falls back to saved play_store_app_id. |
| `locale` | string | No | Locale code (default: en-US) [default: "en-US"] |
| `image_type` | string | Yes | Type of image to list (phoneScreenshots, featureGraphic, icon, sevenInchScreenshots, tenInchScreenshots, wearScreenshots, tvBanner, tvScreenshots) |

**Returns:** List of images with IDs, URLs, and SHA256 hashes for the specified type and locale

**Examples:**

*List phone screenshots for en-US:*

```json
{
  "package_name": "com.example.app",
  "image_type": "phoneScreenshots",
  "locale": "en-US"
}
```

### Upload Image (`upload_image`)

Upload an image (screenshot, icon, or feature graphic) to a Google Play store listing. Downloads the image from the provided URL and uploads it via the Google Play API. The edit is committed immediately.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name. Falls back to saved play_store_app_id. |
| `locale` | string | Yes | Locale code (e.g. "en-US") |
| `image_type` | string | Yes | Type of image to upload (phoneScreenshots, featureGraphic, icon, sevenInchScreenshots, tenInchScreenshots, wearScreenshots, tvBanner, tvScreenshots) |
| `image_url` | string | Yes | URL to download the image from |

**Returns:** Confirmation of successful upload with the image ID, type, and locale

**Examples:**

*Upload a phone screenshot:*

```json
{
  "package_name": "com.example.app",
  "locale": "en-US",
  "image_type": "phoneScreenshots",
  "image_url": "https://example.com/screenshot.png"
}
```

### List Tracks (`list_tracks`)

Query all release tracks with version info for a Google Play app. Returns track name, release status, version codes, user fraction (for staged rollouts), and release notes per locale.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name. Falls back to saved play_store_app_id. |

**Returns:** All release tracks with version codes, status, rollout fraction, and localized release notes

**Examples:**

*List all release tracks:*

```json
{
  "package_name": "com.example.app"
}
```

### List Reviews (`list_reviews`)

Fetch recent user reviews for a Google Play app. Returns review text, star rating, author, device info, app version, and any developer reply. Requires Google Play Console API access.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name. Falls back to saved play_store_app_id. |
| `max_results` | number | No | Maximum number of reviews to return (default: 20) [default: 20] |

**Returns:** List of user reviews with rating, text, device info, app version, and developer reply status

**Examples:**

*Fetch recent reviews:*

```json
{
  "package_name": "com.example.app",
  "max_results": 10
}
```

### Reply to Review (`reply_to_review`)

Reply to a user review on Google Play. Requires the review ID (from list_reviews) and the reply text. The reply will be visible publicly on the Play Store listing.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `package_name` | string | No | Android package name. Falls back to saved play_store_app_id. |
| `review_id` | string | Yes | Review ID to reply to (from list_reviews) |
| `reply_text` | string | Yes | Reply text to post |

**Returns:** Confirmation that the reply was posted with the review ID and reply text

**Examples:**

*Reply to a review:*

```json
{
  "package_name": "com.example.app",
  "review_id": "abc123",
  "reply_text": "Thanks for the feedback!"
}
```

## Quick Start

```bash
# Via CLI
TOOLROUTER_API_KEY=tr_live_xxx npx -y toolrouter-mcp call play-store-aso search_apps --term fitness tracker --country us --num 10

# Via REST API
curl -H "Authorization: Bearer tr_live_xxx" \
     -d '{"tool":"play-store-aso","skill":"search_apps","input":{"term":"fitness tracker","country":"us","num":10}}' \
     https://api.toolrouter.com/v1/tools/call
```

## Frequently Asked Questions

### Can I check how my app ranks before touching the listing?

Yes. `search_apps` shows what apps appear for a keyword, and `app_details` gives the store metadata behind a specific result so you can compare your listing against the competition first.

### Can I preview listing edits before publishing them?

Yes. `update_listing` defaults to dry-run mode, so you can review the exact title, short description, full description, or video changes before applying them.

### What can I audit across locales?

Use `audit_listings` to spot missing titles, weak short descriptions, and thin full descriptions across all language variants. It is built for finding the worst gaps fast.

### Does it handle screenshots and reviews too?

Yes. The tool can list and upload store images, check release tracks, read reviews, and reply to them, so you can manage the full Play Store presence from one place.

---

## Get Started with ToolRouter

**Already connected?** Call any tool with `use_tool({ tool, skill, input })`. Browse tools with `discover` or visit https://toolrouter.com/llms-full.txt

**New to ToolRouter?** Connect with one command (no API key needed — auto-provisions on first use):

```bash
# MCP (Claude Code, Codex CLI)
claude mcp add toolrouter -- npx -y toolrouter-mcp

# MCP (Cursor, Windsurf, Cline, VS Code, Gemini CLI, Claude Desktop)
{"mcpServers":{"toolrouter":{"command":"npx","args":["-y","toolrouter-mcp"]}}}

# Claude Chat / Claude Cowork / Claude Mobile — add as a connector:
# Settings → Connectors → Add custom connector → URL: https://api.toolrouter.com/mcp

# ChatGPT — add as an app:
# Settings → Apps → Advanced settings → enable Developer mode → Create app → MCP Server URL: https://api.toolrouter.com/mcp

# CLI (works instantly, no restart needed)
npx -y toolrouter-mcp tools                    # browse all tools
npx -y toolrouter-mcp search "seo"             # search by keyword
npx -y toolrouter-mcp call seo analyze_page --url https://example.com
```

Free tools work immediately. For paid tools, visit https://toolrouter.com/claim to add credits.

All platforms: https://toolrouter.com/connect | Full catalog: https://toolrouter.com/llms-full.txt | Docs: https://toolrouter.com/docs