DEV Community

ApiVault Labs
ApiVault Labs

Posted on

How to Reverse-Engineer Any Shopify Store: Revenue, Traffic, and Tech Stack

Every Shopify storefront leaks more than its owner realizes. The catalog, the scripts in the page source, the sitemap, the SSL history — all of it is public, and together it tells you roughly how much a store makes, where its traffic comes from, and exactly which apps it runs. If you do competitor research, sell to DTC brands, or vet a niche before entering it, knowing how to read those signals is a superpower.

This is a practical walkthrough of the three questions that matter most — how much revenue, how much traffic, what tech stack — how to answer each by hand, and how to do all three at once when you need to profile more than a handful of stores.

Why these three signals

Catalog size and product photos are easy to eyeball. The hard, decision-driving numbers are:

  • Revenue — is this store worth copying, pitching, or acquiring?
  • Traffic — is it actually growing, and where does demand come from?
  • Tech stack — what does it run, and what's it missing that you could sell?

Get those three and you can prioritize. Everything else is detail.

1. Estimating revenue

There's no public "revenue" field, so you model it. The industry-standard formula is the same one SimilarWeb-style tools use:

monthly_revenue ≈ monthly_visits × conversion_rate × average_order_value
Enter fullscreen mode Exit fullscreen mode

Each input is knowable:

  • Monthly visits — from public web-traffic estimates (more on that below).
  • Conversion rate — use a category benchmark: fashion ~1.5–2%, electronics ~1%, impulse-buy ~3–4%. A blended 2.5% is a reasonable default.
  • Average order value — you can't see real orders, but you can approximate AOV from the catalog. Pull /products.json (public on almost every Shopify store), take the median product price, and multiply by ~1.5 to account for multi-item carts.

So for a store doing 200,000 monthly visits, a 2% conversion rate, and a $60 AOV:

200,000 × 0.02 × 60 = $240,000 / month
Enter fullscreen mode Exit fullscreen mode

Treat it as an order-of-magnitude estimate, not accounting data. On stores with 100K+ monthly visits it typically lands within about ±25%. For tiny stores with no traffic data, there's a fallback: count the store's total reviews and multiply by a reviews-to-orders factor (only a fraction of buyers review, so ~30× is a common assumption) to back into an order volume.

Reality check: revenue estimates are for prioritization, not for a term sheet. Use them to sort a list, not to sign a deal.

2. Reading traffic

Traffic is the input revenue depends on, and it's the better growth signal on its own. What to look for:

  • Monthly visits + 3-month trend — direction matters more than the absolute number. A store climbing month over month is a very different prospect than one sliding.
  • Global / country / category rank — context for the raw visit count.
  • Traffic-source mix — the story is in the split. A store that's 70% paid search is buying its growth; one that's 50% direct/brand has real demand. Search-heavy means SEO-dependent; social-heavy means it lives on content or influencers.
  • Top countries — tells you the real market, which often differs from the currency or the .com domain.
  • Top keywords — what people actually search to land there, with volume and CPC. This is competitor keyword research for free.
  • Bounce rate and pages per visit — cheap proxies for how sticky the store is.

The trap here is stopping at the headline visit number. The mix is where the insight lives — it tells you whether growth is bought or earned, and that changes how you'd compete or pitch.

3. Fingerprinting the tech stack

This is the most mechanical of the three and, for many use cases, the most valuable. Every app a Shopify store installs leaves a footprint — a script tag, a DOM element, a CDN reference, a global JS variable. You can read the homepage source and match those footprints to known apps.

