When you ask the API, CLI or MCP server about an iOS keyword Sonar hasn't measured yet, the difficulty is now computed from the same top 10 the App Store shows, the ranking Sonar already uses for rank tracking. Before, a brand-new keyword could get a different difficulty from the API than from your dashboard. New keywords also come back faster, so bulk lookups end with fewer pending keywords.
What's New
Every new feature, improvement, and fix we ship. Sonar gets better for indie developers every week.
- Improved
Faster, more accurate keyword lookups in the API
- Improved
App Store data straight from the App Store
Sonar's API, CLI and MCP server now read iOS app data from the same source the App Store app uses:
- App search returns apps in the order the App Store shows them, not a text-match order.
- App lookups include the subtitle and the in-app purchase list with prices, so revenue estimates count in-app purchases they used to miss. The dashboard's estimates get the same fix.
- Reviews are current. Before, the newest reviews could lag by up to a few weeks. Sorting by "helpful" now follows the App Store's own "Most Helpful" order, which favours recent reviews.
- Fixed
Similar apps are back in keyword ideas and competitor suggestions
When Sonar generates keyword ideas for an app that tracks fewer than five competitors, it fills the gap with the apps the App Store lists under "You Might Also Like". A change on Apple's side had quietly emptied that list, so new apps got ideas without that context. It works again, and competitor suggestions can again include those apps when few others rank alongside yours.
- Fixed
The trial setup panel follows the app you've selected
During a trial, the panel at the top of the dashboard shows your first keyword results. If you'd added more than one app, it always showed the app you added last, whichever app you had selected. It now shows the selected app and updates as soon as you switch.
- ImprovedFixed
Faster answers for new keywords and competitor changes
When you look up keywords nobody has asked about recently, Sonar measures them live. Large batches used to wait for one shared queue and often came back as "pending" — now that work is spread across all of our data servers, and the same request waits for the results. In our tests a batch of 25 new keywords went from about half a minute to around 11 seconds, with nothing left pending.
Other improvements:
- Adding a competitor is instant again. For apps with a very large competitor keyword history it had slowed to a minute or more.
- The Discovered tab keeps the best 2,000 competitor keywords per app — the ones you rank for and the highest-opportunity ideas first — so it loads quickly. Keywords you've tracked or hidden are never removed.
- Keyword suggestions fail less often. Autocomplete no longer pauses when app search is being rate limited by the store.
- One heavy user can no longer slow everyone else down. Live store lookups are shared fairly between accounts.
- AI assistants signed in to Sonar without a workspace can use the free tools right away instead of getting an error.
- ImprovedFixed
Clearer rank charts, earlier billing and an easier-to-find gap analysis
A few fixes that came straight from your feedback:
- Rank charts show drop-outs. When your app is checked for a keyword but isn't in the results that day, the Rankings chart and the keyword page now draw dotted points along the bottom of the chart, labelled "Not in results". Before, the line just ended, which looked like tracking had stopped.
- Start your paid plan early. Settings → Plan & billing has a "Start paid plan now" button during your trial. It shows the exact charge first, and if your card is declined your trial carries on unchanged.
- Gap analysis is easier to find. On the Competitors page, the tab with your keyword gaps, winnable keywords, threats and leads is now called "Gap analysis".
- Adding an email login works. If you signed up with Google, you can now add an email and password from Settings → Account. The verification step could not be clicked before.
- Improved
Sharper popularity estimates for low-volume iOS keywords
Apple reports every iOS keyword below its lowest real reading as a popularity of 5, which covers most long-tail keywords. Sonar shows its own estimate in brackets next to it —
5 (18)— so you can still tell those keywords apart.That estimate is now recalibrated for exactly this range, and it agrees much more closely with other ASO tools on the same keywords.
What you'll notice:
- Keywords Apple's autocomplete doesn't suggest read 5. Before, some of them showed estimates of 30 or more.
- Keywords Apple's autocomplete does suggest move up, with single words reading higher than longer phrases.
- The bracket never goes above 37. Apple only shows 5 for keywords below its lowest real reading of 38, so a higher estimate next to a 5 was never possible.
Values update as each keyword's daily refresh runs.
- New
Reply to your App Store reviews from Sonar
Open Your App → Reviews to see your iOS app's App Store reviews as they come in, synced from App Store Connect every few minutes. Each new review arrives with a reply drafted by AI and written in the reviewer's language. Reviews and drafts in other languages come with an English translation, so you always know what you're answering. Edit the reply, write your own in English and have it translated, or post it as is. Tell the AI how to sound once (tone, support contact, known fixes) and every draft follows it.
Prefer not to approve every five-star thank-you? Switch on auto mode and Sonar posts replies to the star ratings you choose after a short delay, up to a daily limit. Refund requests, legal threats and other reviews that need a person always wait for you, and a reply you write in App Store Connect is never overwritten.
Want to hear about new reviews? Add a New review alert and pick how fast it reaches you: right away, at most once an hour, or in your daily digest. Each email links straight to the review so you can reply in one click.
You can do all of this from the API, the CLI and the MCP server too. To get started, connect App Store Connect in Settings → Connections (posting replies needs an Admin key). Indie plans include 300 AI drafts a month and Agency plans 3,000; extra drafts use 1 API credit each.
- Improved
iOS ranks now follow the App Store's own search
Until now, Sonar read iOS rankings from Apple's public search API. That API orders results by how well the text matches, not by what people actually see when they search in the App Store. Near the top the two mostly agreed, but further down an app could show up 20 to 40 places higher than where shoppers really find it.
iOS ranks now come from the App Store's own search results — the same order someone sees when they search on an iPhone — down to position 200. In our checks against the App Store, the top 10 now matches position for position 99% of the time.
What you'll notice:
- Some ranks move. Apps that read as #15 may really sit at #40, or outside the top 200; others move up. Your history before today keeps the old method, so charts show a step on the switch day.
- No alert flood. Rank alerts, the weekly report and client reports skip comparisons that cross the switch, so the change of method doesn't read as a drop.
- Difficulty is recalculated from the real top 10, so many iOS keywords read a few points easier.
Google Play ranks are unchanged.
- Fixed
Alert emails stop when your plan ends
When a trial ended or a subscription was cancelled, Sonar kept sending daily alert emails with links to pages the workspace could no longer open. Alerts now stop as soon as access ends, including a digest that was already queued for that day. Your alert settings are kept, so if you subscribe again they start working the next morning with nothing to set up.
- Improved
Bring your keywords over from Astro
Moving from Astro? Export your keywords from Astro, then in Sonar open Add keywords → Import CSV and drop the file. Sonar recognizes the export, picks out the keywords for the app you're importing into, and brings your notes and tags along. Ranks and metrics are recalculated by Sonar, and from then on every keyword is tracked daily on our servers — whether or not your computer is on.
- ImprovedFixed
More accurate keyword difficulty and popularity on the App Store
Difficulty. iOS difficulty now counts apps with few or no ratings on the first page as the weak competition they are. The old score left unrated apps out, so a page with one established app and nine unrated ones looked harder than it is. About a third of long-tail keywords drop by 5 points or more after their next daily refresh; crowded head terms barely move. Your history keeps the earlier values.
Popularity. Apple reports a popularity of 5 for some searches that are clearly popular — about one in six of the most-searched US terms, especially ones with punctuation like "chess.com". We now fill those in from Apple's own weekly list of top searches, and a one-off 5 no longer overwrites a real popularity reading from the last 30 days.
- New
Add Apple's most searched keywords for your category
Open Add keywords and switch to Most searched to see the terms people search for most in your app's App Store category, straight from Apple's weekly rankings, each with its popularity and rank. Brand names like "doordash" or "starbucks" are hidden by default so the list shows terms you could actually rank for; turn on Show brand names to see everything. Pick the terms you want and add them in one go. Terms you already track are marked.
The list is available for the US App Store today, with more markets to follow.
- New
Star, unstar or remove many keywords at once
Tidying up a long keyword list used to mean removing keywords one by one. Your tracked keywords now have a checkbox on each row. Tick a few, or use the checkbox in the header to select the whole page, and a bar appears at the bottom with Star, Unstar and Remove.
When more keywords match your filters than fit on one page, the bar offers Select all for every match. For example, set the filters to "Not ranking" and "No note", select all, and remove the keywords you no longer need in one step. Only keywords that match your current filters are ever selected.
Removing always asks first, tells you how many of the selected keywords have notes, and frees those slots in your plan right away. On a product that's on both stores, the App Store and Google Play views now only remove the keyword from the store you're looking at; the combined view removes it from both.
- Fixed
Android popularity history no longer shows false drops, and unchecked estimates are marked
On Google Play, Sonar measures popularity by checking how early a keyword appears in Play's autocomplete. Some quick lookups skipped that check and saved an estimate that often reads high, for example 60 for a keyword nobody types. When that estimate was the first measurement of the day, it became the day's point on the popularity chart, and the next day's checked value made it look like popularity collapsed.
Unchecked estimates no longer go into a keyword's popularity history, and they never replace a value that was already checked. When a checked value arrives later the same day, it becomes that day's point.
In the Discovered tab, an Android popularity that hasn't been checked yet now shows muted with a "~", for example "~62". Hover it for details. Until it's checked, Opportunity counts it as low demand, so verified keywords sort above it. Sonar re-checks these keywords in the background over the next few weeks.
- New
Track App Store product page headers and In-App Events
On October 5 Apple opened product page headers to every developer. A header is a wide image or video that iOS 27 shows above the app icon, and you can reuse it as your search results asset. Sonar now supports headers in five places.
- Competitor tracking. Sonar reads each tracked iOS app's header and live In-App Events. When a competitor adds, swaps or removes its header, or starts a new In-App Event, it appears in Activity with the artwork, and competitor alerts tell you about it.
- Listing details. The competitor Store listing tab and the SERP Explorer app panel show an app's current header and its live In-App Events.
- ASO score. iOS apps get a new product page header check. Apps that still use the old 4:1 banner get a tip to upload a 16:9 or 21:9 header.
- Listing Manager. The iOS product page preview shows your header the way iOS 27 lays it out. If you don't have one yet, it shows how many of your tracked competitors do.
- Screenshot Studio. New canvases at Apple's sizes: the 16:9 and 21:9 headers and the 3:2 search results asset. They come with their own layouts, export as PNGs without transparency so App Store Connect accepts them, and the Listing Manager can preview your header design before you upload it.
The search results asset isn't shown publicly anywhere, so Sonar can't track which competitors use one.
- ImprovedFixed
Faster Ad Spy, Screenshot Studio and Top Charts
We went through Sonar looking for places where you wait, and fixed the biggest ones.
- Ad Spy opens right away. Opening a competitor whose ads were last fetched more than a week ago used to wait while we pulled fresh ads. Now you see the saved ads at once, and the fresh copy loads in the background for your next visit.
- Screenshot Studio saves quietly. Every autosave used to reload all of a set's screens in the background. Now a save sends back only what changed, so editing stays smooth even in big sets. Set thumbnails also load faster.
- Top Charts don't keep you waiting. The first time anyone opened a chart each day, the page waited for the store. Now it shows the latest saved chart straight away and fetches today's in the background.
- Performance shows keywords first. The keyword view no longer waits for App Store Connect sales to load, and sales comparisons over a whole year load several times faster.
- Competitors respond instantly. Tracking keywords from a competitor no longer reloads the page after every click, and removing a competitor takes effect immediately.
- "Add selected" adds everything you picked. Adding more than 10 keywords at once from keyword search or a research project could silently skip some of them. They're now added in one go, and anything that couldn't be added stays selected.
- The API answers on time. Bulk keyword metrics and keyword research calls could run past a minute when many keywords needed fresh data, long enough for AI assistants to give up. They now always answer within the time limit, with saved values or a "pending" marker for anything still loading. App search, lookups, reviews and revenue estimates answer from saved data instead of waiting when the store is busy.
- ImprovedFixed
Keyword metrics now show when they were measured
Measurement dates on every keyword. Keyword metrics and keyword research results from the API, the CLI and the MCP tools now include
measured_at, when the difficulty was measured, andpopularity_measured_at, when the popularity value was measured. Popularity can be older than difficulty, so you can check both against your own freshness rule, for example "no older than 30 days"."Stale" now means what it says. A keyword used to be marked fresh based on its difficulty alone, even when its popularity was months old. It's now marked fresh only when both values are under 7 days old. Apple popularity older than a week is fetched again while you wait. If Apple doesn't answer in time, you get the stored value with its real date, and it's refreshed right after. Google Play popularity older than a week is re-checked in the background.
No more empty results served as cached. A few keywords that had never been measured came back with a difficulty of 0 and no results, marked as fresh. They're now measured on request like any other new keyword.
- Fixed
Your weekly ASO report now arrives every Monday
The weekly ASO report emails each workspace its biggest rank gains and drops and its top-10 count for the past week. On busy Mondays the send stopped before it reached every workspace, and the same accounts missed it week after week. Sending now carries on through Monday morning until every workspace has its report, and no one gets it twice. You don't need to change anything; the weekly report toggle in account settings works as before.
- Fixed
Discovered keywords show every row, and the popularity filter matches what you see
The Discovered tab used to start on a "Recommended 50" shortlist. It capped the table at 50 keywords, so choosing 250 rows per page changed nothing and there was no second page to go to. The tab now shows every keyword by default. The Recommended 50 and Recommended 100 shortlists are still in the dropdown if you want them.
When Apple reports a keyword below its measurable range, Sonar shows Apple's value with our estimate next to it, like "5 (12)". The min-popularity filter didn't match those numbers: a minimum of 5 hid every keyword showing 5, and any higher minimum could empty the table. The filter now keeps a keyword when either number meets your minimum. Min 5 keeps every "5 (…)" keyword, and min 10 keeps "5 (12)" but not "5 (8)". This applies to every table with a popularity filter: Keywords, Discovered, Rankings and Projects.
- Fixed
Android popularity is accurate from the first day
Part of Sonar's Google Play popularity score is whether Play autocompletes the exact keyword. Keywords found by discovery skipped that check on their first day, so a phrase Play never suggests could show a high popularity until the next daily refresh corrected it. If you tracked keywords from the Discovered tab, the first day of their history could look much higher than every day after.
Discovery now runs the same autocomplete check as the daily refresh, so the first number you see is the one that sticks. Ideas that Play never suggests also stop showing up in Discovered as if people searched for them.
The API docs also have a new section on data freshness. It explains when a day's ranks are complete and safe to pull for reports.
- ImprovedFixed
App lookups, search, reviews and suggestions keep working when the store throttles
Apple sometimes throttles our live requests to the App Store for a few minutes at a time. Keyword metrics already kept working through those windows. App lookups, app searches, reviews and keyword suggestions still returned
rate_limited. Now those four answer from Sonar's stored data too.Stored data instead of an error. During a throttle you get a normal response built from what Sonar already holds: the app's stored listing, its stored reviews, the newest stored search results for that exact term, or stored keyword ideas that start with your seed. The response says so in a new
metablock.meta.staleistrue,meta.stale_as_ofsays when the copy was captured,meta.partialflags a copy with less than a live call would return, andmeta.noteexplains it in one sentence. A request fails only when Sonar has nothing stored for it.What "partial" means. Stored search results stop at the top 10 and carry the name, developer and icon. Stored suggestions are terms we have seen in the store's autocomplete, ranked by popularity rather than the store's live order.
No more false "not found" or empty review lists. A throttled app lookup used to come back as
404 App not found, and on our API server that answer could stick for up to an hour. A throttled iOS review fetch could come back as an empty list. Both now fall back to the stored copy, or return a retryable error if there is none.Shorter waits, clearer hints. If the throttle is about to lift, the request waits a few seconds and returns live data. Throttle errors now carry
retry_after_secondsin the response body, sized to the throttle's remaining cooldown.In the MCP server, these four tools return
{ data, meta }when they serve a stored copy, so your agent can tell you how old the data is. The CLI prints the note above the table. Live responses are unchanged, andmetais a new optional field. - New
App Store Connect sales and engagement in the API, MCP and CLI
If you're on the Agency plan and have connected App Store Connect, your agents and scripts can now read the same numbers as the Performance and Engagement pages:
- Sales: daily downloads, redownloads, in-app purchase units and approximate proceeds in USD, with a breakdown by country.
- Engagement: impressions, product page views and downloads with the conversion rate at each step, your share of impressions from App Store search, impressions by source, and daily installs, deletions and sessions.
Pick any date range up to a year, or the last N days. If there's no data yet, for example because App Store Connect isn't connected or Apple is still preparing your first analytics reports, the response tells you why instead of returning empty numbers.
Use the
GET /api/v1/apps/:id/salesandGET /api/v1/apps/:id/engagementendpoints, thesonar_app_salesandsonar_app_engagementMCP tools, orsonar apps salesandsonar apps engagementin the CLI. Both work for your own iOS apps. - Fixed
Engagement impressions now match App Store Connect
App Store Connect counts a product page view as an impression too. Apple's analytics reports send page views separately, and the Engagement page was leaving them out of impressions. That made App Referrer and Web Referrer impressions show 0, kept App Store Search and Browse lower than they really were, and pushed the page-view rate and search share away from App Store Connect.
Impressions now include product page views. Every source shows its real impressions, and the page-view rate, download rate and search share line up with the numbers in App Store Connect. The fix also applies to dates you've already synced, so you don't need to reconnect anything.
- Improved
More reliable MCP and API answers, in every storefront
Answers inside your agent's timeout. Keyword metrics, keyword research and top charts now return what's ready within about 30 seconds instead of running past the point where Claude, ChatGPT and other MCP clients give up. Keywords that are still being computed come back as pending, aren't charged, and are cached for your next call. If today's chart can't be fetched in time, you get the latest stored chart with its date.
Errors that tell you what to do. When you hit your daily API allowance, the message says how large it is and that it resets at 00:00 UTC, with the time left. Running out of API credits, needing the Indie or Agency plan, and a temporary slowdown at the app store each get their own plain message, with a retry time when waiting is the fix.
Every storefront. App lookup, app search, reviews, ASO score, keyword extraction and revenue estimates now work in all 175 App Store storefronts and 145 Google Play markets, and top charts and keyword suggestions in nearly all of them. Keyword metrics and research stay on the 72 markets Sonar tracks, and the error now lists them.
Pending answers don't use up your daily limit. A keyword request that only queues work, with nothing returned yet, no longer counts toward your daily request allowance.
- Improved
Smoother page loading
When you open a page in Sonar, the placeholder you see while it loads now has the same shape as the page: the same header, tabs, tables and cards, in the same places. Before, some pages showed one placeholder and then switched to a different one before the content appeared, which made the screen flicker.
This works the same way no matter how you get to a page: from the sidebar, from a list into a detail page such as a single keyword or competitor, or between the tabs inside Settings, Competitors and Agency.
- Improved
A much faster dashboard
We rebuilt how Sonar loads your data, with the biggest gains on accounts that track thousands of keywords.
- Pages stream in. The dashboard shows your header and listing right away, then fills in the overview chart, watchlist, movers and competitor highlights as each is ready. One slow section no longer holds up the whole page. Competitors, Alerts, Settings and the Agency pages work the same way.
- Rank history is much quicker. Rankings, the dashboard overview and the keyword detail sheet read rank history straight from an index. On a 1,000-keyword app the 30-day history went from about 18 seconds cold to under a second.
- Keywords loads less. Discovered keywords load when you open the Discovered tab, not every time you visit Keywords. The tracked table sends about a quarter of the data it used to.
- Clicks feel instant. Tabs switch without waiting for the server, every page shows a loading skeleton straight away, and switching products shows that it's working.
- Lighter pages. Every dashboard page downloads less code, and app icons are sized for where they're shown, so tables with hundreds of icons load noticeably faster.
- Improved
Faster Keywords page for large keyword sets
The Keywords page no longer waits for your discovered keywords before it shows anything. Your tracked keywords appear as soon as they load, and the Discovered tab fills in on its own a moment later.
This matters most for products with thousands of discovered keywords, where the whole page used to sit on its loading state. If discovered keywords ever fail to load, the Discovered tab tells you so and your tracked keywords keep working.
- New
Revenue trends in the Revenue Estimator
The Competitors tab in the Revenue Estimator now shows how estimated revenue has moved over time, not just today's number.
A Revenue trend chart above the table plots your app and each tracked competitor over the last 30 days up to 12 months, by day, week, or month. Click an app in the legend to hide or show it; your app is drawn as the filled area.
The table also has a new Revenue trend column: a small 30-day line next to each estimate, green when it's rising and red when it's falling. Hover it to see the start and end values and the percent change.
Each point is our estimate recomputed from that day's public signals, such as reviews, installs, and chart ranks. It's meant for spotting trends and benchmarking against competitors, not as actual revenue. Newly tracked apps fill in day by day.
- New
Ad Spy — see the ads your competitors run
Ad Spy shows the ads your competitors are running on Facebook and Instagram, and the videos they post on TikTok. Open it from the sidebar or from a competitor's row menu ("See their ads"), link each competitor to its advertiser page once, and Sonar keeps the rest up to date.
- Find the winners. Ads that keep running are the ones paying for themselves — longevity badges (30, 60 and 90+ days), variant counts and placements make them easy to spot. Sort and filter by format, placement and status, in a grid or a list.
- Understand why they work. Open any ad for its copy, call to action and landing page, and a one-click breakdown of its hook, angle and structure — plus ideas for organic videos of your own.
- Keep the good ones. Select ads and save them to your vault. Sonar stores the video and images privately for your workspace, so a saved ad stays watchable after it stops running. Add notes, filter by platform or paid vs organic, and download the files. Indie includes 25 saved ads, Agency 250.
- Stays current. Competitors you check on refresh every week, and opening one that's more than a week old refreshes it on the spot.
Public ad libraries don't publish spend or impressions for ads outside the EU, so Sonar never estimates them — how long an ad has been running is the honest signal.
- New
Alerts when your app enters a top chart
Turn on Top chart entry or exit on the Alerts page and Sonar watches the store charts for you. You get an alert when one of your apps enters or leaves Top Free (or Top Paid for paid apps) or Top Grossing, both across all categories and in your app's own category.
Pick up to 10 countries to watch. If you don't pick any, Sonar uses the countries you track keywords in. By default the alert covers the full top 200, and you can narrow it to the top 50 or top 10.
Chart moves show up in your daily alert digest and under Recent alerts. You can also set them up over the API, CLI and MCP with the
top_chartalert type. Alerts start after Sonar has two days of chart data for a newly watched country. - Fixed
App search is working again
From early on September 23, searching for an app in the add-app wizard or the dashboard's "Find your app" card could fail with a technical error instead of showing results. Search is back to normal. If an error still appears, it now tells you what to do.
If Sonar is updated while you have a page open, you now see a "reload the page" prompt instead of a cryptic error.
- Improved
Your app's rating in every country
Pick any country in the dashboard's rating selector to see your app's score and number of ratings there — or the globe for a worldwide iOS average, weighted by how many ratings each country has.
Sonar now collects these in the background for all 175 App Store territories and 145 Google Play markets, for every app in your products. iOS ratings refresh daily, Google Play ratings weekly, and hovering a value shows when it was last observed. Countries where your app has no ratings, or isn't available, are shown as such — never as a zero-star score.
Google Play doesn't offer a worldwide number that avoids double counting, so Android shows per-country ratings only.
- Improved
A fresh look for Sonar
Sonar has a new look, with a more compact layout and related tools grouped together so you can move between tasks more easily.
- Find your way faster. A secondary sidebar brings related pages together, including competitor research, activity, and reviews. Settings now has its own section navigation, too.
- More room for research. Cleaner tables and compact search, sorting, and filter controls keep your keywords, rankings, and competitor data in focus, especially on laptop screens.
- Focus on individual competitors. Filter competitor activity by app, then switch between the table and timeline views to explore their changes.
- A consistent experience. The dashboard, store listings, review analyses, sheets, and dialogs share the refreshed styling. The guided tour has also been updated to match the new layout.
- New
Fraud alert: verify requests using Sonar's name
An unrelated website, newsonar.com, is using the Sonar name and a copy of our website icon. It is not owned, operated, or authorized by Sonar at trysonar.app.
We do not offer paid app-uploading, rating, or clicking jobs, or require payments to release wages or earnings.
Read the fraud alert for how to verify a request and what to do if you have already paid. You can also find the notice in the site footer and on our About page.
- New
Monthly client reports with download impact
- Monthly editions. White-label client reports now freeze a calendar-month edition on the 1st of each month, alongside the existing weekly ones. Ranks are compared month end vs month start, charts cover 90 days, and a month still in progress shows as "Month to date". The edition switcher on the report page groups monthly and weekly editions.
- Estimated download impact. Each monthly edition estimates how many extra organic downloads the month's rank changes produced, per app and in total, with a likely range. It uses the same App Store rank curve as the Rankings "Est. downloads/day" column, states its assumptions on the page, and calls out keywords below Apple's popularity measurement floor instead of counting them. Google Play apps are not estimated.
- ImprovedFixed
Promo codes when switching plans
- Promo codes on plan switch. Switching plans from Settings now takes a promo code, so a code you were given for Agency applies to the upgrade itself, not only to a brand-new subscription.
- Prorated charge settled immediately. The prorated difference is charged when you switch, with unused time on your current plan credited on the same invoice. Previously it was parked on your next renewal invoice, which on an annual plan could be many months away.
- Fixed
Download estimates now come from Apple's popularity only
Our downloads/day estimate was overstating long-tail keywords. Two things fed it that shouldn't have: Sonar's own popularity estimate (a relative ranking aid, not a volume), and Apple's floor value of 5, which covers everything from a few hundred searches a day down to none. Together they put "~24/day" on every small keyword, so an app ranking #1 on dozens of small-market terms looked like it was earning hundreds of downloads a day it never saw.
- Estimated downloads at #1 and at current rank are now derived from real Apple Search Popularity only. Keywords where the popularity is Sonar's estimate, or where Apple reports its floor value, show
--with the reason in the tooltip. - The bracketed proxy value next to a floored popularity is still shown for comparing keywords, but it never produces a downloads number.
- The API field
est_downloads_at_1returnsnullin the same cases instead of a number.
- Estimated downloads at #1 and at current rank are now derived from real Apple Search Popularity only. Keywords where the popularity is Sonar's estimate, or where Apple reports its floor value, show
- NewImproved
More context for keyword and competitor research
- See estimated daily downloads at the #1 position in Rankings and exports. Available for iOS keywords with popularity data; these are rough estimates, not downloads attributed to your app.
- Show clients what your current rank is worth: a new "Est. downloads/day at current rank" column in Rankings and exports scales the #1 estimate by a position curve and shows a likely range. It is a labelled estimate (model v0, an industry prior, not measured on your app) for iOS generic keywords ranking in the top 30, and the "Assumptions" control lets you adjust the #1 download rate and position decay to your own scenario.
- Open a dedicated competitor page to explore ranking keywords and opportunities by country, then inspect the listing and published in-app purchase prices. Google Play shows its available price range.
- Follow clearer steps in Listing Helper, with an explanation of how saving a draft differs from publishing to the store.
- See net keyword gains over seven days on the dashboard: keywords that improved minus those that dropped.
- FixedImproved
Listing tools: right language for every localization, and re-rolls that stick
A round of fixes across the Listing Manager and Listing Helper:
- Regional localizations draft in the right language. A localization such as French (Canada) previews on the Canadian storefront, which defaults to English — so the manager showed the English listing and the AI drafted English copy for it. Every localization now carries its own language through the preview, the draft history, and the editor.
- Single-field rewrites are saved. Re-rolling just the subtitle or description used to leave the result unsaved until you noticed the Save button. Each rewrite is now stored in your draft history automatically, like a full generation.
- Hand-edited drafts reload as your edits. Opening a draft you saved by hand no longer relabels every field as an AI proposal, and the history only shows drafts for the store you're editing.
- Honest tracking feedback. Saving target keywords also starts tracking them. When your plan's keyword cap stops that, the manager now says which targets aren't being tracked instead of quietly implying they are.
- Dilution warning on Google Play too. The target picker warns past eight targets on both stores; Android previously gave no feedback at all.
- Keyword research runs once per market per hour. Repeat "Find more" clicks no longer re-run the whole discovery funnel.
- App Store Connect key guidance matches. The listing error now accepts an Admin or App Manager key, the same advice the Connections page gives.
- FixedImproved
Competitive opportunities across both stores
- Competitive position for both stores. Products with iOS and Android apps now show the full competitive-position view and saved AI analyses for each store.
- Direct links to opportunities. Dashboard alerts open the relevant store's winnable keywords or threats instead of the competitor list.
- App details from keyword results. Open a competitor's listing from competitor ranks or search results while keeping your keyword context. The combined keyword view now includes competitors from both stores.
- More reliable Android review insights. If the initial review sync was missed, requesting insights now fetches the missing reviews before checking whether there are enough to analyze.
- Improved
Keyword bursts finish instead of failing
Until now a burst of brand-new keywords could hit the store's rate ceiling partway through: the first thirty or so came back with data and the rest returned
rate_limited, leaving you to retry blindly.- Pending keywords are never charged.
Clients wait for you. The
sonarCLI and the MCP tools already pause and re-check briefly, so most bursts come back complete in a single call.Steadier under load. The API's own store pacing now models the store's real allowance, so it stops before it is throttled rather than after, and recovers gradually instead of tripping again a minute later.
- Improved
Keyword API returns values, not errors
The keyword endpoints (
/api/v1/keywords/metrics,/api/v1/keywords/search, and the matching CLI and MCP tools) used to answer withrate_limitedorunavailablewhenever the app store was slow to respond. Now they answer with data.Stored values first. A keyword we have measured in the last 30 days comes back immediately from our database, flagged
stale: truewhen it is older than a week, and is refreshed in the background. If the store cannot be reached at all, we fall back to the most recent measurement we have of any age rather than returning an error. A keyword only fails when we have never seen it and the store is unreachable right now. Stale rows are real data and are billed like cache hits.Bulk requests finish. A request with many never-seen keywords used to lose its tail to a 20-second queue budget even on a quiet day. The budget is now 50 seconds, sized to what clients actually wait, and the API tells you right away when a keyword cannot make it in time instead of holding your connection open and failing at the end.
Honest retry hints.
retry_after_secondson a shed keyword now reflects the real queue depth, so backing off by that amount actually works.Under the hood: the response path caches store lookups in memory again, collapses duplicate concurrent requests into one, and no longer lets a hung store connection tie up scraping capacity. No client changes are needed;
staleis a new optional field. - Fixed
Adding competitors works on every one of your apps
If you tracked an app as a competitor first and later added it as one of your own products, it stayed filed as a competitor internally. Adding competitors to that app then did nothing at all: the button spun, stopped, and no competitor appeared, with no error to explain why. Products you had added the other way round worked fine, which made it look random.
Ownership is now resolved the moment an app becomes yours, and every affected app in existing accounts has been corrected, so the competitors you were blocked from adding will go in.
The silent half is fixed too. When adding a competitor fails for any reason, the dialog now tells you what went wrong instead of quietly doing nothing.
- Fixed
The hosted MCP server works again
Since August 28, the hosted MCP endpoint at
trysonar.app/mcpconnected normally and listed all of its tools — and then failed on every single call with "Could not connect to https://localhost:3100". Free lookups and authenticated calls alike, so an API key made no difference. Because the connection itself looked healthy, it read as a broken tool rather than a broken server.The endpoint had moved to our dedicated API server, and it was working out the address to reach our own API from the wrong side of that move — pointing at a port on itself that nothing answers on. It now uses the right address, covered by tests so it cannot drift again.
OAuth sign-in from MCP clients was broken by the same cause and works again too. The
npx @sonarapp/mcppackage, the CLI, and direct API calls were never affected. - ImprovedFixed
Bulk keyword lookups now return partial results instead of failing
When the store-data queue got busy, a bulk
/api/v1/keywords/metricsrequest used to fail entirely with a429— even if 20 of your 25 keywords had already been fetched. All that work was discarded, so your retry started from scratch and hit the same congestion.Now bulk requests return what they managed to get:
- Completed keywords come back in a normal
200response and are cached, - Unfinished keywords are marked individually with
- You're only billed for keywords you actually received. Credits for any
- The retry hint is sized to the real queue depth and now also travels in the
The CLI and MCP server surface that retry hint in their messages too, so agents back off sensibly instead of hammering — and the CLI now clearly marks keywords that weren't served instead of showing them as empty metrics.
One thing worth knowing if you run large batches: each account has a budget for how many keywords it resolves at once. Sending bulk requests one after another rather than firing many in parallel will now finish a large job noticeably faster, and stops one heavy job from crowding out everyone else's lookups.
- Completed keywords come back in a normal
- Fixed
In-app purchase revenue now shows on the Performance page
The Performance page's daily proceeds chart and 30-day proceeds card now include revenue from in-app purchases and subscriptions, not just paid downloads.
Apple's sales reports list each in-app purchase as its own product, separate from the app it belongs to — so IAP revenue was being recorded but never attributed to your app. If your app is free with IAP or subscriptions (most are), proceeds showed as ≈$0 even while you were earning. That's fixed, and we've re-imported the last 30 days of sales reports so your history is correct too.
No action needed — if you've connected App Store Connect, your real revenue is already there.
- New
SERP Explorer
The Autocomplete Simulator shows what the store suggests. SERP Explorer shows what the store returns.
Type a keyword, pick a store and storefront, and you get the live top 25 — rendered both in a phone mockup of the real App Store or Play results screen and as a sortable table. The phone scrolls like a phone — grab it with the mouse, drag, and flick — and on iOS it shows each result's three screenshot thumbnails just like the real store (a switch hides them if you want the denser list). The keyword is highlighted wherever it appears in an app's name or subtitle, and a "Keyword in" column tells you at a glance which competitors are actually targeting the term versus which ones just rank there.
Sort by ratings, installs, or estimated monthly revenue to size up the competition, spot the amber Outlier badge on apps holding a top slot with far less social proof than their neighbours — those are the ones winning on metadata and worth reverse-engineering — and click any app to open its full listing, description and all. The searched keyword's own popularity and difficulty sit at the top, with one click to start tracking it.
Find it under Tools in the sidebar.
- Improved
Dedicated API infrastructure — much faster keyword computes
The Sonar REST API and MCP server now run on dedicated API infrastructure, built for exactly the workloads that used to struggle: bulk keyword research.
What changed for you:
- Fresh keyword computes are 3–4x faster — a cold
keywords/metrics - Bulk pulls actually finish. The shared scrape capacity that caused
- New canonical base URL:
https://api.trysonar.app. It's the same API, - The CLI and MCP packages will point at the new endpoint by default in
- Fresh keyword computes are 3–4x faster — a cold
- Fixed
Cancelling now stops any pending payment retry
When a subscription payment fails, Stripe retries the card a few times over the following days. Previously, if you cancelled during that retry window, the cancellation was scheduled for the end of the billing period — which left the unpaid invoice in the retry queue, and a later retry could still charge your card for a period you had just cancelled.
Now, cancelling while an invoice is unpaid takes effect immediately: the open invoice is voided, the subscription ends on the spot, and no further payment attempts are made.
- New
Connect AI agents with your Sonar login — no API key needed
Until now, connecting an AI agent to Sonar's MCP server meant creating an API key in the dashboard and pasting it into your agent's config. That step is gone: the hosted server at
https://trysonar.app/mcpnow supports OAuth sign-in.Add the server with no credentials at all:
claude mcp add --transport http sonar https://trysonar.app/mcpThe first time your agent calls a tool that needs your account, a browser window opens, you approve the connection with your Sonar login, and the agent is in — tracked apps, rankings, keyword research, competitor analysis, the full toolset. Works in Claude Code, claude.ai custom connectors, and any OAuth-capable MCP client.
API keys still work everywhere they did before (and remain the way to go for scripts, CI, and clients without OAuth support). You can revoke an agent's OAuth access anytime from your account's connected-apps list.
New trials get this as an onboarding option too: right after starting your trial, Sonar offers a ready-to-paste connect command and starter prompt so your agent can do the whole setup — find your app, add competitors, pick keywords — while you just approve the sign-in.
- Improved
A friendlier API for agents and integrations
A batch of improvements for everyone building on Sonar — whether that's a script, an AI agent, or a full integration:
- JSON errors everywhere. Unknown
/api/v1/*paths now return a proper - Published versioning policy. The API is additive-only within
/api/v1; - Richer OpenAPI spec. Every operation now carries a unique
- Markdown when you ask for it. The homepage, blog posts, and keyword
- JSON errors everywhere. Unknown
- Fixed
Search results now show titles in your market's language
App listings are localized per storefront, but Sonar kept a single display name per app — whichever market happened to refresh it last. If an app ranked for your US keyword and also for someone else's Brazilian keyword, its title could show up in Portuguese in your US search results.
App names in keyword details, the keyword side panel, top-app previews, top charts, and the rankings API are now stored and shown per country, matching what a user browsing that storefront actually sees. Names update as each market's daily refresh runs, so any remaining mixed-language titles clear out within a day.
- Improved
Top Charts now go 200 deep
Top Charts just doubled in depth: every chart combination — free, paid and grossing, store-wide or per category, in every country — now tracks the top 200 apps instead of the top 100.
That second hundred is where the interesting signals live: apps climbing toward the charts, niches getting crowded, and your own position long before you crack the top 100. Grossing charts at this depth are especially hard to come by — most tools (and Apple's public feeds) stop at 100.
Day-over-day movement, new entries, dropped apps and biggest movers all cover the full 200 now. The API, CLI and MCP
limitparameter accepts up to 200 — existing integrations keep working unchanged. - Fixed
Listing Manager shows each localization in its own language
Some App Store storefronts render in English by default (Denmark, Sweden, the Netherlands, and others), and the Listing Manager was previewing those storefronts without asking for the localization's language. The result: selecting Danish showed the English listing — English app name, English texts, and the English screenshot set — even when a full Danish localization was live on the store.
- Localized previews everywhere — the Listing Manager now requests each localization explicitly, so every locale in the rail shows its own name, subtitle, description, and screenshots. This applies to both stores.
- Listing Helper drafts too — draft generation for non-English locales now grounds on the localized subtitle and screenshots instead of the English ones.
- NewImproved
Competitor keywords now flow into the Discovered tab
Until now, the full list of keywords a competitor ranks for lived only in the per-competitor Keywords sheet on the Competitors page — easy to miss if you went looking on the Keywords page instead. Now the best of that list comes to you.
- Competitor-ranked keywords in Discovered — whenever Sonar scans a competitor (on add, on a manual scan, or during the weekly refresh), keywords they rank in the top 30 for — in your app's market, that you're not already tracking — land in Keywords → Discovered as competitor suggestions.
- Evidence on the badge — competitor-sourced rows now show the rank behind the suggestion: the source badge reads "Competitor #10", and hovering it tells you which competitor holds that spot.
- Quality-filtered — only keywords from your app's store and country make the cut, so a US recipe app won't "discover" fitness keywords from another market. Deep rankings past #30 stay in the competitor sheet, where the complete list still lives.
- API included —
GET /api/v1/apps/:id/discovered-keywordsresponses now carrycompetitor_rankandcompetitor_nameon competitor-sourced rows.
- NewFixed
API: app overview, portfolio, discovered keywords, alert events, and review insights
The API (and with it the MCP server and CLI) now covers five more things you could previously only see in the dashboard:
- App overview —
GET /api/v1/apps/:id/overviewreturns the dashboard's computed scoreboard in one call: visibility index and share of voice with 7-day deltas, ranked and top-10 keyword counts with movement, best rank, top improvements and drops, the rank-distribution trend, and the actionable opportunity list. It's the same code the dashboard runs, so an agent asking "how is my app doing?" gets the same answers you see. CLI:sonar apps overview, MCP:sonar_app_overview. - Portfolio rollup (Agency) —
GET /api/v1/portfolioreturns the whole portfolio's health: per-app KPIs, org-wide totals, the biggest keyword movers, the needs-attention list, and the best keyword opportunities across all your apps. CLI:sonar portfolio, MCP:sonar_portfolio. - Discovered keywords —
GET /api/v1/apps/:id/discovered-keywordsreturns the keywords Sonar's discovery engine surfaced for your app but that you aren't tracking yet: ranked finds, competitor gaps, and idea suggestions, each with metrics, AI relevance, and an opportunity score. It's the "what should I track next" answer, ready for an agent to read and act on with the existing track-keywords endpoint. CLI:sonar keywords discovered, MCP:sonar_discovered_keywords. - Alert events feed —
GET /api/v1/alerts/eventsexposes the same detected-changes feed as the in-app Recent alerts panel (rank drops, review spikes, competitor moves, …). Poll it with?since=to react to changes programmatically instead of waiting for the email digest. CLI:sonar alerts events, MCP:sonar_alert_events. - AI review insights —
GET /api/v1/apps/:id/review-insightsreturns the latest AI review analysis for any tracked app (yours or a competitor's): praise and complaint themes with quotes and trend movement, sentiment, and feature requests. APOSTto the same path generates a fresh one (90-day cooldown per app and country). CLI:sonar apps insights/sonar apps analyze-reviews, MCP:sonar_review_insights/sonar_generate_review_insights.
The MCP server now exposes 53 tools with full API parity. Update to
@sonarapp/mcpand@sonarapp/clilatest to pick up the new tools and commands.Also fixed: generating an AI competitive analysis via the API (
POST /api/v1/apps/:id/competitor-landscape) now respects the same paid-plan requirement as the dashboard — trial accounts get a cleartrial_lockederror instead of silently spending the AI call. Reading the landscape stays available on trials. - App overview —
- New
Official Apple search rankings in Trends
Trends now runs on official Apple data. Apple publishes weekly rankings of the top 500 search terms in each App Store genre — real search popularity, straight from the source — and Sonar ingests them every week, with history back to October 2025.
What's new on the Trends page:
- One rising-keywords list — the Keywords tab now shows a single
- Top ranked view (App Store) — browse the current week's official Apple
- Breakout apps — brand searches climbing Apple's rankings fast. When an
- Apple-backed niches — niche cards show the best official Apple ranking
Momentum scoring behind the scenes also got sharper: rising terms that enter or climb Apple's official rankings now score higher, and brand searches are kept out of niche suggestions automatically.
- New
Filter keywords to beatable ones
Sonar already flags two winnability signals on your tracked keywords: the green Beatable badge (a top-3 spot held by an app far weaker than the rest of the results) and the amber outlier dot (an app in the top 10 ranking way above its strength — usually winning on metadata alone). Until now you had to scan the table for them.
The Keywords page now has an Opportunity filter that narrows the table to exactly those rows: beatable keywords, keywords with a SERP outlier, or either. It works on the single-store and cross-store tables alike, persists with your other filters, and combines with them — filter to beatable keywords above popularity 30 in one market and you have a shortlist worth targeting.
Cross-store tables also now show the Beatable badge and outlier dot inline, so the signals are visible even with the filter off.
- New
See which keywords you just gained or lost
Ranking for a keyword you didn't rank for last week is one of the strongest signals in ASO — and losing one is something you want to catch fast. The Rankings page now surfaces both at a glance:
- Movement filter — a new filter in the Rankings toolbar with two views:
- New / Lost badges — matching badges appear next to the keyword in the
- Export included — CSV/JSON exports carry a Movement column, so the same
Keywords you only just started tracking don't count as "newly ranking" — the badge is reserved for genuine movement, where a keyword you'd been tracking for a while finally shows up in the results.
- New
Sonar skills for Claude Code and Cursor
The Sonar MCP server gave AI agents the tools; the new skills give them the workflows. github.com/trysonar/skills packages ten step-by-step ASO playbooks your agent can follow with live Sonar data:
- Research — keyword research (with the
beatableshortlist signal), - Execution — metadata optimization with exact character counts, ASO
- Foundation — a shared app-marketing context document every skill reads
Install into Claude Code with
npx skills add trysonar/skills, or drop theskills/folders into Cursor, OpenClaw, or any Agent Skills-compatible client. Skills chain into each other — a competitor scan hands gap keywords to keyword research, which feeds metadata optimization, and rank tracking measures the result.Several Sonar endpoints work with no API key at all, so your agent can try the data before you create an account.
- Research — keyword research (with the
- ImprovedFixed
The API now accepts bundle ids and keyword text, not just internal ids
If you called an endpoint like
/api/v1/apps/:id/rankingswith your app's bundle id (com.example.app) instead of its Sonar id, you got a500with no explanation. That was our bug, and it was the single biggest source of server errors on the API. It's fixed twice over.Wrong identifiers now fail clearly. Anything we can't resolve returns a
404telling you the app or keyword isn't tracked, and malformed ids in bulk operations return a400naming exactly which entries were wrong.And the identifier you already have now just works. Wherever an endpoint takes an app
:id, you can pass the bundle id or package name instead:GET /api/v1/apps/com.example.app/rankings GET /api/v1/apps/com.example.app/keywordsGET /api/v1/keywords/:id/rankingsalso accepts the keyword text (/api/v1/keywords/habit%20tracker/rankings), andPOST /api/v1/alertsaccepts a bundle id forscope_app_id. No extra lookup call just to translate an id you already know.Two things worth knowing: identifiers resolve only within apps your organization tracks, so they never reach another account's data. And when the same bundle id exists on both stores (or a keyword is tracked in several markets), you'll get a
400telling you to disambiguate with?store=iosor?store=ios&country=usrather than us guessing which one you meant.Internal ids work exactly as before — nothing you've already built needs to change.
- Fixed
Failed API requests no longer count against your daily limit
Previously, every authenticated API request counted against your plan's daily limit the moment it arrived — including requests that came back empty-handed. If our scraper queue was congested and you got a
429 — "Scraper queue is busy, retry shortly.", that failed call still spent one of your 1,000 daily requests (150 on trial). A busy period could burn through a big chunk of your quota without returning a single data point.That's fixed. The daily quota now settles the same way credit billing always has: only successful responses (status below 400) count. Scraper-busy 429s, validation errors, and server errors are free — when you see a
Retry-Afterheader, backing off and retrying costs you nothing. The same rule now applies to the anonymous free tier's per-IP allowance.Thanks to the customer who reported this — if your automated jobs hit busy windows before today, your quota was back to full for the affected day.
- NewImproved
iOS / Android filter on Discovered keywords
For products tracked on both stores, the iOS / Android / Both switch used to exist only on the Tracked keywords table. It now sits in the tabs header and applies everywhere at once: the Tracked table, the Discovered table, and the opportunity matrix — so you can judge your discovery options per platform, both in the table and on the quick-wins plot.
Details worth knowing:
- Discovered comparison view redesigned. "Both" now shows the same
- Single-store scopes are truly single-store. They show only that store's
- The matrix follows the switch. In iOS or Android scope, the plot uses
Your choice is remembered across visits, per browser.
- Improved
Screenshot Studio: multi-select and layer groups
Editing multi-layer compositions just got much faster:
- Multi-select. ⌘/⇧-click layers on the canvas or in the layers panel to
- Groups. ⌘G groups the selection, ⇧⌘G ungroups. A plain click on a
- Smoother layers panel. Dragging a layer into another screenshot's group
- Fixed
More accurate ASO score checks
We audited every factual claim behind the ASO score and tightened the ones that had drifted out of date:
- Google Play title length — Play has capped app titles at 30 characters
- Store-aware description tips — Google Play indexes your description for
- Release notes — no longer described as a keyword opportunity (they
The fixes apply everywhere the ASO score appears: the free ASO score checker, your app snapshot, the dashboard, the API, CLI, and MCP tools.
- New
Priority rank refresh for Agency plans
Keywords tracked on the Agency plan now jump to the front of the daily rank-tracking queue.
- First in line every day — your keywords' rankings, difficulty, and
- Protected under load — if the trackers ever fall behind, Agency
Nothing to configure — it applies automatically to every keyword tracked by an Agency plan workspace. This completes the Agency launch lineup: team seats, portfolio rollup, white-label client reports, and priority refresh are all live.
- ImprovedFixed
Screenshot Studio: layers that cross screenshots now behave
Designs that flow across the screenshot strip — a mascot straddling two screenshots, a device mockup peeking in from the next slide — now work end-to-end:
- Exports include cross-screenshot bleed. Every export (single PNG, ZIP,
- Move layers between screenshots in the layers panel. Drag a layer row
- Position decides ownership on canvas. Drag a layer so that most of it
- Fixed
Fixed: Screenshot Studio could freeze opening some sets
Opening a screenshot set could freeze the whole tab on "Loading editor…" — specifically for sets duplicated from one device size to another (e.g. an iPhone set copied to iPad). The device conversion scales caption font sizes, and a fractional font size could send the caption auto-fit logic into an endless loop while the canvas drew its first frame.
The auto-fit search now always terminates, so affected sets open normally again. The same fix protects per-locale PNG exports, which share the auto-fit code and could stall on long translated captions the same way.
- Improved
Autocomplete Simulator now computes missing metrics on the spot
Until now, the Autocomplete Simulator only showed popularity and difficulty for keywords Sonar had already measured — anything new (or any freshly added storefront) rendered empty dashes.
Now, when you pause typing, the simulator computes the missing metrics on the spot: the empty cells switch to "Calculating…" and fill in one by one as real SERP-based difficulty and popularity land, usually within half a minute. Once computed, the values are cached — the next person to look up the same term in that country gets them instantly.
This makes the simulator genuinely useful in newer storefronts (say, Kazakhstan, added earlier today) where the metrics corpus is still empty.
- New
19 new countries, from Kazakhstan to Peru
Sonar now supports 74 countries — 19 new storefronts across both stores, available everywhere a country picker appears: rank tracking, keyword research, discovery, and the Autocomplete Simulator.
The new additions:
- Central Asia & CIS — Kazakhstan, Uzbekistan, Azerbaijan, Belarus
- Europe — Bulgaria, Croatia, Slovenia, Lithuania, Latvia, Estonia, Iceland
- Latin America — Peru, Ecuador, Uruguay
- Middle East & Africa — Qatar, Kuwait, Morocco
- South Asia — Pakistan, Sri Lanka
Every storefront was verified live against both the App Store and Google Play before shipping, so search results, autocomplete suggestions, and keyword metrics work from day one.
Missing a market you need? Just reply to any Sonar email — this batch started with a single customer request.
- New
Export screenshots via API — no browser needed
Screenshot Studio sets could always be authored by agents through the API — but the final pixels only existed behind the in-browser export button. That gap is closed: rendering now also runs on our servers.
GET /api/v1/screenshots/sets/:id/exportreturns a ZIP of store-ready- Same engine as the editor — server renders go through the exact scene
- New MCP tool
sonar_export_screenshots— agents can now go from layout
- Fixed
Screenshot Studio opens heavily localized sets instantly
Opening a screenshot set with localized in-app captures across many locales could previously hang the studio indefinitely — the editor tried to load every locale's images up front, which for a 30-locale set meant tens of megabytes before the first paint.
- Instant open — the editor now loads your screens first and fetches each
- Safe by design — the translations sheet waits for a locale to finish
- Exports unchanged — per-locale and all-locale ZIP exports load what they
- Improved
Alert emails: grouped by app and store
The daily alert digest got a structural overhaul, based directly on customer feedback:
- Grouped by app and store — each rank section now nests app → store → keywords. Your app's name appears once as a heading, and App Store and Google Play get their own labeled sub-sections with counts, so you can read each store's dynamics separately instead of scanning a mixed list.
- Keywords lead the lines — no more repeating the app name on every row; each line starts with the keyword and its movement ("spanisch lernen" — 🇦🇹 AT #45→#125 (▼80)).
- Severity-first ordering — the biggest moves come first: full drop-outs ordered by the position you lost, then falls by distance, then alphabetically.
- One line per country — a keyword tracked in many markets shows the keyword once with each country's movement on its own line, instead of one long comma-joined run.
- Summary up front — the intro now counts changes per type with a per-store split ("51 rank drops — App Store 20 · Google Play 31").
- Less noise — duplicate lines from the same term tracked twice are removed, and repeated competitor release events collapse into one line with a count.
- New
White-label client reports for Agency plans
Agency plans can now send every client a white-label weekly report — a clean, shareable page that carries your agency's branding, not ours.
- Your brand, not Sonar's — set your logo, display name, and accent
- One link per client — pick the products a client should see, get a
- Frozen weekly editions — a new edition is captured every Monday and
- What clients see — top-10 keyword counts with week-over-week change,
Find it in the sidebar under Client reports. Available on the Agency plan.
- New
Auto-track ranked discoveries
Discovery keeps finding keywords your app already ranks for — until now you had to promote them by hand. The Discovered tab has a new Auto-track ranked switch (per app):
- Turning it on immediately tracks every ranked discovery waiting in the tab.
- From then on, whenever discovery or a rank refresh finds your app holding a
- Plan keyword limits are respected: the best-ranked keywords are tracked
Keyword ideas you don't rank for yet are never auto-tracked — those stay your call.
- New
Listing Manager: every localization of your live listing, in one place
Your listing probably exists in more languages than you think about. The new Listing Manager (Tools → Listing Manager) puts all of them in one place.
- Locale rail — every localization your listing currently ships in, with your primary market pinned first. Pick one to see exactly what's live there.
- Full field view — App Name, Subtitle, Keywords, Promotional Text, Description, What's New (Title, Short and Full Description on Google Play), each with its character budget, over-limit warnings, and per-field copy.
- Pull the hidden fields from App Store Connect — Apple never shows your Keywords field or Promotional Text publicly. Connect your App Store Connect account (Settings → Connections) and the Listing Manager pulls them straight from your account, for every localization at once.
- Store preview — the selected locale's live copy rendered in real App Store / Google Play mockups, with that storefront's screenshots.
- Target keywords per language — each localization now carries its own priority-ordered target list. Localizations you created before Sonar start empty: pick their targets whenever you like and they're synced back in — and tracked in that storefront from then on.
- Add languages in bulk — select as many languages as you want (or Select all) and add them in one go. Anything not live yet lands in a separate Drafts section of the rail, so you can prepare a localization long before it exists on the store.
- New language? Start with the keywords — a freshly added language opens on "What should German rank for?", showing the keywords you already track in that market plus the ideas discovery found, with popularity, difficulty and opportunity. Nothing there yet? Start automated keyword research for that market in one click.
- Keeps you inside Apple's limits — keywords beyond your top 3 go to the hidden Keywords field, which Apple caps at 100 characters. You see the exact string that would go there and a live character count, and saving is blocked while you're over — no more discovering the limit in App Store Connect.
- Straight into editing — "Edit listing" drops you into the Listing Helper with the store, locale and target keywords preselected.
It's the new front door of the listing workflow: see what's live, spot the gaps, then draft the fix.
- New
Portfolio view for Agency plans
Agency plans now include the Portfolio page: your whole catalog in one view, built to answer which app needs attention, which is winning, and what to do next.
- Visibility score per app — a popularity-weighted rank index that makes
- Needs attention — a triage list that surfaces apps losing visibility,
- Top movers, weighted by impact — climbs and drops ranked by the
- Top opportunities — the best discovered keywords across your whole
- A per-app table you can shape — sortable, with the columns you care
Find it in the sidebar under Dashboard. Available on the Agency plan.
- New
Team seats for Agency plans
The first of the Agency plan's team features is live: team seats.
Agency plans include 5 seats — you plus four teammates. Invite them by email from Settings → Team, and choose their access level:
- Members get full access to keyword research, rank tracking, and
- Viewers get read-only access: dashboards, rankings, and reports, with
Every seat can also be limited to specific products — invite a client with a viewer seat scoped to their app, and that's all they'll ever see.
Billing, API keys, and team management stay with the account owner. Invitees follow an email link, sign in (or create a free account), and land straight in your workspace.
Portfolio rollup, bulk keyword operations, and white-label client reports are next on the Agency roadmap.
- New
Visibility score & share of voice on your dashboard
Your product dashboard now leads with two numbers that summarize search performance, each with its own 30-day timeline chart:
- Visibility — your reach: each tracked keyword contributes its search
- Share of voice — your capture rate: visibility divided by the total
- Honest trends — the 7-day deltas compare only keywords that were
- New
New Agency plan — for studios and agencies running a portfolio
> Pricing update — September 15, 2026: New accounts pay $29/month or $290/year for Indie, and $149/month or $1,490/year for Agency. Existing customers keep their rates. Prices below describe the July launch. See current plans.
Sonar started as a tool for one developer with one app. A lot of you now run portfolios — dozens of apps, thousands of keywords, several markets, sometimes on behalf of clients. The single plan was never designed for that, so there's now a second one.
Agency — $99/month or $990/year
Everything in the Indie plan, plus — available today:
- 50 apps and 10,000 tracked keywords
- REST API at 5,000 requests/day
And rolling out over the coming weeks:
- 5 team seats
- Portfolio rollup — ranks, movement and coverage across every app in one
- Bulk keyword operations across your whole portfolio
- One alert digest for everything, instead of a separate email per app
- Priority rank refresh
- White-label client reports and scheduled exports
If you subscribe now, you get each of those the moment it ships — at the same $99. Agency subscribers also get a direct line on what ships first: tell us what your workflow needs and it moves up the list.
What changes for the Indie plan
The $19 plan keeps every feature it has today — all countries, unlimited history, daily rank tracking, competitor and gap analysis, the API, CLI and MCP. It's now sized at 10 apps and 2,500 keywords, with unlimited competitors on top of that. Competitor tracking is never capped on any plan.
Need more than the Agency plan covers? Get in touch and we'll sort out something that fits.
- Fixed
Consistent \">200\" rank everywhere a rank is shown
When an app falls below the trackable window (the stores return roughly the top 200 results), the rankings list has always shown it honestly as >200 (was #N). But two other surfaces still presented the last-known rank as if it were current — thanks to the user who reported the mismatch:
- Keyword detail popup — the "Your Rank" row now shows >200 (was #N) with the last-seen date in the tooltip, instead of a confident stale rank.
- Rank sparkline — the trend sparkline on the Rankings page now greys out and switches to a dashed line when the series ends at a last-seen rank rather than a live one, with an explanatory tooltip.
One rule, every surface: a rank is only shown as current when your app was in the most recent search results.
- Improved
Alert emails now show store and country for every rank change
If you track the same keyword on both the App Store and Google Play — or across several countries — the daily alert digest used to leave you guessing which one actually moved. No more:
- Store + country on every rank line — each rank drop, gain, top-10 change, and new ranking now carries its market, e.g. ConjuGato fell from #5 to #11 for "learn spanish" (App Store · 🇫🇷 FR). The in-app alerts feed shows the same labels.
- One line per keyword, not one per country — when the same keyword moves in several countries on the same store, the digest collapses them into a single compact line: fell for "learn spanish" on App Store: 🇬🇧 GB #8→#15, 🇺🇸 US #12→#20. Tracking a keyword in 30 markets no longer means 30 near-identical rows on a volatile day.
- Weekly report too — the "Your week in ASO" email now labels each app section with its store and each top mover with its country flag, so same-named iOS and Android listings (and the same keyword across markets) are no longer ambiguous.
Thanks to Ivan for the request!
- Improved
Clearer keyword table for dual-store apps
Tracking a product on both stores used to mean cramped two-line metric cells and sorting that quietly mixed iOS and Android values. That's gone.
- Store scope switcher — a new iOS / Android / Both control on the tracked-keywords table. Pick a store to get a clean, flat table with just that store's popularity, difficulty, gap, and rank — sorting does exactly what the column header says. Your choice is remembered.
- Side-by-side comparison — the Both view now shows an App Store column group next to a Google Play column group, each independently sortable, so cross-store gaps ("#5 on Google Play, unranked on the App Store") jump out at a glance.
- Markets, not "stores" — the country column and filter are now labeled Market across the keyword, rankings, and discovered tables, so "store" always means iOS vs Android.
- Tidier keyword rows — Source and Branded/Generic badges are now their own columns (with an optional Updated column in the Columns menu), so keyword rows are a single clean line and long terms no longer wrap.
- New
See your listing the way the store shows it
Character counters tell you a title fits. They don't tell you it gets truncated three words in, because the stores clip by pixel width — 30 characters of "Wi" survive where 30 of "MM" don't.
The Listing Helper now has a Store preview: your drafted copy rendered inside a phone mockup of the placements that actually decide installs.
- App Store — the search result cell (one line each for App Name and Subtitle, plus your first three screenshots) and the product page, with the description clipped where Apple shows "more".
- Google Play — the search result card and the store listing, including "About this app", where your short description is all anyone reads before tapping through.
- Truncation, measured — when a field is visually cut off in that placement, the preview says so. Those words still get indexed; nobody reads them.
- Your screenshots, in place — the preview uses what's live on your storefront, and if you've designed a set in Screenshot Studio you can switch to it in one click and see the new shots in the real result cell.
Everything updates as you type, and the mock search field uses your #1 target keyword — so you're looking at the listing in the exact query it's competing for. There's a store dark-mode toggle too, because half your visitors see it that way.
- Fixed
Mobile: the product switcher list scrolls again
If you track more than a handful of products, tapping the switcher at the top of the mobile sidebar opened a list that refused to scroll — the apps below the fold were simply unreachable, and the only way to switch was on desktop.
The mobile sidebar is a drawer, and its scroll lock was swallowing the swipes meant for the list on top of it. The switcher now owns its own scroll behaviour, so the full list of products and research projects scrolls normally on phones.
- New
Autocomplete Simulator: watch the store suggest, live
Autocomplete is the store's own demand signal — what it suggests is what real users type. The new Autocomplete Simulator (Tools → Autocomplete) puts that signal on screen:
A phone in your dashboard. Pick a store and country, start typing, and a faithful phone mockup — App Store search tab on iOS, Play Store search on Android — fills with the store's live suggestions on every pause, exactly as a user would see them. There's even a store dark-mode toggle.
Suggestions you can act on. Next to the phone, every suggestion comes enriched with the popularity and difficulty Sonar already knows, an iOS suggest-priority column, and a Tracked badge for terms already on your list. Copy a term, export the list, or track any suggestion to one of your products in two clicks.
Click a keyword to see who ranks for it. Any suggestion opens a live results panel — the top 10 apps for that keyword, with the keyword lit up wherever it appears in an app's name or subtitle. One glance tells you how contested the term is and who's titling for it. Apps punching above their weight get an Outlier badge: they hold a top-10 slot with a fraction of the ratings of everyone around them, which usually means they're winning on metadata alone — exactly the listings worth studying.
Then click the app. Any result opens its full store listing right beside the results: rating, price and in-app purchase range, estimated revenue, category, version and update history, size, screenshots, and the complete description with your keyword highlighted throughout — the whole picture of what a ranking listing actually looks like. Found a real rival? Track as competitor adds it to one of your products and kicks off a keyword scan, without leaving the panel.
"When does my keyword appear?" Switch to Keyword reveal mode, enter your target keyword, and Sonar probes how many characters a user has to type before the store starts suggesting it — then replays the typing on the phone so you can watch your keyword surface. If it never shows up by nine characters, that's an honest signal too: the store hasn't learned the term yet.
- New
Top Charts: browse the store charts with day-over-day movement
You can now browse the App Store and Google Play Top Charts right inside Sonar — the full top 100 for any country and category, across Free, Paid and Grossing.
- Day-over-day movement — every app shows how many spots it climbed or fell since yesterday,
- Biggest movers & dropped out — spot which apps are surging and which just fell off the
- Your apps, highlighted — apps and competitors you track are marked in the list, so you can
- 30-day rank history — expand any row for a mini chart of its recent trajectory. The first
- Export & API — download any chart as CSV/JSON, or pull it programmatically via
Find it under Tools → Top Charts.
- Improved
Trends: dramatically cleaner niches and rising terms
The first weeks of Trends taught us something about Apple's autocomplete: for rare prefixes, the bottom of the suggestion list is padded with developer and company names that churn constantly — and our early-signal scoring was treating that churn as emerging demand. The result was niche cards full of terms nobody actually searches for.
That's fixed, with several layers working together:
- Padding is filtered out — terms that only ever appear at the very bottom of the suggestion list, company names, publisher names, and non-English noise are excluded from every Trends surface.
- Emergence has to be earned — a term now needs repeated sightings across multiple days and a meaningful suggestion position before "newly suggested by the store" counts for anything. A single flicker at position 10 scores zero.
- The AI clustering can now say "junk" — instead of being forced to group whatever it's given, the weekly niche clustering discards unusable terms, and a new niche is only created when enough of its members show real demand evidence.
- Cleaner ordering — niches whose keywords carry verified demand data sort above ones that don't, so the strongest signals lead the page.
Existing noise niches have been retired and the corpus re-scored. The Niches, Rising keywords, and New in autocomplete tabs should all read as genuinely buildable signal now — and precision keeps improving as the corpus ages.
- Improved
Finding your app just got a lot harder to get wrong
Every search box in Sonar — the demo dashboard, the add-app wizard, competitor search, the revenue explorer — got the same upgrade:
- Paste anything that identifies your app. Full store URLs, share links with tracking parameters, links without the
https://, bare Apple app IDs like1313192037, and bundle IDs / Play package names likecom.yourco.appall resolve straight to the right app instead of being treated as a search phrase. - Pick your storefront. Searches used to be pinned to the US store, so an app published only in its home market was impossible to find by name. There's now a storefront selector next to the store toggle, and a pasted app ID that isn't in your chosen storefront is looked up in the other major markets automatically.
- Your app instead of its more famous namesake. We now pull a much deeper result list and lift exact title matches to the top, so a small app doesn't get buried under bigger apps that merely share a word.
- Search by developer name. Can't remember the exact listing title? Search your publisher name and get your whole catalogue back.
- No more dead ends. If a search comes up empty, you get one-click retries on the other store, by developer name, or in the US store — and transient store hiccups are retried automatically instead of showing "no results".
- Paste anything that identifies your app. Full store URLs, share links with tracking parameters, links without the
- New
Pay with PayPal
PayPal is now a payment option. Starting a trial, subscribing, or buying API credits — PayPal and Link both show up next to the card form, and you can pay with whichever you prefer.
This is mostly for people outside the US and EU. A lot of banks quietly block international recurring card charges, which means a card that works fine for one-off purchases still fails when a subscription tries to renew. If that's been happening to you, PayPal routes around it entirely.
Already subscribed? Settings → Manage Subscription lets you update your payment method at any time.
- Fixed
Accurate competitor update dates
The date shown under each app's version in the Competitors table was the date Sonar first detected the app — so freshly added competitors all appeared to have been "updated yesterday", even if their last real store update was months ago.
The table now shows the app's actual last-updated date straight from its App Store / Google Play listing, for both your own app's anchor row and every competitor. The date is also included in CSV/JSON exports as a new "Updated" column.
Thanks to Furkan for the sharp bug report.
- NewImprovedFixed
Listing Helper is now a listing editor
The Listing Helper grew from a one-shot generator into a proper listing workspace:
Your live listing is draft zero. The page now opens with what's actually on the store today — name, subtitle, description — with your target keywords highlighted, so you can see your coverage gaps before spending a generation. Every AI draft is a visible improvement over a known baseline, and per-field links let you flip between the live copy and the AI version.
Edit everything in place. Each field is editable right in the workspace with a live character count, so an over-limit subtitle gets trimmed where you can see it, not in a text editor somewhere else. Hand edits can be saved as drafts, and "Copy all" grabs the whole listing in store-paste order.
Re-roll one field, keep the rest. Liked the App Name but not the description? The new per-field regenerate rewrites just that field while everything else stays fixed — no more losing good copy to a full re-roll.
No more blank-canvas start. One tap fills your target list with the best popularity-for-difficulty picks from your tracked keywords, each priority row shows exactly where it lands (#1 → App Name, #2–3 → Subtitle…), and free-form targets can be tracked in one click so they start getting daily ranks.
Honest coverage for iOS. A keyword that only made it into the description now shows an amber badge instead of a green check — Apple doesn't index the description for search, and your coverage score shouldn't pretend it does.
Plus the earlier upgrades in this release: the draft history paginates past the first 20 (loading a draft now restores its locale, notes and keywords too), and if you've built a Screenshot Studio set for the app, the workspace previews it in the language of the draft you're viewing.
- Improved
A cleaner Competitors page: live position tabs and a browsable analysis history
The Competitors page used to be four big numbers and one inline AI analysis stacked above the competitor list. It's now organized into three tabs — Competitors, Competitive position, and AI analyses — so your competitor table is always the first thing you see:
- Competitive position — Keyword gaps, Winnable now, Threats, and You lead are tabs over real keyword tables: each shows the keywords themselves with country, the best-ranked competitor, both of your ranks, popularity/difficulty, and opportunity (threats show the competitor's rank movement). Click any row to jump to that keyword's detail page.
- A saved analysis list — every AI analysis you run is kept in a list, newest first, with its posture, date, and a one-line summary.
- Each opens on its own page — click any analysis for the full opportunity clusters, threats, and strengths, with Newer / Older buttons to page through your history. Running a new analysis drops you right into its page, and the previous ones stay saved so you can compare.
- Improved
Sonar works on your phone now
Checking your rankings from your phone used to mean fighting a desktop layout — pages scrolled sideways, filters spilled over three rows, and tables cut off mid-column. That's fixed across Keywords and the entire Monitor section:
- Card views on mobile — tracked keywords, rankings, and competitors now render as compact tappable cards showing the numbers that matter (rank, popularity, difficulty, changes, ratings). Tap a card to open the full detail view — same actions as on desktop.
- Filters in a bottom sheet — the search box stays up top; everything else (source, stores, thresholds, starred-only) lives behind a Filters button with a badge showing how many are active, plus a Sort by picker replacing clickable column headers.
- Activity reads as a timeline on mobile — the chronological feed that already worked great on small screens is now the default there.
- No more sideways scrolling — page headers, tabs, and toolbars fit the screen at any width.
Desktop layouts are unchanged.
- NewImproved
A cleaner Rank Trend chart
The Rank Trend chart at the top of the Rankings page got a full refresh:
- Pick your window — a date range picker (7 days up to all time, or a custom from–to) replaces the fixed 30-day view.
- Compare periods — overlay the previous period, the same period last year, or any custom start date as a dashed ghost line to see whether you're actually trending up.
- Full-width chart — the annotations side panel (and the card box itself) is gone, so the chart spans the whole page width. Adding a note now lives in the header ("+ Annotation"), and existing notes appear as a compact chip rail under the chart.
- A scale that shows movement — the Y axis now fits your actual rank range instead of always starting at #1, so a ±10-position swing reads as a real swing, not a flat line.
- Less chrome, more signal — horizontal-only gridlines, tidier weekly date labels, a subtle fill under the average line, and a highlighted dot on the latest value.
- Annotations that talk to the chart — hover a chip to spotlight its marker; click it to read, edit, or delete the note. Detected app changes (new versions, metadata edits) show alongside as read-only chips.
- NewImproved
AI-powered competitor keyword discovery
Competitor keyword scans just got a complete overhaul. The old scan pulled a top-30 sample from autocomplete and stopped there; the new one runs the same AI-first discovery funnel your own apps get.
What's new:
- Suggested competitors — the Competitors tab now pre-populates suggestions instead of starting empty: apps that already share the search results of your tracked keywords ("ranks on N of your keywords"), plus similar apps from the store. Add them all with one click, add one by one, or dismiss the ones that don't fit — searching manually still works as before.
- AI-generated competitor keywords — Sonar reads the competitor's full store listing and generates the search terms it's optimized for, including its brand queries and derivatives ("… alternative", "apps like …"). Those are exactly the gap opportunities the old scan couldn't see.
- Automatic, from the moment you add a competitor — adding a competitor now kicks off discovery in the background; no button pressing required. Scans also refresh weekly on their own, so gap data stays current instead of freezing at the day you scanned.
- Everything is surfaced, with a Relevance score — instead of silently filtering, every verified competitor keyword is shown alongside an AI relevance score (0–100 vs your app), as a sortable column in both the competitor view and the Discovered tab. Sort by relevance to focus on winnable gaps, or ignore it to see the competitor's full keyword footprint.
- Live progress — the competitor panel shows "Discovering N more…" while background verification runs, and new keywords stream in as they're confirmed with real popularity, difficulty, and both apps' ranks.
API users:
POST /api/v1/competitors/:id/scannow returnsgenerated/queued/verified_nowcounts — the scan responds in seconds and verification continues in the background. The CLI and MCP tools are updated to match. - New
App Store Connect integration: your real downloads and proceeds, next to your rankings
Rankings tell you where you stand; your sales reports tell you what it's worth. Sonar can now pull both into one place:
- Connect in two minutes — create an API key in App Store Connect (Users and Access → Integrations, "Sales and Reports" role), paste it under Settings → Connections, and Sonar verifies it with Apple on the spot. Your key is stored encrypted and only ever used server-side to fetch your reports.
- A new Performance page — once connected, an App Store Connect section appears in the sidebar. For each product you'll see 30 days of daily downloads and re-downloads, in-app purchase units, approximate proceeds in USD, and your top countries.
- Fresh every day — Sonar syncs your daily sales reports automatically (with a 30-day backfill the moment you connect), so the chart is always ready when you are.
- Private by design — this is your first-party data, visible only to your workspace. Disconnecting deletes the stored key and every pulled report.
- New
Beatable keywords, SERP outliers, and downloads-at-#1 estimates
Experienced ASO buyers don't trust any tool's opaque difficulty score — they read the raw SERP signals: who title-matches the keyword, and how strong the apps in the top 3 really are. Sonar now reads them for you:
- Beatable badge — keywords where a top-3 spot looks winnable get a green Beatable badge right next to the keyword (table + detail page). Hover it for the evidence: "the #3 app has just 138 ratings against a 40K median, and only 2 of the top 10 have this keyword in their title." The full breakdown is also on the API as
difficulty_breakdown, and the CLI marks beatable rows in the keywords table. - SERP outliers, with a one-click follow-up — apps holding a top-10 slot with 10x less social proof than the rest of the results are flagged with an amber Outlier badge in the SERP view (and a dot next to the keyword). These apps are out-ranking their strength — almost always strong metadata. Click the badge and hit "Track as competitor & scan": one click tracks the app as a competitor and kicks off the keyword scan that reveals everything it ranks for.
- Downloads at #1 — iOS popularity scores now translate into something you can reason about: hover any popularity bar to see the estimated downloads/day the #1-ranking app gets from that keyword (also available as an optional table column, on the free app snapshot, and as
est_downloads_at_1on the API). A rough order of magnitude, not a forecast — but "~120 downloads/day" beats "SP 34" when you're picking targets. - A much roomier keyword panel — clicking a keyword now opens a wide three-column panel instead of the narrow drawer: metrics (including the new downloads estimate and Beatable evidence), 30-day trend charts with proper date axes, competitor ranks, and the full search results — all in one view, matching the keyword detail page.
Badges populate as each keyword gets its next daily measurement, so expect them to fill in over the first day.
- Beatable badge — keywords where a top-3 spot looks winnable get a green Beatable badge right next to the keyword (table + detail page). Hover it for the evidence: "the #3 app has just 138 ratings against a 40K median, and only 2 of the top 10 have this keyword in their title." The full breakdown is also on the API as
- New
Competitive landscape: AI competitor analysis on the Competitors page
Competitor research used to mean digging through raw keyword lists one competitor at a time. The Competitors page now opens with the whole picture:
- Live competitive stats — always fresh, on every visit: keyword gaps (they rank, you don't), gaps that are winnable right now (low difficulty, real demand), competitors climbing on your tracked keywords over the last two weeks, and keywords where you outrank everyone.
- AI competitive analysis — one click groups your gaps into named opportunity clusters ("Sleep sounds & white noise — 8 keywords, low difficulty, one competitor owns it") with a why-now explanation and full metrics per keyword. Each cluster has a Track all button, so going from insight to rank tracking takes one click.
- Threat callouts — when a competitor jumps on one of your tracked keywords (say #12 → #4 in two weeks), you'll see it called out with context, including recent listing changes that may explain the move.
- What changed since last time — re-analyze weekly and the report diffs itself against the previous run: clusters that grew, threats that appeared, positions you've defended.
- Dashboard heads-up — a compact card on your dashboard surfaces the sharpest fact ("18 winnable keyword gaps — biggest: 'sleep sounds'") and links straight to the full landscape.
Also available to your agents and scripts:
GET/POST /api/v1/apps/:id/competitor-landscapein the API,sonar competitors landscape/analyzein the CLI, and thesonar_competitor_landscape/sonar_analyze_competitorsMCP tools. - Improved
A cleaner Discovered keywords tab
The Discovered tab used to stack three separate tables ("Keywords you rank for", "Keyword gaps", "Keyword ideas"), each with its own filter bar — filtering or sorting meant repeating yourself three times. It's now a single table with quick views:
- All / Ranked / Opportunities — flip between everything discovery found, keywords you already rank for, and keywords you don't rank for yet. Each pill shows how many new keywords are waiting in that view.
- Gaps and ideas are now one "Opportunities" view — both are keywords you could go after; the Source badge (Competitor, AI, Autocomplete, Your listing) still tells you who vouched for each one. Sorted by Opportunity score, best first.
- One toolbar for everything — search, source, store, and popularity/difficulty filters apply to whichever view you're on, and your column choices are shared too.
- Clearer bulk actions — the top button is now explicitly "Track all ranked", and the stale-rank counter says exactly what it covers.
- Product view matches the app view — the cross-store Discovered table now shows the same columns as the single-store one, including Source, Store, Relevance, and Last checked.
- Metrics explained where you need them — hover any metric column header (Popularity, Difficulty, Relevance, Opportunity…) for a one-line plain-English definition.
- Dropped the Gap column — it duplicated what the Opportunity score already tells you, but worse: Apple reports a floor value for most keywords' popularity, so Gap showed a misleading wall of negative numbers. Opportunity accounts for that; sort by it instead.
- Bulk actions match row actions — select keywords and hide or refresh them in one go, not just track. Row actions now live in a tidy ⋯ menu instead of a row of icons.
- "Last checked" is now accurate for new discoveries — freshly discovered keywords show when their rank was actually verified instead of "never".
- Fixed
Screenshot Studio keeps PNG transparency
Image uploads in Screenshot Studio were re-encoded to JPEG to keep layouts small — which silently flattened transparent PNG backgrounds to black. Uploads now detect whether an image actually uses transparency: cut-outs, logos, and mascots keep their transparent background as PNG, while opaque images (like simulator captures) still get the smaller JPEG encoding.
If you hit this before, delete the affected image layer and re-upload the original PNG — transparency sticks now.
- NewImproved
See exactly where your numbers come from
Sonar's iOS keyword Popularity has quietly been the real thing for a while: Apple's own Search Popularity number (5–100) straight from Apple's Search Ads console — not a model's estimate of it. From today, the product actually tells you:
- Provenance in the table header — the Popularity column's info card now says it plainly: on iOS the value is Apple's own Search Popularity, reported by Apple Search Ads, not an estimate (Apple floors many niche terms at 5; our proxy model disambiguates those, and Android values are Sonar's calibrated estimate).
popularity_sourcein the API —keywords/search,keywords/metrics,apps/:id/keywords, andcompetitors/:id/keywordsresponses now includepopularity_source: "apple" | "proxy"next topopularity_proxy, so scripts and agents can tell reported data from estimated data.- A new How we check our data page — the validation work we previously kept internal is now public: iOS rankings verified against independent ground-truth App Store rankings (within ±2 positions through the top 20, exact #1 agreement on every query tested), and the Android popularity estimator calibrated against real Apple Search Popularity for the same keywords.
- How scores work rewritten — it now leads with what makes the iOS number different: when ASO tools disagree on iOS popularity, the others are estimating the number Sonar reports.
- NewImproved
Detected competitors in the wizard, and your first discoveries by email
Two changes to make the first days with Sonar show real data faster:
- Detected competitors, one click — the Competitors step of the add-app wizard now leads with the competitors Sonar detected for your app: add them all at once, add them one by one, or dismiss the ones that don't fit (a new suggestion takes their place). Adding your own by search is still right below. Tracking competitors from day one is what powers gap analysis and competitor alerts — now it takes one click instead of five searches.
- "We found N keywords for your app" — shortly after you add an app, Sonar's keyword discovery runs automatically in the background. Trial users now get a short email with the top opportunities it found — popularity and difficulty included — instead of having to come back and check.
- No surprise charges — before a trial converts to a paid plan, you now get a heads-up email with your week in review: rank movements, what you're tracking, and what discovery found — plus a one-click link to manage or cancel. No fine print, no guilt trips.
- New
Try the API and MCP server with no account at all
You can now try Sonar's data without signing up — no account, no API key, no card:
- Free anonymous endpoints — app search, app lookup, ASO score, keyword extraction, and keyword suggestions work with no
Authorizationheader at all (shared allowance of 30 requests/day per IP). - A taste of keyword metrics — difficulty + popularity for up to 5 keywords/day per IP, so you can see the numbers that matter before paying anything.
- Works everywhere — the free tier lives in the API itself, so it works from curl, the MCP server in Claude Desktop/Claude Code/Cursor, and any agent framework. Install
@sonarapp/mcpwith no key and ask your agent about ASO.
When you hit the free limit, the error tells you exactly how to continue: signing up is free and comes with 50 API credits, and the Indie plan includes 1,000 requests/day plus rank tracking, competitor analysis, and the rest of Sonar.
- Free anonymous endpoints — app search, app lookup, ASO score, keyword extraction, and keyword suggestions work with no
- New
Trends: discover rising niches before everyone else
Sonar now watches the entire US app store market — not just the keywords you track — and surfaces what's heating up. Open Trends from any research project (alpha):
- Niches — rising search terms are clustered weekly into named product concepts ("AI Sleep Coaching", "Receipt Scanning for Freelancers"), each with a momentum badge, a weekly sparkline, a one-line take on why it's moving now, and its member keywords with difficulty where we have it. Niches keep their identity week over week, so you can follow one as it develops.
- New competitors, at a glance — each niche shows how many apps newly entered the top-10 across its tracked keywords this month: rising demand plus rising supply means move fast; rising demand and quiet supply means opportunity.
- Rising keywords — real search-popularity movers over the last month. Brand searches ("instagram", "duolingo") are detected and hidden by default so the list shows buildable ideas, one click brings them back.
- New in autocomplete — terms the stores just started suggesting, an early demand signal that shows up weeks before popularity scores react.
- Explore niche — one click turns any niche into a research project pre-seeded with its keywords, ready for the full metrics treatment.
Trends is in alpha: momentum reflects early signals (autocomplete movement, emergence, new competitors), not raw search volume — and it gets sharper every week as history accumulates.
- New
Hosted MCP endpoint — connect AI agents with zero install
Until now, connecting an AI agent to Sonar meant running the
@sonarapp/mcpnpm package locally. That works great in Claude Code or Cursor — but web-based clients like claude.ai remote integrations can't spawn local processes.The same 32-tool MCP server is now hosted at
https://trysonar.app/mcp(streamable HTTP). Point any MCP client at it and authenticate with your existing API key as a bearer token:claude mcp add --transport http sonar https://trysonar.app/mcp --header "Authorization: Bearer aso_..."Keyword research, rank tracking, review mining, competitor gap analysis, and workspace management — same tools, same plans and scopes as the API, nothing to install or update. The npm package keeps working exactly as before; use whichever fits your client. Setup details in the MCP docs.
- New
Free app snapshot before you start a trial
Exploring Sonar with demo data is fine, but nothing beats seeing your own app's numbers. Before starting a trial you can now:
- Find your app right from the demo dashboard — a search box sits at the top of the page (App Store or Google Play), no wizard to click through.
- Get a free snapshot — your live ASO score with the two biggest things holding your listing back, plus the top keywords from your metadata with real popularity, difficulty, and your current rank in the store.
- See what's behind the trial — the rest of your extracted keywords, rank history, and competitor gaps unlock the moment you start the 7-day trial, and the app you picked is tracked automatically after checkout.
- Improved
Low-volume popularity estimate now in the API, CLI & MCP
Last week the dashboard started showing Sonar's own estimate next to Apple's floored Search Popularity, so long-tail iOS keywords stuck at
5could finally be told apart. Now the same signal flows through every programmatic surface.- New
popularity_proxyfield — keyword responses fromGET /keywords/metrics,GET /keywords/search,GET /apps/:id/keywords, andGET /competitors/:id/keywordsnow includepopularity_proxy. It's set only when Apple censors an iOS keyword's real popularity to its floor (5); otherwise it'snull. The CLI table renders it inline as5 (58), and the MCP tools pass it straight through. - Every floored keyword gets an estimate — when a lookup returns a censored
5that doesn't have an estimate stored yet, Sonar now computes and saves one in the background, so repeat calls return the fuller picture.
- New
- New
Screenshot Studio: design store screenshots in Sonar — plus a free public generator
Your keyword research tells you what to say — Screenshot Studio is where you say it. Sonar now includes a full design workspace for store screenshots, built for shipping listings, not just drawing pictures:
- A real canvas editor — layers, undo/redo, zoom and pan, snap guides, keyboard shortcuts, inline text editing. Text, shapes, images, and realistic vector device frames (iPhone with Dynamic Island, Android, tablets) with flat and 3D-tilted presets.
- 18 starter templates — single-feature heroes, panoramic sets, caption-first layouts, and full 5-shot store-ready sets, all with live previews for your exact device size. Every canvas matches App Store Connect and Play Console pixel requirements, so exports upload without resizing.
- One-paste localization — the source design owns the layout; each locale only overrides text and captures. Add a language, paste all its translated captions in one go, and export a ZIP with one folder per locale.
- AI images — generate brand-aware background and hero artwork right on the canvas, seeded from your app's store listing and brand color.
- Duplicate across devices — clone a finished set to another device size in one click; positions, fonts, and translations scale along.
- Built for AI agents — the full studio is scriptable via the REST API and 11 new MCP tools, so Claude Code (or any agent) can design, localize, and export your screenshot sets end to end. Everything an agent creates appears instantly in the dashboard for human review.
And because everyone needs store screenshots — not just subscribers — we made a free public version: the same editor, no account, no watermark, running entirely in your browser. Nothing you design there is uploaded or stored; saving sets, AI images, and agent access are what the paid plan adds.
- NewImproved
Keyword ideas: discovery goes wide
Keyword discovery used to stop at what your app already ranks for. Now it also finds what you should rank for:
- Keyword ideas — a new section on the Discovered tab with high-potential keywords surfaced by AI research and store autocomplete: user intents, problem phrases, audience niches, and long-tail qualifiers your app doesn't rank for yet. Every idea arrives with verified popularity and difficulty, and nothing is tracked (or counts against your daily refresh) until you promote it.
- Opportunity score — a 0-100 score combining demand and competition, with a boost for keywords you already rank 4-30 for (where a metadata push pays off most). It's the default sort for ideas and gaps, and a sortable column across the Discovered tab.
- Deeper, AI-led research — discovery now leads with AI that studies your app's listing and your competitors' to generate up to 500 candidates per app, then uses store autocomplete to confirm the ones real users actually type. Ideas are filtered for genuine relevance to your app — not just word overlap — so you get "link in bio" and "mobile website builder", not "shake shack". Results keep streaming in over the following hours as the research queue works through the backlog.
- Instant results from shared research — keywords already measured recently are resolved instantly instead of re-scraped, so discovery gets faster as Sonar's keyword corpus grows.
- Improved
Sharper popularity for low-volume keywords
Apple only reports Search Popularity down to a floor — below that, every keyword comes back as the same minimum value. For long-tail terms that meant a whole column reading the same low number, with no way to tell a near-miss from a truly dead keyword.
- Two numbers, one honest picture — where Apple reports the floor, the popularity cell now shows Apple's value with Sonar's own estimate in brackets next to it (for example
5 (58)). The first number is Apple's real measurement for comparing across keywords; the bracketed number adds resolution within that low band. A tooltip explains both. - Meaningful sorting — when you sort by Popularity, floored keywords are ordered among themselves by that finer estimate instead of collapsing into one big tie — while always staying below the keywords Apple actually measured as more popular.
- Nothing changes for measured keywords — keywords Apple reports above the floor, and all Android keywords, look exactly as before.
- Two numbers, one honest picture — where Apple reports the floor, the popularity cell now shows Apple's value with Sonar's own estimate in brackets next to it (for example
- NewImproved
Research projects: both stores + push keywords to your apps
Research projects got two big upgrades:
- Both-stores projects — When creating a project you can now pick iOS, Android, or Both (the toggle now shows the store logos, too). In a both-stores project every keyword you add gets popularity and difficulty computed separately for the App Store and Google Play, with a Store column and filter to compare side by side. The Discover tab and "Seed from app" get a store toggle so you can pull ideas from either store into the same project.
- Add keywords to your apps — Every keyword row now has a checkbox. Select the winners and hit "Add to app" to start tracking them for one of your apps — the picker only offers apps on the matching store, so iOS keywords can't accidentally land on your Android app (and vice versa).
Also fixed: switching between research projects now updates the project name and icon at the top of the page immediately.
- NewImproved
Revenue estimates now show their confidence
Revenue estimation from public store signals is inherently uncertain — and how uncertain depends a lot on the app. A subscription app with a public install count and named IAP tiers is far more estimable than a free game with no pricing data. The estimate now tells you which case you're looking at:
- Confidence badge — the Revenue page shows a High / Medium / Low grade next to every estimate. Hover it to see exactly why: which inputs were solid (public install counts, top-grossing chart position, named subscription tiers) and which were guesses (review-derived installs, missing IAP data, unknown release date).
- Games are graded honestly — per-user revenue in games spans orders of magnitude depending on geography and monetization strategy, which public listings don't reveal. Game estimates are now marked low confidence until our games model is calibrated against verified revenue.
- In the API too —
GET /api/v1/apps/revenueresponses includeconfidenceandconfidence_factors, the CLI prints them withsonar revenue, and the MCP tool passes them to your AI agents so they never quote an estimate without its uncertainty.
- Improved
Far more accurate Android popularity scores
Android popularity scores just got a major accuracy upgrade. We calibrated the estimator against real Apple Search Popularity for a benchmark keyword set spanning brands, utilities, niches, and concept terms — average error dropped by ~30% and rank ordering improved sharply.
What changed under the hood:
- Play autocomplete demand is now the primary signal. We measure how few typed characters it takes for a keyword to surface in Google Play's own search suggestions — a direct reflection of what people actually type into Play search. Brands surface after 1–3 characters; terms nobody searches surface late or never.
- Big incumbent apps no longer inflate dead keywords. Previously, a keyword like "circadian rhythm" scored ~29 because huge sleep apps rank for it — even though almost nobody types it into an app store. Keywords absent from Play autocomplete are now floored regardless of how large the apps ranking for them are, so popularity means search demand, not market size.
- Applies everywhere — daily rank tracking, keyword refreshes, newly added keywords, and the public API all use the new scoring. Tracked keywords pick up recalibrated values with their next daily refresh.
Expect popularity to drop for broad concept keywords (that's the correction working) and stay stable for genuine app-intent terms like "sleep tracker" or "habit tracker".
- New
Starred keywords: mark your targets
Keyword research produces long lists — but only a handful of terms are the ones you actually decide to go after. You can now mark those:
- Star any tracked keyword — hover a row on the Keywords or Rankings page and click the star. Starred keywords keep a visible amber star so your targets stand out at a glance.
- "Starred" filter — one click in the filter bar narrows the table to just your target keywords. The filter is remembered between visits, so you can live in your target view.
- Works everywhere — starring on the product (cross-store) view marks the keyword on both iOS and Android. CSV/JSON exports include a Starred column.
- API, CLI, and MCP support —
PATCH /api/v1/tracked-keywords/:idwith{ "starred": true },sonar keywords star/unstarin the CLI, and a newsonar_star_keywordMCP tool so your AI agents can manage targets too.
- New
VAT numbers on invoices: reverse charge for EU businesses
Sonar invoices are now fully business-ready:
- Add your VAT number at checkout — tick "I'm purchasing as a business" and enter your VAT ID. It's validated against VIES and printed on every invoice.
- Or add it any time from Settings — open Settings → Plan → Manage Subscription → Billing information to add or update your company's VAT number for future invoices.
- Automatic reverse charge for EU businesses — customers with a valid EU VAT ID outside Slovakia get invoices with 0% VAT and the required "Reverse charge" note, so your accountant can book them correctly.
- Our VAT ID on every invoice — Sonar's own tax identification now appears on all invoices and receipts.
- NewImproved
Dashboard visibility chart: rank distribution over time
Average rank is a misleading progress metric: start tracking harder keywords and your "average" gets worse even while your actual visibility grows. The dashboard now shows the honest picture:
- Rank distribution trend — the dashboard's hero chart is now a stacked area of how many keywords rank Top 3, 4–10, 11–30, 31–100, and 100+ each day over the last 30 days. The stack's total height is your ranked-keyword count — a number that only grows when visibility genuinely improves.
- Popularity distribution — flip the chart to Distribution view to see your ranked keywords split by popularity bucket, compared against 30 days ago with per-bucket growth. Watch yourself break into higher-volume terms over time.
- Starred filter — one click scopes both views to just your starred target keywords, so the chart tracks the strategy you actually decided to pursue.
- "Ranked" stat card — the Avg Rank stat was replaced by your ranked-keyword count with a 7-day delta, for the same reason.
Thanks to Antony for the sharp feedback that shaped this one.
- Fixed
Billing fix: declined cards can no longer create a duplicate subscription
Two fixes to the trial-to-paid conversion flow:
- "End trial now" is atomic — if your card is declined when converting early, nothing changes: your trial keeps its remaining days, no invoice is created, and you can simply update your card and try again. Previously a decline could leave the subscription in a failed-payment state that kept retrying the old card.
- Re-subscribing cleans up after a failed attempt — if a trial-end charge fails and you later subscribe again with a different card, the failed prior attempt is now cancelled and its unpaid invoice voided automatically. You'll never see a leftover "payment failed" subscription in the billing portal next to your active one, and there's no way the old card can be charged later.
- Fixed
Rank tracking fixed for apps added via the API
If you added an iOS app through the API (or MCP/CLI) using its numeric App Store ID — like
6476565689instead of the bundle ID — its keyword positions showed up in keyword SERP data but never in the app's own rank history, so the dashboard showed "Your Rank: --" forever.That's fixed:
- Numeric IDs are now normalized — whatever ID form you pass when adding an app or competitor (numeric App Store ID, bundle ID, or store URL), it's resolved to the canonical ID internally, so rank tracking always matches.
- Existing apps repaired — every affected app has been migrated automatically. No action needed on your side.
- History backfilled — past top-10 positions were reconstructed from stored SERP snapshots, so your rank charts show history from the day the keyword was first tracked, not from today.
- Improved
Sharper revenue estimates: real subscription pricing on iOS
Revenue estimates just got a meaningful accuracy upgrade, especially for subscription apps:
- Real IAP data on iOS — we now read each app's in-app purchase list (item names and prices) straight from its App Store listing. Free iOS apps used to be treated as generic freemium with category-average pricing; subscription apps are now detected as such and estimated with their actual tiers.
- Billing-period aware — "Pro Weekly $4.99" and "Premium Yearly $59.99" are converted to their true monthly value, so weekly-priced apps no longer look 4x cheaper than they are.
- International price formats — IAP ranges like "0,99 € – 109,99 €" are now parsed correctly on every storefront.
- Calibrated against verified revenue — the estimator is now benchmarked against a set of apps with independently verified monthly revenue, so future accuracy improvements are measured, not guessed.
Estimates remain directional — public signals can't capture everything — but subscription apps, the majority of top-earning apps today, now get a model that reflects how they actually monetize.
- Fixed
Removing a competitor now cleans up after itself
Previously, removing a competitor (or deleting a product that referenced one) could leave the competitor app tracked invisibly in the background. Now teardown is complete:
- Full cleanup — when you remove a competitor and no other app of yours references it, the competitor and its tracked data are removed too. If another app still uses it as a competitor, nothing changes.
- Applies everywhere — dashboard, API (
DELETE /api/v1/products/:id/competitors/:competitorId), CLI, and MCP all behave the same way.
Heads-up: removing a competitor's last reference deletes its tracked keyword list for your workspace — re-adding the competitor later starts fresh.
- Improved
Apps now default to their real market
Adding an app by name used to default every product to the US / English storefront. For a localized app — say a Russian period tracker or a Japanese budgeting app — that meant keyword discovery ran against the wrong market and came back nearly empty.
- Automatic primary-market detection — when you add an app, Sonar reads its store listing and defaults the keyword market to the app's home country (e.g. a Cyrillic listing → Russia, a Japanese listing → Japan). Discovery, suggestions, and rank tracking all run in that market from the start.
- Suggested extra markets — if your app is localized into other languages, Sonar now offers those storefronts as one-click chips in the Keywords step, so you can start tracking, say, the US and German markets too without hunting through a country list.
- Still yours to change — the detected market is shown in the Keywords step, and you can add or swap markets at any time.
Pasted regional store links (a
/de/,/jp/URL) keep working exactly as before — Sonar uses the storefront in the link. - Improved
iOS keyword popularity now reflects real App Store demand
iOS keyword popularity now uses Apple's official Search Popularity instead of our in-house estimate. The numbers you see line up with real App Store search demand, so you can prioritize keywords with confidence.
- More accurate scores — popularity reflects how often people actually search a term on the App Store, not an approximation.
- Better prioritization — sort and filter on numbers you can trust to decide which keywords are worth chasing.
This applies to iOS keywords; Android popularity is unchanged.
- New
Seed a research project from an app
Research projects no longer start as a blank box you have to fill by hand.
- Seed from an app — open any research project, click Seed from app, and search for an app by name or paste a store URL. Pick up to three apps — a competitor, or that viral app you'd love to take traffic from — and Sonar finds the keywords they actually rank for and adds them to your project.
- Scored on arrival — seeded keywords land with popularity, difficulty, and gap already filled in, so the best opportunities are obvious at a glance.
- Best opportunities first — the project keyword table now sorts by Gap (popularity minus difficulty) by default, floating the high-reward, low-competition terms to the top.
Great for sizing up a niche fast or planning a copycat: see what's working for an app, then go capture it.
- ImprovedFixed
Find more keywords you already rank for
We rebuilt how Sonar finds the keywords your app already ranks for.
- Wider discovery — discovery used to expand a handful of seed terms through store autocomplete and little else. It now pulls candidates from your listing (app name, subtitle, description), AI-suggested intent terms, and autocomplete — then verifies each one against the live App Store / Google Play results before showing it. More real ranked keywords surface, especially for smaller or newer apps.
- Ranked vs. gaps — the Discovered tab now has two clearly labelled sections: Keywords you rank for and Keyword gaps (terms your competitors rank for that you don't — yet). Track a gap to start monitoring it.
- Fixed the count — the "Discovered" tab badge could claim, say, 120 keywords while the table showed only a few. The badge now always matches exactly what's listed.
- Keeps looking — discovery no longer runs only once when you add an app. Sonar now re-checks your apps on a schedule and surfaces keywords you've started ranking for since you added them.
Open any product's Keywords → Discovered tab to see the new sources and sections.
- Fixed
Add apps from any App Store country
If your app isn't sold in the US App Store, adding it used to fail with an error after you hit Select.
The Add App wizard now tracks each app in the storefront you found it in — so a German (
/de/), French, or any other regional App Store link works on the first try, and its keyword market defaults to that same country. - NewImproved
Untrack, delete, and manage alerts from the API, CLI & MCP
The write API used to be one-way: you could create products, track apps, and add keywords, but cleanup meant clicking through the dashboard. Now the API can undo everything it sets up:
- Untrack keywords — remove a single tracked keyword, or bulk-untrack a whole app's keywords in one call (handy after a bulk add that landed on the wrong app).
- Untrack apps & delete products — remove an app (and its keywords/competitor links) or delete an entire product.
- Remove competitors — drop a competitor from a product.
- List products — see your products with their linked store versions and competitor counts, so agents can discover the IDs they need.
- Alert rules over the API — list, create/update, and delete alert subscriptions (rank drops, review spikes, competitor changes, and more) without the dashboard.
Everything is available across all three surfaces — REST API, the
sonarCLI, and the MCP server — so AI agents and scripts can manage a workspace end-to-end. See the API docs, CLI docs, and MCP docs. - New
Look up any app's revenue
The Revenue page now has a built-in lookup. Below your app + competitor comparison, search any app on either store — by name or by pasting a store URL — and instantly see its estimated monthly revenue and monetization model, sorted highest first.
It's perfect for sizing up an app you're not tracking yet. No setup needed, and it works during your trial and in demo mode.
- NewImproved
CLI & MCP server now cover the entire API
The CLI and MCP server now have full API parity — everything you can do over REST works from your terminal or from an AI agent:
- MCP server 0.5.0 (22 tools) — agents can now read your workspace, not just public store data: tracked apps, keyword rank history, detected app changes, SERP history, and competitor gap analyses. Plus two new write tools: keyword notes and competitor keyword scans. An agent can set up tracking and check back on results, end to end.
- CLI 0.4.0 — new read commands (
sonar apps lookup / search / score / extract-keywords / reviews / changes) and write commands (sonar products create / add-app / add-competitor,sonar keywords track / note,sonar competitors scan).
Write commands and tools need an API key with the
writescope — create one under Settings → Developers. Update withnpm i -g @sonarapp/cli@latest; MCP setups usingnpx -y @sonarapp/mcppick up the new tools on the next session. - New
Achievements — celebrate and share your ranking wins
Ranking wins deserve more than a green arrow. The dashboard now has an Achievements grid showing 7 feats for each product — from your first keyword on the board to Page One, Podium, Number One, a 20-spot Climber jump, and holding 5 or 10 keywords in the Top 10 at once.
Locked achievements stay greyed out with a hint on how to earn them, so you always know what's next. Earned ones light up — and every one is shareable: click it to generate a polished card image for X with the keyword that did it, the rank, and the keyword's popularity and difficulty so people can see it wasn't a layup.
Building in public but don't want to tip off competitors? Hide the app name, the keyword, or both before sharing — popularity and difficulty stay on the card, so the brag still has receipts.
Achievements are checked daily against your full rank history, and once earned they're yours forever.
- Improved
Activity Feed Timeline
The Activity page no longer splits changes into one column per app. It's now a single chronological timeline grouped by day — newest first — so you can scan everything that happened across your apps and competitors in one pass: releases (with version bumps and release notes), metadata edits, screenshot changes, price and category moves.
Release notes also render cleaner: blank-line padding is collapsed so the 3-line preview shows actual content, with "Show more" for the full notes.
- Improved
Dashboard Redesign
The product dashboard got a full redesign around one question: is your ASO working, and what should you do next?
- Rank Trend chart — a 30-day view of your average position across all tracked keywords, front and center. You can finally see movement at a glance instead of decoding counters.
- Smarter stat cards — Avg Rank now shows how much it moved vs last week, plus new Best Rank (and which keyword holds it) and Top 10 cards.
- Keyword watchlist — your top keywords with a mini trend sparkline, current rank, and 7-day change. Even in a quiet week, the dashboard always shows something real.
- Opportunities panel — keywords sitting just off page one, within reach of the top 3, or low-difficulty terms you're not ranking for yet — with new discoveries surfaced alongside.
- Store health at a glance — your app's rating, ratings count, and live version now appear right in the header.
- Top Improvements / Biggest Drops only appear when something actually moved — no more empty boxes.
- Achievements moved to a compact strip (still clickable to share), and dashboard pages now use your full screen width.
- ImprovedFixed
Sharper alerts, international keywords, and a faster dashboard
A big reliability and performance pass across the whole product:
Alerts that catch the worst case. Rank alerts now fire when your app drops out of the search results entirely — previously the biggest possible drop was the one that stayed silent. Alert delivery is also fixed for teams tracking the same keywords as another organization: every org now reliably gets its own notifications.
Keyword tools in every language. Keyword extraction and discovery now fully support non-Latin storefronts — Japanese, Korean, Chinese, Cyrillic, and Arabic keywords are extracted and suggested just like English ones.
Faster everywhere. The Apps overview, keyword sidebar, and keyword detail pages load with far fewer database round trips, and Android keyword refreshes are gentler and more reliable. Intermittent display errors on cached dashboard views are gone.
API improvements.
GET /v1/appsandGET /v1/apps/:id/rankingsnow support cursor pagination (see the API docs), invalid requests no longer count against your quota or credits, and credit charges are refunded automatically when a request fails.Unsubscribe safely. Email unsubscribe links now show a confirmation page, so overzealous corporate link scanners can't unsubscribe you by accident.
- Improved
Android app data refreshes more often
We refresh the details for every tracked Android app — rating, latest version, install count, developer info — on a schedule. Until now that ran once a day, and on busy days it couldn't get through every app in its time window, so some apps would drift a day or more out of date before the next run caught them.
The metadata refresh now runs every 4 hours. It only touches apps that have actually gone stale, so most runs are quick — and anything a run misses gets picked up by the next one a few hours later instead of waiting until tomorrow. In practice your Android app numbers now stay current within hours, matching how fresh the iOS side already was.
Daily chart-position snapshots (Top Free / Paid / Grossing) are unchanged — those remain a once-a-day reading.
- New
Get alerted when your rankings move
You can now have Sonar watch your apps and tell you when something changes — instead of checking the dashboard to find out.
Head to Alerts and switch on exactly what you care about:
- Rank drops & gains — when a tracked app moves up or down for a keyword (you set how big a move is worth knowing about)
- Top 10 changes — when an app breaks into, or falls out of, the top 10
- New rankings — when an app starts ranking for a keyword it didn't before
- Competitor changes — when a competitor ships a new release, or changes their metadata, screenshots, price, or category
- Rating drops & review spikes — when an app's rating slips or reviews suddenly pick up
Everything is off until you turn it on, and matching changes arrive as a single daily email digest — no inbox spam. You can send the digest to a different address (a shared or team inbox) if you don't want it going to your login email. Every alert also shows up in an in-app feed on the Alerts page, so you have the full history even if you mute the emails.
- New
Mark what you changed, right on your charts
Ever shipped an update and wondered whether it actually helped your rankings? Now you can mark the changes you made and see them right on your charts.
Add an annotation to any of your apps with a date and a short note — for example:
- "Shipped v2.0 — new subtitle"
- "Refreshed screenshots"
- "Changed primary category"
Each annotation shows up as a numbered marker on your rank charts, so you can line up what you did against what happened to your ranks:
- On the new Rank Trend chart at the top of the Rankings page (your average position across all tracked keywords over time)
- On the keyword detail page's rank and popularity/difficulty charts
- On the keyword quick-look panel
Add, edit, and delete annotations inline — they're tied to the app, so a single note appears across every keyword chart for that app.
You can also pin individual keywords onto the Rank Trend chart — click the line-chart icon next to any keyword in the rankings table to overlay its rank history (up to 6 at once) alongside your average, so you can watch a specific keyword's development up close.
- Fixed
Honest rank states — live, dropped out, or never ranked
We track your rank by reading the App Store search results each day — but the store only returns the top ~180–200 apps for a query. If your app sits below that, there's simply no position to record that day.
Until now, the tables would keep showing your last-known rank as if it were current (with a "—0" no-change indicator), and a keyword you'd never ranked for looked the same as a blank. That made a real drop-off impossible to tell from a plateau.
Now every rank surface shows one of three honest states:
#N— you're live in the results>200 (was #N)— you had this rank but have since dropped out of the trackable window (hover for the date you were last seen). On the Rankings table the 1d/7d/30d change columns are blanked instead of showing a fake "no change", and these sort below your live ranks.Not ranked— your app has never appeared in the top ~200 for this keyword
This applies across the Rankings table, the Keywords table (single app and cross-store), and the opportunity matrix. The "Ranking / Not ranking" filter now treats a dropped-out keyword as not currently ranking.
Nothing changed about how often we check — your live-ranking keywords update exactly as before. This just stops stale numbers from masquerading as current ones.
- Improved
New keywords get their scores right away
When you added keywords — to a new app, an existing one, or imported from a competitor — their difficulty and popularity used to stay blank until the overnight refresh ran. That made it hard to judge a keyword right when you cared about it.
Now those two scores are computed the moment you add the keyword — about a second, for both the App Store and Google Play. A freshly added keyword briefly shows "Calculating…" and the table fills itself in, no refresh needed.
Exact rank (your app's position for that keyword) still updates on the daily cycle, so it appears a bit later — but difficulty and popularity, the numbers you use to pick keywords, are now instant.
- FixedImproved
iOS keyword rankings are back — and now instant
Apple changed the App Store search endpoint we relied on for iOS keyword rankings, which stopped iOS ranks, difficulty, and popularity from refreshing. We've moved iOS rank tracking onto Apple's documented Search API and everything is updating again.
We checked the new source against known-accurate App Store rankings across a wide spread of keywords — broad, branded, and long-tail — and it matched the real ranking order position-for-position through the top results. So your iOS ranks are just as trustworthy as before.
A bonus from the switch: when you add an iOS keyword, its rank now fills in within about a second, right alongside difficulty and popularity — no more waiting for the overnight cycle to see where your app sits.
Google Play rankings were never affected.
- Improved
iOS popularity scores + instant reviews on new apps
Two refinements to keyword and review data:
- iOS keyword popularity now populates alongside difficulty. Previously many iOS keywords showed a difficulty score but no popularity — that gap is closed, so you get the full picture for every tracked iOS keyword.
- Reviews load instantly when you add a new app or competitor, instead of waiting for the next scheduled refresh. After that, reviews keep refreshing automatically.
- New
AI Review Insights
Sonar now reads the last ~90 days of an app's reviews and summarizes them with AI: what people praise, what they complain about (with real quotes), and notable feature requests. Re-run it after 90 days and it compares against the previous summary to show what's improving, persisting, or resolved.
It works for your own apps and any tracked competitor — so you can see what a rival's users love or hate and turn it into an opportunity. Open it from the redesigned Reviews page (pick an app from the title dropdown, then Analyze reviews), or straight from the Competitors table and any app's detail panel.
The Reviews page also got a cleaner layout and pagination, so long competitor review lists stay fast.
- Improved
Reviews show full history, not just the last 90 days
The Reviews browser previously only kept reviews from the last 90 days, so apps with steady-but-infrequent reviews (or competitors in smaller markets) often looked nearly empty. It now stores and shows the full recent review history Apple and Google expose (up to ~500 per app), so you get a real picture of what users say over time.
AI review insights still summarize the last 90 days so trends stay current.
- Fixed
iOS reviews load reliably
iOS reviews sometimes came back empty — both in the Reviews browser and when generating AI insights. Sonar now keeps each tracked app's recent reviews continuously synced, so they load instantly and reliably every time you open the Reviews page, no matter the store or country.
This also makes the Reviews page faster: reviews are read from your synced data instead of being fetched on the spot.
- New
Listing Helper — AI-assisted metadata
Writing your App Store and Google Play metadata is now a guided flow. Listing Helper lets you draft your title, subtitle, and keyword field with:
- Live character counts against each store's limits
- Keyword coverage scoring as you type
- Suggestions pulled from your tracked keywords and competitor listings
Find it in the sidebar under Listing Helper.
- Improved
Show & hide table columns
Every data table now has persistent column controls. Toggle the columns you care about — popularity, difficulty, rank, results count, notes — and your selection is remembered across sessions.
Combined with the new keyword text/regex filter and the Export button now lifted into the top bar, the tables are far easier to slice for your own workflow.
- New
Compare apps & automatic version detection
A few upgrades landed together:
- Compare apps dialog — line up your app against competitors side by side.
- Version change detection — Sonar now records app version changes automatically on each metadata sync, feeding the Activity feed.
- All reviews, not just low-star — the Reviews page shows the full picture, with country names in the selector (sorted alphabetically).
- New
Scoped API keys & write endpoints
The REST API now supports product-centric write endpoints. Create products, track apps, add keywords, and trigger competitor scans without touching the dashboard.
API keys now carry scopes:
read(default) — every GET endpointread+write— POST/PATCH on products, tracked apps, keywords, and competitor scans (subscription plans only at issuance)
Generate scoped keys from Settings → API keys.
- New
Prepaid credits for API access
API-only users can now buy prepaid credit packs ($10–$100) instead of a monthly subscription. Credits are spent per call on the stateless scraper endpoints, and you start with 50 free credits on signup.
- No subscription required for pure API/MCP use
- Failed requests are never charged
- Subscribers get a daily quota with credit overflow
Existing API-only subscribers keep their unlimited monthly access.
- New
Official CLI & MCP server
Sonar is now AI-native end to end:
@sonarapp/cli—npm i -g @sonarapp/cli, thensonarfor app lookup, keyword research, rankings, competitors, revenue, and CSV/JSON export.@sonarapp/mcp— a Model Context Protocol server exposing 9 stateless tools so Claude, Cursor, and other agents can query Sonar directly.
Both authenticate with your
SONAR_API_KEY. - New
App Store Roast — free AI listing grader
A new free public tool: App Store Roast. Drop in any App Store or Google Play listing and get an AI-graded teardown — an overall grade (F → A+), a one-line verdict, and graded sections for Icon, Screenshots, Title & Subtitle, Description, and Reviews, each with an actionable ASO tip.
It's free, shareable, and a fast way to see where a listing is leaving installs on the table.
- New
Explore Sonar in demo mode
New signups can now explore a read-only demo workspace — real apps, keywords, rankings, and reviews — before being asked for a credit card. It's the fastest way to see what Sonar does with live data, no setup required.
Start your trial whenever you're ready and you'll switch to your own workspace.
- New
Multi-locale research projects
Research projects let you organize keyword research independently of tracked apps — perfect for pre-launch exploration or comparing markets.
- Multi-locale: research the same keywords across countries and languages
- Per-project filters and a one-click refresh for stale keywords
- Editable icon and name, with a Lucide icon picker
- Per-row actions to rename or delete projects and products
- Improved
Rank trend sparklines & smarter filters
The Rankings and Keywords pages got sharper:
- Rank trend sparklines inline in the rankings table
- Filter rankings to ranked-only keywords, plus store/country and branded/generic toggles
- Store/country multi-select on the keyword table
- Clickable rows and keyword notes that sync across views
- New
Revenue estimation
Sonar now estimates app revenue using install counts and category benchmarks — available in the dashboard, via the
/api/v1/apps/revenueendpoint, and assonar revenuein the CLI.Bulk revenue and review filters make it practical for automation and portfolio-wide analysis.
- New
Keyword Opportunity Matrix
The new Keyword Opportunity Matrix plots your keywords on a popularity-vs-difficulty scatter chart, so the high-volume / low-competition opportunities jump out instantly. Quadrants make it obvious which terms to prioritize and which to skip.
- New
Activity feed — track app changes
The Activity feed gives you a timeline of detected changes across your apps and competitors — new releases, metadata edits, screenshot swaps, price and category changes. Keep tabs on what competitors are shipping without checking the stores by hand.
- New
Free tools, multi-country & REST API
A big foundational release:
- Free public tools — ASO Score Checker and Keyword Generator, no signup needed
- Multi-country support across keyword research and rank tracking
- REST API access on all paid plans, plus an API-only option for agents
- Single-tier pricing with everything included
- New
Live review intelligence
Review monitoring went live: fetch reviews on demand from both the App Store and Google Play, paginated across all pages, with a rich app detail sheet for quick inspection. This is the foundation the later AI Review Insights build on.