Store research on the storefront in front of you — and nothing invented
Best sellers in the merchant's own order, the shape of the price architecture, app and theme detection with the evidence on the tile, and a watchlist that tells you what moved since your last visit. Where a figure does not exist, MurmSpy prints a refusal at the size of a finding instead of a model.
Every figure says how it was arrived at. A solid fill means counted — the catalogue size, the price the merchant published, exact arithmetic on those. An outline that refuses to fill means computed, with the rule printed underneath. A dashed outline holding an em-dash means no such value exists and none can be had. None of that is carried by colour: fill, outline, dash and hatch are shapes, and they survive a greyscale screenshot.
What it reports on a storefront
- Best sellers in the merchant's own best-selling order — the ordering the platform actually publishes — with the published price and a rank-derived demand index on each row.
- What moved since your last visit. Save a store and the next visit shows new items, price moves old to new, apps added or removed, a theme swap — counted against a snapshot on your own machine. No account.
- The price architecture: share of the catalogue discounted, average and median markdown depth, the distribution with the median marked, the deepest markdowns, and a map plotting every item by price with the discounted ones ringed.
- Apps, theme and advertising pixels — 137 maintained fingerprints, where each tile carries the literal string that identified it, visible on the tile rather than hidden behind a hover.
- Launch cadence: items added per month, up to 24 months back, with exact values on hover and arrow-key support.
- The store's own advertiser handles, parsed off the page, with pre-filtered links into the ad libraries they belong to.
- A report card as a 1200×1500 image rendered entirely in your browser, and two export flavours — an analysis file, and a product-import file that loads straight back into a store's own import screen.
And on TikTok Shop
The public sold counter, surfaced as what it is: a count the platform itself put on the page. A saturation read — early, rising, peak, saturated — and a seller credibility grade, both marked as model outputs. A shop roll-up with totals and top items across a seller's catalogue.
It also holds the only modelled money figure in the entire product: sold counter × current price, set in the body face inside an outlined box that refuses to fill, with the formula printed under it and the word ballpark on it. When TikTok truncates the counter the figure is a floor, and the box wears a notch down the open edge so “2,000 or more” cannot be misread as 2,000.
What it refuses to print
Revenue and units sold are the two headline figures this entire category runs on, and Shopify publishes neither. So the tile grid above the fold carries two counted values and two refusals at exactly the same size.
| The figure | What MurmSpy prints instead | Why |
|---|---|---|
| Shopify revenue | A dashed em-dash tile: no sales figures are published, a number here would be modelled, and modelled money is what this tool exists not to print. | Shopify publishes no sales figures at all. Every revenue number in this category is inferred, usually from product count × price. |
| Units sold | A dashed em-dash tile: rank order is published, units are not. | The platform publishes the ordering, not the quantities behind it. |
| A blocked or partial read | A disclosure you can open, in full sentences: which source was blocked, what that removes, and where the shortfall lands. It closes with “Numbers stay partial rather than guessed.” | A confident zero over a catalogue that was never fetched is worse than no reading. |
| A tracking pixel it did not find | A hollow ring and the literal words “not found”. | Absence of evidence is not evidence of absence, and a dramatic dash would imply it was. |
Both refusals are permanent. They appear on every storefront that will ever exist, and they are drawn at the scale of a finding rather than tucked into a footnote, because deciding not to print a value is itself a result. No tier unlocks them — see pricing, where the same thing is said about money.
A complete read, by contrast, says nothing at all. There is no green tick, because silence is what a full read looks like.
Permissions, honestly
MurmSpy asks for more than its siblings, and it is worth being exact about what and why.
Three permissions — storage for the watchlist and settings, activeTab
and scripting — and four host patterns:
| Host | Why it is there |
|---|---|
*.myshopify.com | So the panel appears by itself on a Shopify-hosted storefront, without a click. |
www.tiktok.com, shop.tiktok.com | The TikTok Shop product and shop pages the module reads. |
extensionpay.com | The licence handshake after a Pro checkout. Nothing about a store passes through it. |
It does not ask to read your data on all websites. That matters most on
the case that looks like an exception: most real Shopify stores sit on a custom domain, which
none of those four patterns covers. There, MurmSpy does nothing until you click the toolbar
icon and choose “Check this store” — and that click is what grants access, to that page, at
that moment, through activeTab. The alternative was to request every website in
advance, and it was not taken.
It requests no cookies, no history, no webRequest,
no identity and no management. There is no account, no server and no
analytics: the watchlist and settings live in local browser storage, and nothing phones home,
because there is nowhere for it to phone. MurmSpy's privacy policy.
Free, and Pro
The free tier is permanent — no account, no card, and no countdown.
| Free — €0 | Pro — €8.99/mo or €69/yr | |
|---|---|---|
| Products per store | 25, newest first | Unlimited |
| Best sellers | Top 10, ranked | Unlimited, with the demand index |
| App, theme and pixel detection | All 137 fingerprints | All 137 fingerprints — identical |
| Saved stores | 3, with change tracking | 50, with change tracking |
| Pricing analysis | Top line | Full distribution and biggest markdowns |
| Launch cadence | 6 months | 24 months |
| Exports and report cards | 1 of each per day | Unlimited, no watermark |
| Store comparison | Not included | Side by side across saved stores |
| TikTok Shop module | Not included | Included |
Detection is deliberately identical at both tiers: it is what most people install MurmSpy for, and withholding a fingerprint from a page you have already loaded would be withholding a fact rather than selling a feature. Where the free tier does withhold something, it is drawn as a 45° hatch and never as a blur — a blur promises a value is under the glass, including in the places where none was ever computed.
Annual saves €38.88 against twelve monthly payments — 36%, roughly four months free. Billing runs through Stripe via ExtensionPay; cancel any time. Full pricing.
Compared with the alternatives
vs PPSPY
PPSPY estimates sales and revenue. MurmSpy measures what the storefront published and refuses the rest, which makes them answers to different questions rather than better and worse versions of one. Full comparison.
vs Koala Inspector
Both read a store's app stack and theme. The difference is what each asks for at install, and what leaves your machine afterwards. Full comparison.
Every named comparison on this site, including the ones that do not flatter us, is on the compare page. The wider survey — 40 extensions in this category, read through their manifests — is the teardown.
Questions
Does MurmSpy show a store's revenue?
No, and no tier unlocks it. Shopify publishes no sales figures, so a revenue number would be modelled rather than measured. MurmSpy draws a refusal in that tile instead, on every storefront and at both tiers.
Does it work on stores with a custom domain?
Yes — click the toolbar icon and choose “Check this store”. That click is what grants access
to that one page, and it is the only page access ever requested. On a .myshopify.com
address it runs by itself.
Is the demand index units sold?
No. It is derived from the merchant's published best-selling rank, and the row says so beside it. Rank order is what Shopify publishes; quantities are not.
Is MurmSpy free?
There is a permanent free tier with no account and no card. Pro is €8.99 a month or €69 a year and adds full catalogues, the price distribution, 24-month cadence, cross-store comparison and the TikTok Shop module.
Does it scrape, or replay private Shopify APIs?
Neither. It reads the same public pages your browser already loaded. Replaying a private internal endpoint is how some tools in this category get extra data, and why those requests get attributed to your session instead of theirs.
What leaves my machine?
Nothing about the stores you look at. There is no server, no account and no analytics; the watchlist and settings are in local browser storage. Even the typefaces are bundled inside the package rather than fetched from a font host.