What's worth detecting:

  • Reviews — Judge.me, Yotpo, Loox, Okendo, Junip
  • Email / SMS — Klaviyo, Attentive, Postscript, Omnisend
  • Subscriptions & loyalty — ReCharge, Smile.io, LoyaltyLion
  • Support — Gorgias, Tidio, Zendesk, Re:amaze
  • Page builders — Shogun, GemPages, PageFly, Rebuy
  • CRO / analytics — Hotjar, Triple Whale, Northbeam
  • Dropshipping — Oberlo, DSers, AutoDS, CJ Dropshipping, Spocket (a strong tell that a store isn't a real brand)
  • Payments / BNPL — Shop Pay, Klarna, Afterpay, Affirm

Two power moves most people miss:

Tracking IDs. The page source usually exposes Google Tag Manager, GA4, Facebook Pixel, TikTok Pixel, and Klaviyo public keys. Because operators reuse the same pixel or tag across their properties, two different domains sharing one Facebook Pixel ID are almost always the same company. That's how you map a brand's hidden network of stores.

The gap, not just the stack. The absence of an app category is a sales signal. No reviews app = a warm lead for a reviews app. No email tool = a warm lead for Klaviyo's competitor. Running a rival's tool = a warm lead for yours. Prospecting by missing category is far sharper than prospecting by name.

Doing all three at once

Any one of these you can do by hand in a few minutes. The problem is volume and consistency. Profiling one store manually is fine; profiling a hundred is a lost week, and you'll read each one slightly differently, so the results aren't comparable.

That's the itch I built the Shopify Store Analyzer on Apify to scratch. It pulls all three signals — plus contacts, brand age, promos, and a dropshipper-risk score — from nine public data sources in a single pass, and returns one structured record per store. It runs pay-per-use rather than a monthly subscription, so it fits research that spikes and goes quiet, and it needs no login, API key, or proxy setup because everything it reads is public.

A minimal run:

{
  "storeUrls": ["https://allbirds.com", "https://gymshark.com"],
  "conversionRate": 2.5
}
Enter fullscreen mode Exit fullscreen mode

An abbreviated record back:

{
  "domain": "gymshark.com",
  "tech_stack": ["Shop Pay", "Klaviyo", "Apple Pay"],
  "tracking_ids": { "facebook_pixel": "1234567890" },
  "avg_order_value": 51.0,
  "traffic": { "monthly_visits": 15000000, "global_rank": 4200 },
  "revenue_estimate": { "monthly_revenue_usd_est": 19125000 },
  "customer_segment": "mid-market",
  "dropshipper_risk_score": 5
}
Enter fullscreen mode Exit fullscreen mode

If you don't even have a list of stores yet, it can also discover them by keyword or niche, and filter by the app gap you sell into — so you get a scored, contactable lead list instead of a pile of URLs. It's priced as pay-per-use per store analyzed, a fraction of the monthly seat you'd pay a StoreLeads or Commerce Inspector, and you're only charged for stores that are actually reachable Shopify stores.

A quick end-to-end example

Say you sell a reviews app and want ten warm leads in the coffee niche:

  1. Discover stores for ["specialty coffee", "coffee subscription"].
  2. Filter to stores whose tech stack has no reviews app (that's your gap).
  3. Read each store's revenue estimate and traffic trend — keep the ones with real, growing demand.
  4. Grab the public owner/marketing email attached to each record.
  5. Pitch the exact gap: "You're doing real traffic but running no social proof — here's what a reviews widget would lift."

Every input there is public data. Automating it just makes it fast and consistent.

Responsible use

Everything covered here reads publicly available storefront data — the same information any visitor's browser loads — and public business contact details. That's standard competitive research and B2B prospecting. Respect rate limits, honor opt-outs and unsubscribe requests, and keep outreach compliant with applicable laws (CAN-SPAM, GDPR) and platform terms.

Bottom line

Revenue, traffic, and tech stack are the three signals that turn a storefront into a decision. Revenue tells you if it's worth your time, traffic tells you if it's growing and how, and the tech stack tells you what it runs and what it's missing. You can read all three by hand from public data — and when you need to do it across a hundred stores at once, the Shopify Store Analyzer returns them as one structured record per store, ready for your spreadsheet or CRM.


What's the first thing you check when you size up a competitor's store — revenue, traffic, or their app stack? Curious what everyone leads with.

Top comments (0)