PUBLIC API · EVERY PAID PLAN

Your ASO data,
in your stack.

Pull the keyword rankings, research, ASO scores, competitors, and opportunities you already track into your own dashboards, BI tools, or scripts, with an API key. Self-serve on any paid plan. No enterprise contract, no sales call.

Start 7-Day Trial 7-day free trial · cancel anytime
asoscan · v1
$ curl https://asoscan.com/api/public/v1/apps/{id}/keywords \
    -H "Authorization: Bearer asosk_live_…"

[
  { "term": "habit tracker", "rank": 6, "rankDelta": 4,
    "volume": 38000, "difficulty": 41, "isFavorite": true },
  { "term": "daily planner", "rank": 18, "rankDelta": -2,
    "volume": 21000, "difficulty": 52, "isFavorite": false }
]

Clean numbers, JSON, the same data you see in the dashboard. Every response carries your remaining-credit headers.

01

Everything you track, by key

Apps, tracked keywords with rank + movement, ASO score + pillar breakdown, competitors, pre-computed opportunities, and live keyword research. Each is a simple GET. Write-scoped keys can add keywords and competitors too.

02

Self-serve, mid-market price

Create keys from your dashboard on any paid plan. Read-only or read-write, your call. A monthly credit allowance that scales by tier, an OpenAPI spec, and a Postman collection. No "contact sales," no enterprise minimum.

03

Honest by construction

Scoped keys, a live credit meter, per-request quota headers, and the same clean numbers as the app (no data-source noise). Revoke a key any time; it can never authenticate again.

WHAT YOU CAN CALL

A small, stable surface.

Versioned at /api/public/v1. Authenticate with Authorization: Bearer asosk_live_….

GET/appsYour tracked apps
GET/apps/{id}/keywordsRanks, movement, volume, difficulty
GET/apps/{id}/aso-scoreScore + pillars + recommendations
GET/apps/{id}/opportunitiesRanked keyword opportunities
GET/apps/{id}/competitorsThe competitors you track
GET/apps/{id}/keywords/researchLive volume + difficulty + top apps
GET/apps/{id}/keywords/{keywordId}/historyDaily rank history for a keyword
GET/apps/{id}/keywords/{keywordId}/metrics-historyVolume + difficulty over time
GET/apps/{id}/reviewsReviews (paginated)
GET/apps/{id}/reviews/insightsSentiment + top topics, bugs, requests
GET/apps/{id}/category-rankCategory-chart position over time
GET/apps/{id}/rating-historyAverage rating + total over time
GET/apps/{id}/metadataCurrent store metadata text
GET/apps/{id}/metadata/changelogField-level before/after history
GET/apps/{id}/keyword-spyEvery keyword this app ranks for
POST/apps/{id}/keywordsTrack new keywords (write scope)
POST/apps/{id}/competitorsTrack a competitor (write scope)
GET/usageYour credit balance + per-endpoint breakdown

Read the developer documentation → · Open the interactive console ↗

WEBHOOKS · PUSH, NOT POLL

Get a signed POST the moment things change.

Register an HTTPS endpoint and ASOScan delivers an HMAC-signed event when one fires:

alert.triggeredapp.sync_completedcompetitor.metadata_changedreview.analyzedkeyword.rank_updatedopportunities.ready

Every delivery is signed (X-ASOScan-Signature: t=…,v1=…) and retried with backoff. You can verify it with a stdlib HMAC check; there's no SDK to install.

Prefer chat? Point an endpoint at your Slack or Microsoft Teams incoming-webhook URL and events arrive as formatted channel messages without writing any code.

What the API doesn't do (yet). It reads and writes the data you track. It does not publish metadata to the App Store or Play Store on your behalf, and there are no official client SDKs yet (OpenAPI + a Postman collection cover code-gen). Webhooks notify you of events; like everything else at ASOScan, they're not a ranking signal and we never claim otherwise.
REASONABLE QUESTIONS

Honest answers,
including the "not yet"s.

Which plans include the API?

Every paid plan. You create keys from your dashboard, and the monthly credit allowance scales by tier. There's a live meter in settings, and every response carries remaining-credit headers.

Can a key only read, or also write?

You choose at creation. A read-only key can pull everything; a read-write key can also add keywords and competitors. Write endpoints reject a read-only key with a clear "insufficient scope" error.

Can one account's key see another's data?

No. Every call is scoped to the key owner: request another account's app id and you get a 404. Keys are stored hashed; the secret is shown once at creation and is never recoverable.

Are the numbers "estimated"?

We present clean numbers: the same values the dashboard shows, with no data-source labels. You read volume, difficulty, rank, and score as plain numbers and use them however you like.

Do you have SDKs?

Not yet. The API ships with an OpenAPI spec and a Postman collection, so you can generate a client in any language or import it into Postman. First-party SDKs are on the roadmap.

Build on
your numbers.

Start a trial on any paid plan and mint your first key from settings in under a minute.

Already subscribed? Read the developer documentation →