Integration
Aso Rank Checker
ASO Rank Checker for OpenClaw — check App Store keyword rankings in any country, keyword difficulty, competitors and listing audits. No API key. By ASO Agency (asoagency.io)
Install
npm install &&
README
# ASO Rank Checker for OpenClaw
**Check where any iOS app ranks in App Store search for any keyword, in any country — and size up the competition. No API key.**
Built and maintained by **[ASO Agency](https://asoagency.io)**, an App Store Optimization studio for funded app startups.
---
## Why
Keyword rankings are the heartbeat of App Store Optimization, but checking them usually means a paid ASO suite or searching the App Store by hand, one country at a time. This plugin gives your OpenClaw agent four read-only tools on top of Apple's public search data, so you can ask:
- *"Where does my app rank for these 20 keywords in the US, UK and Germany?"*
- *"Which keywords am I close to the top 10 for?"* (the **striking distance** list: ranks 11–50, with a concrete next step for each)
- *"Who ranks for 'habit tracker', and what would it take to beat them?"*
- *"Which of these keywords is easiest to win?"*
It needs no account, no API key and no configuration.
## Tools
| Tool | What it does |
|------|--------------|
| `aso_keyword_rank` | Rank of an app for 1–25 keywords in up to 5 countries (max 30 searches per call): position in the top 200, result count, top 3 apps, keyword-in-title check. Summary with ranked / top-10 / top-50 counts, average rank and **striking-distance quick wins** (ranks 11–50). |
| `aso_keyword_competitors` | The apps ranking for a keyword (top 10 by default, up to 50): rating, rating count, price, genre, last update, keyword-in-title, link — plus top-10 aggregates and a "what it takes to rank here" takeaway. |
| `aso_keyword_difficulty` | A transparent **0–100 difficulty score** for up to 10 keywords, easiest first, with each factor's points and an opportunity note. Measures competition, **not** search volume. |
| `aso_app_lookup` | Listing metadata (title length vs the 30-char limit, ratings, version, days since update, languages, screenshots, description length…) plus quick ASO flags. |
`app` inputs accept an App Store ID (`493145008`), `id493145008`, an `apps.apple.com` URL, a bundle ID (`com.getsomeheadspace.headspace`), or an app name (resolved to the top search result, and the reply says so). Countries are two-letter codes (`us`, `gb`, `de`, `jp`…), default `us`.
## Install
From ClawHub:
```bash
openclaw plugins install clawhub:openclaw-aso-rank-checker
```
From npm:
```bash
openclaw plugins install openclaw-aso-rank-checker
```
From source:
```bash
git clone https://github.com/ataygamesmode-ops/openclaw-aso-rank-checker
cd openclaw-aso-rank-checker
npm install && npm run build
npm pack
openclaw plugins install npm-pack:./openclaw-aso-rank-checker-1.0.0.tgz
```
OpenClaw may ask you to confirm the plugin's capabilities on install (it only registers four read-only tools that call Apple's public API). If it does, re-run the same command with `--accept-capabilities`. Then check it loaded:
```bash
openclaw plugins inspect aso-rank-checker --runtime
```
No configuration needed.
## Examples
Sample outputs from live runs on 24 September 2026. Rankings move daily.
### "Where does Duolingo rank for these keywords in the US and UK?"
> **OpenClaw** (via `aso_keyword_rank`):
>
> **Summary:** ranked in the top 200 for **6/8** keyword checks · **2** in the top 10 · **6** in the top 50 · average rank of ranked keywords **11.8** · best: "learn spanish" #1 (US).
>
> | Keyword | Country | Rank | In title | Results | Top 3 apps (id) |
> | --- | --- | --- | --- | --- | --- |
> | learn spanish | US | **#1** | — | 175 | Duolingo: Language Lessons (570060128) · Babbel - Language Learning (829587759) · Learn Spanish for Beginners (601738437) |
> | learn spanish | GB | **#1** | — | 176 | Duolingo: Language & Chess (570060128) · Learn Spanish for Beginners (601738437) · Babbel - Language Learning (829587759) |
> | vocabulary | US | #11 | — | 196 | Vocabulary - Learn words daily (1084540807) · Word of the Day・Vocabulary (987136347) · Vocabulary Builder by Learning (6738261069) |
> | vocabulary | GB | #12 | — | 190 | Vocabulary - Learn words daily (1084540807) · Word of the Day・Vocabulary (987136347) · Elevate - Brain Training (875063456) |
> | flashcards | US | — | — | 183 | Quizlet: More than Flashcards (546473125) · Flash Cards Flashcards Maker (669486043) · Noji - Flashcards study app (1573585542) |
> | flashcards | GB | — | — | 189 | Quizlet: AI-powered flashcards (546473125) · Flash Cards Flashcards Maker (669486043) · Amazing Flash Cards (1511674871) |
> | grammar | US | #27 | — | 182 | Grammarly: AI Keyboard & Voice (1158877342) · LearnEnglish Grammar (UK ed.) (488099900) · English Grammar in Use & Test (1526935199) |
> | grammar | GB | #19 | — | 190 | LearnEnglish Grammar (UK ed.) (488099900) · Grammarly: AI Keyboard & Voice (1158877342) · English Grammar in Use & Test (1526935199) |
>
> **Striking distance (ranks 11–50) — quick wins**
> - **"vocabulary"** (US #11 · GB #12): Not in your title yet — if it isn't in your subtitle either, adding "vocabulary" to the title or subtitle is the fastest lever toward the top 10.
> - **"grammar"** (GB #19 · US #27): Not in your title yet — if it isn't in your subtitle either, adding "grammar" to the title or subtitle is the fastest lever toward the top 10.
>
> **Not in the top 200:** "flashcards" (US) and "flashcards" (GB) — Apple doesn't currently associate the app with these terms. If relevant, work them into the title, subtitle or keyword field.
Note how the title check uses each storefront's **localized** title: in the UK, Duolingo's title is "Duolingo: Language & Chess".
### "Which of these keywords is easiest to win?"
> **OpenClaw** (via `aso_keyword_difficulty`):
>
> | Keyword | Difficulty | Label | Top-10 median ratings | KW in title | Updated ≤90d | 1M+ apps | Results |
> | --- | --- | --- | --- | --- | --- | --- | --- |
> | habit tracker | **63** | High | 9,697 | 8/10 | 6/10 | 0 | 193 |
> | budget app | **73** | High | 23.1K | 9/10 | 10/10 | 0 | 193 |
> | meditation | **81** | Very high | 96.4K | 8/10 | 10/10 | 1 | 194 |
>
> - **meditation** (81, Very high) — Brand-dominated (top-10 median 96.4K ratings, 1 app with 1M+ ratings): only worth it as a secondary keyword — focus on long-tail phrases. Top 3: Insight Timer: Meditate, Sleep (447K), Calm (2M) and Headspace: Sleep & Meditation (974K).
>
> *Difficulty measures competition in the current top 10 — it is **not** search volume.*
*(Excerpt: the full reply has an opportunity note for every keyword and a table of each factor's points.)*
### "Who ranks for 'habit tracker'?"
> **OpenClaw** (via `aso_keyword_competitors`):
>
> | # | App | Developer | Rating | Ratings | Updated | KW in title |
> | --- | --- | --- | --- | --- | --- | --- |
> | 1 | Habit Tracker | InnerGrow | 4.8★ | 147K | 2026-08-15 | ✓ exact |
> | 2 | Habit Tracker - HabitKit | Sebastian Roehl | 4.8★ | 2,427 | 2026-09-21 | ✓ exact |
> | 3 | Onrise: Habit Tracker & Focus | Maximilian Munker | 4.8★ | 2,570 | 2026-08-25 | ✓ exact |
> | 4 | Finch: Self-Care Pet | Finch Care Public Benefit Corporation | 4.9★ | 755K | 2026-09-22 | — |
> | 5 | Productive - Habit Tracker | Mosaic S.r.l. | 4.6★ | 91.1K | 2026-03-19 | ✓ exact |
>
> **What it takes to rank here:** competitive (median 9,697 ratings) — you need strong relevance plus steady download velocity and a healthy ratings base to break in. 80% of the top 10 carry the keyword in their title, so having it in yours is table stakes. Every top app is free to download — a paid-upfront app will struggle; use freemium or a trial.
*(Columns trimmed here; the tool also returns app ID, price, genre and store link.)*
## How the difficulty score works
Computed from the current top 10 results for the keyword, 0–100:
| Factor | Points | Why |
|--------|--------|-----|
| Ratings strength | 0–50 | log-scaled median rating count of the top 10 (maxes out around 316K ratings). The dominant factor: rating volume is the best public proxy for install volume and staying power. |
| Title relevance | 0–20 | share of the top 10 with the keyword (exact phrase or all words) in the title — how hard the relevance fight is. |
| Freshness | 0–10 | share of the top 10 updated in the last 90 days — actively maintained competitors. |
| Mega-apps | 0–15 | 5 points per app with 1M+ ratings (max 3). |
| Result depth | 0–5 | fewer results (under ~200) suggests a niche term. |
Labels: under 35 Low · 35–59 Medium · 60–79 High · 80+ Very high. A low score can also mean nobody searches the term, so check demand (for example with Apple Search Ads popularity) before committing.
## Data source & limits
- **Apple's public iTunes Search and Lookup API** (`itunes.apple.com/search`, `/lookup`). No key and no scraping. Requests go out one at a time with a small gap, a descriptive User-Agent, and retries with backoff when Apple throttles (HTTP 403/429). Responses are cached in memory for 10 minutes, so repeat questions cost nothing.
- **Ranks are an approximation.** "Rank" is the app's position in the API's top 200 results. That closely tracks live App Store search, but it is not identical: the API has no personalisation, no Search Ads and no on-device signals, and results can differ slightly from what a given iPhone shows.
- **Top 200 only.** Anything below is reported as "not in the top 200".
- **Budgets keep it polite:** up to 30 keyword×country searches per `aso_keyword_rank` call (extras are listed as skipped), 10 keywords per difficulty call, 5 countries per call. Apple paces responses (roughly 1–5 s per search), so a full 30-search call can take a minute or two.
- **Title only.** The public API exposes the title, not the subtitle, keyword field or promotional text, so "in title" checks the title alone.
- **Ratings are per storefront**, and "languages" means the app's supported languages as reported by Apple.
- **iOS App Store only.** Google Play is not covered.
## Development
```bash
npm install # dev deps include openclaw 2026.9.6 for types (use --ignore-scripts on Node 25)
npm run build # tsc →
... (truncated)
integration
Comments
Sign in to leave a comment