keyword-spylisted
Install: claude install-skill ASOScan/aso-skills
# Keyword Spy
See the full keyword footprint of an app — yours or a tracked competitor's — with
ASOScan, and mine it for real terms you should be targeting too.
## When to use
- "What keywords does `<app>` rank for?"
- "Spy on `<competitor>`'s keywords."
- "Which of their terms am I not tracking?"
## Calling the ASOScan API
Base `https://asoscan.com/api/public/v1` · header `Authorization: Bearer $ASOSCAN_API_KEY`.
JSON, camelCase. The API is **owner-scoped** — it only sees the user's own apps +
their tracked competitors. If the key is unset, hand off to **asoscan-setup**.
1. **Find the app** — `GET /apps` → use the `id`.
- **Own app** → spy it directly.
- **A rival** → it must be a **tracked competitor** first. Check
`GET /apps/{id}/competitors`; if absent, add it via
`POST /apps/{id}/competitors { "storeUrl": "…" }` (2 credits, **write** key),
then spy the returned competitor's `id`. Add-by-URL only — there's no lookup
by app name.
2. **Spy** — `GET /apps/{id}/keyword-spy?country=` (**2 credits**) →
`{ appName, totalKeywordsFound, communityPoolSize, discoveryStatus,
keywords[]{ term, rank, volume, difficulty, origin, isTracked } }`.
- `origin` = `"community"` \| `"discovered"`; `isTracked` = already in your set.
- `discoveryStatus` = `"cached"` \| `"none"`. The public API doesn't trigger a
fresh crawl, so a just-added competitor may be sparse until ASOScan's
background discovery has cached results — re-calling won't add m