AI-first App Store keyword research — plug into Claude, Cursor, or any MCP client. No API keys needed.
Project description
🔍 aso-mcp
Free App Store keyword research for your AI. No API keys. No signup. No subscription.
Plug it into Claude, Cursor, Windsurf, or any MCP client and research App Store keywords conversationally.
Install in 10 seconds
Claude Code
claude mcp add aso -- uvx aso-mcp
Claude Desktop
Add to your config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"aso": {
"command": "uvx",
"args": ["aso-mcp"]
}
}
}
Cursor / Windsurf
Add to your MCP settings:
{
"mcpServers": {
"aso": {
"command": "uvx",
"args": ["aso-mcp"]
}
}
}
That's it. No API keys. No environment variables. Just works.
What can it do?
Once installed, just talk to your AI naturally:
"Research the keyword 'habit tracker' in the US App Store"
"Compare these keywords and rank them by opportunity: cable identifier, wire color code, voltage calculator, circuit breaker finder"
"Find me keywords with popularity above 30 and difficulty below 40 from this list: ..."
"Show me who's ranking for 'meditation app' and how hard it is to compete"
"Suggest optimized metadata for my app CableID targeting cable identification keywords"
"Scan 'budget planner' across the US, UK, Germany, Japan and Brazil stores"
Tools
| Tool | What it does |
|---|---|
aso_research_keyword |
Full analysis — popularity, difficulty, opportunity score, download estimates, top competitors |
aso_batch_research |
Research up to 20 keywords at once, ranked by opportunity |
aso_competitor_analysis |
Deep dive into who's ranking — ratings, reviews, pricing, developer, app age |
aso_find_opportunities |
Scan up to 30 keywords, filter by your thresholds, return only the good ones |
aso_suggest_metadata |
Generate optimized title, subtitle, and keyword field backed by real data |
aso_country_scan |
Check a keyword across up to 15 App Store regions |
How scoring works
All data comes from Apple's free iTunes Search API. No paid APIs, no scraping, no Apple Search Ads account needed.
Popularity (1–100)
A 6-signal model estimating how often a keyword is searched:
| Signal | Points | What it measures |
|---|---|---|
| Result count | 0–25 | How many apps appear for this keyword |
| Leader strength | 0–30 | Rating volume of top-ranking apps |
| Title match density | 0–20 | How many apps use this keyword in their title |
| Market depth | 0–10 | Whether strong apps appear deep in results |
| Specificity penalty | −30 to 0 | Adjusts for generic terms that inflate counts |
| Exact phrase bonus | 0–15 | Rewards multi-word keywords with precise matches |
Difficulty (1–100)
A 7-factor weighted model estimating how hard it is to rank:
| Factor | Weight | What it measures |
|---|---|---|
| Rating volume | 30% | How many ratings competitors have |
| Dominant players | 20% | Whether apps with 100K+ ratings dominate |
| Rating quality | 10% | Average star ratings |
| Market maturity | 10% | How long competitors have been listed |
| Publisher diversity | 10% | Few publishers vs many |
| App count | 10% | Total number of results |
| Content relevance | 10% | How well results actually match the keyword |
Opportunity labels
| Label | Meaning |
|---|---|
| Sweet Spot | High popularity + low difficulty — go build this |
| Hidden Gem | Decent popularity + very low difficulty |
| Competitive Opportunity | High popularity, moderate difficulty — needs a strong USP |
| Worth Investigating | Promising but do more research |
| Low Volume | Easy to rank but few people searching |
| Avoid | Too competitive for the search volume |
Download estimates
3-stage pipeline per ranking position: popularity → estimated daily searches → tap-through rate (power-law decay) → install conversion (35–55% for free apps).
Rate limits
The iTunes Search API is free but rate-limited. The client enforces a 3-second minimum between requests. Batch operations take roughly n × 3 seconds.
FAQ
How accurate is this compared to paid tools like Astro or AppTweak?
Paid tools have access to Apple Search Ads impression data across thousands of advertisers, giving them more precise volume estimates. This tool uses publicly available iTunes Search API data with a multi-signal scoring model. It's very good for relative comparisons (keyword A vs keyword B) and identifying opportunities. It won't give you the exact daily search volume that a $100/month tool would.
Do I need an Apple developer account?
No. The iTunes Search API is completely public.
Does this work for Google Play?
Not yet. The iTunes Search API only covers the Apple App Store. Google Play support would require a different data source.
Can I use this for commercial research?
Yes. MIT licensed. Do whatever you want with it.
Contributing
PRs welcome. If you want to improve the scoring model, add new tools, or support new data sources, open an issue first so we can discuss the approach.
License
MIT — free to use, modify, and distribute.
Built by @heyb3n_ — electrician turned iOS dev, building AI tools for indie developers.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aso_mcp-0.1.1.tar.gz.
File metadata
- Download URL: aso_mcp-0.1.1.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a38721e2d6cbced15d66f95515dd711bfbd3235106dd8749acbb0e9429366e60
|
|
| MD5 |
82f8e1a3515f50da1262421f8982c015
|
|
| BLAKE2b-256 |
26975007ccc22d89d8c7d7039f0ae3bd60ff7358b6bef43ecf023ff04df2e041
|
File details
Details for the file aso_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: aso_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7405561ddd6a7e9c4f08966121d628003e4b92e474b5c8b804094a0bec5e6ba8
|
|
| MD5 |
ba47607cf5ad66fc00139541fbee883d
|
|
| BLAKE2b-256 |
4fc5a034a847fe6e0b921f1dd32f9ab06a07ecc85a42b40aae959711f9f25e72
|