# App Store Keyword Tracker — iOS & Android ASO Rankings (`gochujang/app-store-keyword-tracker`) Actor

Track app rankings by keyword across Apple App Store and Google Play Store. Find competitors, discover keyword opportunities, and monitor your app's rank. Essential for App Store Optimization (ASO).

- **URL**: https://apify.com/gochujang/app-store-keyword-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** SEO tools
- **Stats:** 2 total users, 1 monthly users, 0.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?

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

## App Store Keyword Tracker — iOS & Android ASO Rankings

Track your app's ranking (and competitors') for any keyword across the **Apple App Store** and **Google Play Store** — no API keys required.

Built for App Store Optimization (ASO): discover which keywords surface the strongest competitors, monitor rank changes over time, and identify whitespace opportunities where weaker apps dominate.

***

### Use Cases

- **Competitive ASO analysis** — See which apps rank #1–#20 for your target keywords
- **Keyword opportunity discovery** — Find keywords where weak competitors dominate (easy to rank)
- **Rank tracking** — Provide your app's ID to check if and where you appear in results
- **Market research** — Evaluate app quality (ratings, reviews, price) across a keyword landscape

***

### Why Not SensorTower / AppFollow / AppTweak?

| Tool | Price | What You Get |
|------|-------|--------------|
| SensorTower | $199/month | Full ASO suite |
| AppFollow | $69/month | Review management + ASO |
| AppTweak | $99/month | Keyword tracking |
| **This Actor** | **$0.001/result** | Keyword rank snapshots, both stores |

For indie developers and small teams running periodic checks, paying per-result is 10–100x cheaper than a monthly subscription.

***

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `keywords` | string\[] | Yes | — | Keywords to search, e.g. `["meditation app", "budget tracker"]` |
| `platform` | enum | No | `both` | `ios`, `android`, or `both` |
| `country` | string | No | `us` | 2-letter country code (ISO 3166-1), e.g. `us`, `gb`, `kr` |
| `limit` | integer | No | `20` | Results per keyword, max 50 |
| `trackAppIds` | string\[] | No | — | App Store numeric IDs or Play Store package names to highlight in results |

***

### Output

Each result represents one app ranking for one keyword:

```json
{
  "keyword": "meditation app",
  "platform": "ios",
  "rank": 1,
  "app_name": "Calm - Sleep & Meditation",
  "developer": "Calm.com",
  "app_id": "571800810",
  "rating": 4.8,
  "rating_count": 2156789,
  "price": 0,
  "is_free": true,
  "formatted_price": "Free",
  "category": "Health & Fitness",
  "version": "6.38",
  "release_date": "2012-12-18T00:00:00Z",
  "store_url": "https://apps.apple.com/us/app/calm/id571800810",
  "icon_url": "https://is1-ssl.mzstatic.com/image/thumb/...",
  "searched_at": "2026-01-15T09:22:11.443Z"
}
```

**Android results** include `app_id` as the package name (e.g. `com.calm.android`).

***

### Tracking Specific Apps

Provide `trackAppIds` to flag when your app (or a competitor) appears in results:

```json
{
  "keywords": ["budget tracker", "expense manager"],
  "trackAppIds": ["com.myapp.budget", "1234567890"]
}
```

The Actor logs whenever a tracked app appears: platform, rank, and app name.

***

### Data Sources

- **iOS**: Official [iTunes Search API](https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/iTuneSearchAPI/) — free, no auth, reliable
- **Android**: Google Play Store search page — HTML parsed with BeautifulSoup

> **Note on Android data**: Google Play renders most content via JavaScript. The HTML-parsed results may occasionally be incomplete (missing ratings or developer names) if Google changes their markup. iOS data via the official API is always complete and stable.

***

### Pricing

| Event | Cost |
|-------|------|
| Actor start | $0.001 |
| Per app result | $0.001 |

**Example**: 5 keywords × 20 results × 2 platforms = 200 results = **$0.20**

The first 25 results are effectively free under Apify's free tier. Running weekly rank checks costs pennies compared to $69–$199/month subscription tools.

***

### Scheduling

Run this Actor on a schedule via Apify to build a rank-tracking history:

1. Go to **Schedules** in your Apify Console
2. Set frequency: daily or weekly
3. Point at this Actor with your keyword list
4. Export results to Google Sheets or your own database via Webhooks

***

### Limitations

- Google Play results depend on HTML structure; ratings/developer may be empty if markup changes
- iTunes API returns up to 50 results per search; results reflect real-time index
- Country availability depends on App Store / Play Store regional coverage

**Keywords:** app store optimization, ASO, keyword tracker, app ranking, App Store, Google Play, app store keywords, competitor analysis, mobile app marketing, app rank tracker, keyword research, iTunes search, Play Store scraper, app analytics

***

### Related actors

- [Product Hunt Launches Tracker](https://apify.com/gochujang/producthunt-launches-tracker) — App launches on Product Hunt to discover competitors before they climb App Store rankings
- [YouTube Trending Tracker](https://apify.com/gochujang/youtube-trending-tracker) — YouTube content marketing trends that often drive App Store search spikes
- [Reddit Subreddit Tracker](https://apify.com/gochujang/reddit-subreddit-tracker) — Community buzz in app-specific subreddits that can predict keyword volume shifts

### Feedback

If this actor helps your ASO research, a review helps others find it: [Leave a review on Apify Store](https://apify.com/gochujang/app-store-keyword-tracker#reviews)

# Actor input Schema

## `keywords` (type: `array`):

ASO keywords to search for, e.g. \["meditation app", "budget tracker"].

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

Which store(s) to search.

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

Two-letter country code (ISO 3166-1 alpha-2), e.g. 'us', 'gb', 'kr'.

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

Number of app results to return per keyword (max 50).

## `trackAppIds` (type: `array`):

Optional list of App Store numeric IDs or Google Play package names to highlight if they appear in results.

## Actor input object example

```json
{
  "keywords": [
    "meditation app",
    "budget tracker"
  ],
  "platform": "both",
  "country": "us",
  "limit": 20
}
```

# Actor output Schema

## `results` (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 = {
    "keywords": [
        "meditation app",
        "budget tracker"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/app-store-keyword-tracker").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 = { "keywords": [
        "meditation app",
        "budget tracker",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("gochujang/app-store-keyword-tracker").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 '{
  "keywords": [
    "meditation app",
    "budget tracker"
  ]
}' |
apify call gochujang/app-store-keyword-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/app-store-keyword-tracker"
        }
    }
}

```

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/ecjAxXUnANbj6RqcP/builds/zJdKEqckIzjUf83tK/openapi.json
