PeekPanda docs
Keyword explorer
Four numbers and a ranking for any App Store phrase, with the exact formula behind the derived opportunity score.
Download Markdown ↓Type any App Store phrase at /aso/explore and you get four numbers and the ranking behind them. The same view opens as a popup when you click a keyword inside a tracked app's case file.
Everything is the US storefront. Positions are the positions observed in the store's public search results, not native App Store ranks.
The four numbers
They sit in one strip, each labelled with where it came from.
| Tile | Provenance | What it is |
|---|---|---|
| Opportunity | Derived | Demand and difficulty combined by one rule, described below |
| Demand | Observed | Where the store suggests the phrase, with the date of that suggestion snapshot |
| Difficulty | Observed | The median rating count of the apps on page one, with the sample size |
| Ranking apps | Observed | How many apps are in the collected ranking, over a distribution of the top 20's rating counts |
A number PeekPanda does not hold reads Not collected with the reason. It is never shown as a zero, and never drawn as a bar at zero.
Opportunity is derived
Opportunity is not collected from anywhere. It is computed from the other two numbers by computeAsoOpportunity in packages/libraries/src/domain/app-catalog/aso-opportunity.ts, so the explorer, the workspace list and the keyword table all print the same value.
The rule is:
textopportunity = round(demand × (100 − difficulty) / 100)
Both inputs are 0–100 scores. The tile and every tooltip print it as Demand × (100 − difficulty).
Read it as: a phrase the store pushes hard that nobody has locked down scores close to its demand. The same phrase behind a page one of million-rating apps scores near zero.
It is null when either input is missing. The tile then reads Not collected · Needs a demand and a difficulty reading, rather than inventing a number. It is only as fresh as the older of its two inputs.
The score gets a word next to it on its own ladder:
- 50 and up: Wide open
- 25 to 49: Worth a try
- below 25: Crowded
Demand
Demand comes from the store's own search suggestions. It is suggestion ordering, not a search-volume estimate, and PeekPanda never presents it as one.
Two readings go into it:
- Suggestion rank. Where the exact phrase sits in the suggestion list for its first word. First place scores 100 and each place after that costs 10, with a floor of 40.
- Variants. How many longer phrases the store suggests when the whole keyword is typed. Each is worth 6, capped at 30.
If the exact phrase is suggested for its first word, the score is the suggestion-rank score. If it is not suggested at all, the score is the variant score. The tile detail names both readings and the date of the snapshot they came from.
Words: 67 and up is High, 34 to 66 is Some, below 34 is Low.
Demand is null when no suggestion snapshot has been stored for the phrase or for its first word.
Difficulty
Difficulty is how established the apps already on page one are, using the rating counts the store returns with its search results.
PeekPanda takes the results at positions 1 to 10 that carried a rating count, takes the median of those counts, and puts it on a log scale where a million ratings saturates at 100:
textdifficulty = round(min(1, log10(medianRatingCount + 1) / 6) × 100)
The tile shows the median rating count itself and how many page-one results were rated. Below three rated results, the tooltip flags it as weak evidence. Difficulty is null when no page-one result carried a rating count at all.
Words: 67 and up is Hard, 34 to 66 is Medium, below 34 is Easy.
Ranking apps
The count is how many apps are in the collected ranking for that phrase. Under it, a small distribution shows the top 20 results bucketed by order of magnitude of rating count: 0, 1–9, 10–99, 100–999, 1K–10K, 10K–100K, 100K–1M, 1M+. That is what tells you whether page one is one giant and nine newcomers, or ten giants.
The tile detail carries the date the snapshot was checked, and says older than a day when it is stale.
The ranking below
Three tabs share one table:
- Page one: positions 1 to 10.
- All ranking: every position in the collected snapshot.
- Suggestions: the store's suggestions for this phrase, up to 20. Click one to explore it.
Each row shows the position pill, the icon and name, the store rating, and the rating count as a bar measured against the most-rated app on that page. The name is a link only when that app has a case file in the catalogue.
Nothing collected yet
A phrase that has never been collected shows a thinking panda and a Peek at this keyword button. Press it and the panda fetches the ranking. See refreshing keywords for what that costs.