Shopify app detector: what it reads, and how to read it yourself

A Shopify store names its installed apps in its own HTML, by handle and version. How to read that list in one command and what no detector can see.

Guide November 12, 2026 · 9 min read

A Shopify app detector matches patterns in a store's public HTML against a list of known app signatures. On most stores it does not have to guess, because a modern Shopify app ships as a theme app extension, and Shopify serves that extension's files from its own CDN under a path that spells out the app's handle and version. You can read that list yourself in one command. ShopLeads is our product and it sells store and contact data, so we say so; this page is about reading app data off a store, and the apps a detector cannot see at all.

Everything below was read from each store's own homepage on November 9, 2026, and every store named answered as a live Shopify storefront that day.

Read the apps on a store in one command

curl -s https://www.bando.com/ | grep -o 'cdn.shopify.com/extensions/[^"]*'

For ban.do that returned four asset URLs under three extensions:

  • /extensions/01a1b19f.../gdpr-cookie-consent-427/assets/pandectes-core.js
  • /extensions/01a1c170.../loop-returns-532/assets/onstore-block.js
  • /extensions/01a19c24.../sc-easy-redirects-18/assets/esc-redirect-app.js

Three apps, named, with no tool and no sign-up. The structure is /extensions/{installation id}/{extension handle}-{version}/assets/{file}, and it exists because theme app extensions host their assets on the Shopify CDN rather than editing theme code, which is the whole point of the framework (Shopify.dev).

The handle is a lead; the asset filename is the proof

This is where the free detectors differ from each other, and where they get names wrong. The extension handle is chosen by the app developer for the extension, not for the App Store listing, so the two sometimes match and sometimes do not. Of the eighteen distinct extension handles we read across the stores below, six resolved directly as an App Store listing when we stripped the trailing version number and requested apps.shopify.com/{handle}. The asset filename settled the rest.

What the HTML saidWhat the app actually isHow we knew
gdpr-cookie-consent-427/assets/pandectes-core.jsPandectes GDPR ComplianceThe handle resolves to the listing, and the asset names the vendor. The handle alone reads like a generic category
2026-11-09-21-14-56-UTC--2d59176/assets/smile-loader.jsSmile: Loyalty Program RewardsThe folder is a build timestamp and names nothing. Only the asset filename identifies it
rebuy-personalization-engine-486/assets/rebuy-extensions.jsRebuyThe handle does not resolve; the shortened listing handle does
orbe-geolocation-513/assets/orbe.min.jsOrbe GeolocationSame pattern: extension handle longer than the listing handle
keepcart-2-257/assets/keepcart-embed-deferred.min.jsKeepCartThe -2 is part of the extension handle, not the app name
tentree-cart-app-89/assets/cart-overlay.jsA custom app built for one storeNo listing, and the handle carries the brand name. Nothing to install, nothing to compare

Handles read from the storefronts listed below on November 9, 2026; listing titles read from apps.shopify.com the same day. Theme app extension assets are hosted on the Shopify CDN by design (Shopify.dev).

When a detector hands you an app name that sounds like a category rather than a product, it almost certainly read the extension handle and stopped. Grep the asset filenames and you will usually find the vendor spelled out.

Seven real stores and the apps they load today

StoreApps named in its own HTML
ban.doPandectes GDPR Compliance, Loop Returns, an easy-redirects extension
Liquid DeathSmile loyalty, OneTrust Consent Management, Orbe Geolocation, Rebuy
United By BluePandectes GDPR Compliance (three separate assets), two Koala upsell and gift extensions, a Stape server-side tagging widget, a restock notification SDK
OlipopKeepCart, rediem, Polar Analytics
tentreeAppLovin, Brevo PushOwl, and a cart overlay built for tentree alone
BrooklinenAppLovin, OneTrust Consent Management, and a search extension built for Brooklinen alone
BokksuAppLovin, and one extension whose handle resolves to no listing

Read from each storefront's homepage HTML on November 9, 2026 with the command above. App Store titles from apps.shopify.com the same day, for example Loop Returns.

Two patterns in that table are the real finding. First, consent apps are everywhere and they are the single most common extension we saw, which tells you more about regulation than about merchandising. Second, three of the seven stores run at least one app that exists only for them. A detector will either skip that row or report its handle as a product name, and in both cases the honest answer is "custom".

What a Shopify app checker cannot see

Every detector reads the page a shopper's browser loads, so the boundary of what it can know is the boundary of that page. Four classes of app sit outside it.

  • **Back-office apps.** Accounting, inventory sync, shipping labels, fulfillment, purchase orders, wholesale pricing. They do their work in the admin and never touch the storefront, so there is nothing to detect. Every honest vendor page says this, and it is the biggest single gap.
  • **Apps that run as sandboxed pixels.** Shopify's Web Pixels API loads app pixels inside a strict sandbox and custom pixels inside a lax one, with a controlled set of browser APIs. A pixel that subscribes to customer events through that API does not have to look like a familiar script tag in the page.
  • **Anything injected after the page loads.** Scripts added by a tag manager, by a consent gate, or only on a product or cart page will not appear in the homepage HTML. The two stores in our sample with no extension assets at all, Allbirds and Gymshark, both load third-party tooling another way.
  • **Apps installed but switched off.** An extension can be present in the theme and disabled in the merchant's settings, or enabled for one market and not another. The asset still loads. The app is still billed. Whether it is doing anything is not in the HTML.

