Which keywords do you rank 11-30 for? See your cusp band free

For developers

Everything we measure
can be read out.

One key opens both the REST API and the MCP endpoint; both are read-only and both come with the Studio plan. Your data is not locked to our screen - it reaches your script, your dashboard or your assistant in the same shape.

  • Carry it into your own dashboard

    Pull the rank history into an internal dashboard, a spreadsheet or a weekly report. The data is yours; it does not have to stay on our screen.

  • A pre-release check

    Before you ship new metadata, let your script read the cusp band: what position are you in on the word you just dropped from the subtitle, and is it really expendable?

  • Ask your assistant

    With the MCP endpoint connected, “which of my keywords are in the threshold band and which is the most popular?” gets an answer without a single screenshot.

Start in one line

Three ways in, one key. Pick the one you are: an assistant that speaks MCP, a terminal, or a script.

claude-code
claude mcp add --transport http rankcusp \
  https://rankcusp.com/api/mcp \
  --header "Authorization: Bearer rc_live_…" \
  --header "Accept-Language: tr"

That is the whole setup. The second header is what makes the verdicts come back in your language; drop it and they arrive in English. Ask “which of my keywords are in the cusp band?” and the assistant calls the tools below by itself.

The key

Create one from the Account screen. A key is shown once - we keep only a digest of it, so a lost key cannot be recovered; you revoke it and take a new one.

What an assistant can do

Nine tools. Eight of them only read; the last adds keywords, and says so to the client before it is called. An assistant reaches them the moment it is connected, and they are what the CLI calls underneath.

list_apps
The apps and rivals on the account. The appId every other tool wants comes from here.
cusp_actions
The 11-30 band, ordered by popularity: the short list of words worth spending characters on.
get_keyword
One keyword - rank, popularity, difficulty - with the verdict written out in your language: whether it is worth targeting, and on what grounds.
ranking_keywords
What an app already ranks for, out of the pooled record of every search this product has run. Point it at a rival to read theirs - Apple publishes no endpoint for this, so the answer is only as wide as what has been observed.
keyword_competitors
Who else ranks for a phrase, deeper than the ten the first page shows. An app at 40 where you sit at 60 is the one worth studying.
audit_metadata
Reads a draft title, subtitle and keyword field before you ship them, and says what repeats, what is wasted, and how many characters you get back.
country_priorities
Which storefront deserves the next hour: cusp counts per country, and where the rivals are weakest.
list_keywords
Every tracked keyword for one country, with its rank and its previous rank.
add_keywords
The one that writes. Adds keywords to an app's tracked set in a storefront, from a list or a pasted line. They arrive unscored - scoring costs requests to Apple and waits for the collector - so a null popularity here is not a zero.

The CLI

One `curl` and a key. It prints tables meant to be read in a terminal - an unmeasured value stays an em dash there too, so no zero is ever invented.

terminal
$ rankcusp cusp 1544… --country us
KEYWORD          RANK   Δ  POP  DIFF  CUSP
───────────────  ────  ──  ───  ────  ────
habit tracker      14  +5   32    41  •   
streak tracking    23   -    -    38  •   
rankcusp
Opens the session: what is connected, what you can ask, and a prompt.
rankcusp apps
The apps and rivals on the account.
rankcusp keywords <appId> --country <cc>
Every tracked keyword in one storefront.
rankcusp cusp <appId> --country <cc>
The cusp band for one app, ordered by popularity.
rankcusp keyword <appId> <phrase> --country <cc>
A single keyword with its verdict.
rankcusp audit --country <cc> --title … --keywords …
Checks a draft metadata set before you ship it.
rankcusp countries <appId>
Which storefront to work on next.
rankcusp tools
Lists the tools - how an assistant finds its own way around.

Endpoints

GET/api/v1/apps
The apps and rivals on the account. The appId every other call wants comes from here.
GET/api/v1/keywords?app=…&country=…
Tracked keywords: rank, previous rank, popularity, difficulty, and whether it is in the cusp band.
GET/api/v1/keywords?app=…&country=…&cusp=1
The 11-30 band only - the ones a metadata edit pays off on most.
GET/api/v1/keywords?app=…&country=…&keyword=…
A single keyword: its first page and the verdict - should it be targeted, and on what grounds.
POST/api/mcp
The MCP endpoint (JSON-RPC 2.0). It carries the nine tools above.

What does a response look like?

The example below shows the shape of a call asking for the cusp band. Look at the second row: previousRank and popularity are null. That means the keyword was measured for the first time and its popularity could not be read yet - not that it is zero.

json
{
  "total": 2,
  "maxPageSize": 200,
  "keywords": [
    {
      "keyword": "habit tracker",
      "country": "us",
      "rank": 14,
      "previousRank": 19,
      "delta": 5,
      "popularity": 32,
      "difficulty": 41,
      "cusp": true,
      "lastMeasuredAt": "2026-08-12T04:12:09.114Z"
    },
    {
      "keyword": "streak tracking",
      "country": "us",
      "rank": 23,
      "previousRank": null,
      "delta": null,
      "popularity": null,
      "difficulty": 38,
      "cusp": true,
      "lastMeasuredAt": "2026-08-12T04:12:11.902Z"
    }
  ]
}

What you need to know

  • An unmeasured value comes back as `null`, never as zero. rank: null means “outside the top 200”, popularity: null means “not measured yet”. A client that replaces those with zero will, sooner or later, take their average.
  • Verdicts come back in your own language. The MCP endpoint reads the client's language; the CLI takes RANKCUSP_LANG=tr. The numbers are the same in every language.
  • 120 requests per minute. Over that, a 429 and a retry-after.
  • At most 200 rows per page; walk forward with offset.
  • Only one tool writes. add_keywords adds to a tracked set and declares itself as writing, so a client can ask before calling it. Everything else, and every REST route, only reads.
  • country is required on every call: the same phrase in two storefronts is two different searches, and therefore two different rows.
  • A key stands for an account, not for a person. Generating separate keys instead of sharing one makes revoking one possible without breaking the other.

The keywords you rank 11-30 for are where the first page costs you the least effort. Ready to see which ones they are?