That last point cuts the other way too. Allbirds returned no theme app extension assets at all on our read, and Gymshark returned none either, yet both are large stores that obviously run tooling. Larger brands build more of their storefront themselves and route third-party scripts through their own tag setup, which means a detector tends to under-report exactly the stores you most want to understand.

How many apps each detector claims to know

DetectorCoverage it publishesWhat it adds
ShopScanData on over 2,000 appsBrowser extensions for Chrome, Firefox and Edge, plus a theme reading and a product scraper
TrueProfitOver 6,000 public Shopify appsA Chrome extension, and an FAQ that says private and server-side apps will not appear
VitalsNot published as a countFree with no signup, and it prices each detected app and totals the monthly bill
LaunchtipNot published as a countFree, no sign-up, nothing to install, and it accepts a myshopify.com URL as well as a custom domain
TrendTrackNot published as a countA fresh scan on every request, with a description and an App Store link per app
Wappalyzer181 Shopify apps, as its own category page showsMarket share per app across the sites it tracks, which no single-store detector gives you

Each claim read from that company's own page on November 9, 2026. The Wappalyzer figure is the count on its Shopify apps category page; Vitals also publishes a comparison of the tools in this space.

Read those two columns together and the trade-off is clear. The single-store tools know more app signatures and answer one store at a time. Wappalyzer knows far fewer apps but publishes how common each one is: its Shopify apps page today puts Pandectes at the top of the list with around 29,000 tracked sites, then Smile at about 26,000 (Wappalyzer). If you are deciding whether an app is worth building against, that second kind of number is the one you need.

Finding every store that runs an app, instead of checking one at a time

A detector answers "what does this store run". If you sell apps, themes, or agency work, your real question is the reverse: which stores run the thing I integrate with or replace, and who there decides. A lookup cannot answer that, because a lookup is one store deep.

  1. Pick the app or the gap you sell against, and write down the exact name. App filters match on names, and "reviews app" is not a name.
  2. Filter a store index to it, then throw away everything that is not a real brand. Development stores and template clones carry app assets like anyone else.
  3. Add a size cut so the list is stores that can afford you, and a category cut so your opener is about their business.
  4. Add the person before you export: decision-makers only, in the departments that own the tool you are replacing, with a work email whose status you can see.
  5. Open the store before you write. Its app assets, its product list and when it last published a product give you the one specific line that makes an email look addressed.

ShopLeads keeps the apps and technologies installed on each store as named filters, and it keeps the gaps too: no email or SMS platform, no reviews app, no subscriptions, no loyalty, no helpdesk, no upsell. The store filters and the people filters are one search, so the result is the stores plus the decision-makers at them. Searching and counting are free and never reveal a contact, and a free preview shows the exact cost before a credit is spent. Browse the Shopify store directory, read how a theme detector reads the same HTML and the four searches behind "search Shopify stores", then start the free trial or see the pricing page.

Before you trust any app list, confirm the store is on Shopify: a technology checker reads a site the same way, and a headless storefront serves no theme app extensions at all, which a detector will report as "no apps" rather than "wrong question".

Where to go next

Questions people ask

What apps does a Shopify store use?

Run curl -s https://example.com/ | grep -o 'cdn.shopify.com/extensions/[^"]*'. Every theme app extension the store loads appears as an asset URL containing the app's extension handle and version, and the asset filename usually names the vendor outright.

Can a Shopify app detector see every app?

No. It can only see apps that put something in the storefront page. Accounting, inventory, shipping, fulfillment and wholesale apps run in the admin and leave no trace, and apps that run as sandboxed web pixels do not have to look like an ordinary script tag.

Why do two Shopify app detectors give different app names?

Because one reports the extension handle from the asset path and the other resolves it to an App Store listing. The handle is picked by the developer for the extension, so it often differs from the listing name, and sometimes it is just a build timestamp.

Is there a free Shopify app checker?

Several run free with no account, including Vitals, Launchtip, TrendTrack, ShopScan and TrueProfit. The command above is also free and reads the same source data, which is useful when you want to see the evidence rather than a tidied list.

How do I find all the stores using a particular Shopify app?

Not with a detector, which answers one store at a time. You need a store index with an exact-name app filter, and if you intend to contact those stores you also need the people, so check that the index pairs each store with its decision-makers before you buy.

Sources

Keep reading

Find the person who decides at your next store.

Start your 7-day trial with 500 free credits. Card required.

ShopLeads comes from the team behind 1,000+ interested D2C replies. Watch the launch film.