Shopify Store Discovery - Apps, Revenue Estimate, Tech Stack avatar

Shopify Store Discovery - Apps, Revenue Estimate, Tech Stack

Pricing

from $8.00 / 1,000 store records

Go to Apify Store
Shopify Store Discovery - Apps, Revenue Estimate, Tech Stack

Shopify Store Discovery - Apps, Revenue Estimate, Tech Stack

Find Shopify stores by domain list with full intel: 30+ app detection (Klaviyo/Recharge/Yotpo/Gorgias/etc), product count, revenue estimate range, theme, social links. Server-side filter by required/excluded apps + revenue range. For D2C SaaS sales teams.

Pricing

from $8.00 / 1,000 store records

Rating

0.0

(0)

Developer

Seibs.co

Seibs.co

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Shopify Store Discovery

Find Shopify stores by domain and enrich each with app-stack detection (30+ apps), product / revenue stats, theme, social links, and contact info.

What does Shopify Store Discovery do?

It verifies Shopify via the public /products.json endpoint (with Liquid HTML fallback), detects 30+ installed apps from script-tag footprints, and pulls product catalog stats, theme, social links, contact info, and a heuristic monthly revenue estimate. Server-side filters by required apps (AND), excluded apps (NOT), product count band, revenue band, country, and category keyword - filtered-out stores are not charged.

Features

  • Shopify verification - GET /products.json?limit=1 first, Liquid template HTML fallback.
  • 38+ app detection from script footprints, each tagged with confidence (low / medium / high).
  • Server-side filters - required_apps (AND), excluded_apps (NOT), product band, revenue band, country, keyword.
  • Heuristic monthly revenue estimate (deep_analyze mode) with Shopify Plus, subscription, B2B/wholesale, and enterprise-stack refinements; returns a revenue_estimate_confidence (low / medium / high) so buyers know how much to trust it.
  • Shopify Plus + B2B/wholesale classification surfaced as their own boolean fields.
  • Per-store progress logging - one info line per store with size, apps, revenue, and email so long runs are auditable.
  • Contact enrichment (opt-in default true) - scrapes /contact /pages/contact /about and surfaces best_contact_email (founder/sales/owner ranked above generic info/support), all contact_emails with role classification, and contact_phones. Only charged when something is extracted.
  • Founder + brand-story intel (opt-in) - founder_names, founding_year, and brand_story_keywords (vegan, sustainable, made in USA, woman-owned, B-corp, etc) for sales personalization.
  • Last-product-published timestamp + days_since_last_publish so you can split fresh brands from abandoned ones.
  • Visible review count + average rating when a review app (Yotpo / Loox / Judge.me / Okendo / Stamped / Reviews.io) is detected.
  • Theme name + version detection.
  • Social link parsing (IG, FB, TikTok, X, YouTube, Pinterest, LinkedIn).
  • App-list unwind view - one row per (store, app) for downstream slicing.

Use cases

D2C SaaS sales teams selling INTO the Shopify ecosystem - concrete buyers:

  • Klaviyo competitors (Omnisend, Sendlane, Drip) - filter excluded_apps: ["klaviyo"] for non-Klaviyo Shopify stores.
  • Recharge competitors (Bold, Loop, Awtomic, Stay AI) - has_subscriptions: true AND no Recharge.
  • Yotpo / Stamped / Judge.me competitors (Okendo, Loox, Reviews.io).
  • Gorgias competitors (Zendesk, Re:amaze, Help Scout).
  • Postscript / Attentive competitors - segment by SMS app presence.
  • Triple Whale / Northbeam / Polar Analytics - find stores with 5+ apps and $100K+ revenue.
  • Shogun / PageFly / Replo / GemPages teams - find competitors' installed base.
  • Headless agencies (Hydrogen / Storefront API) - find Plus-tier Shopify stores still on Liquid.

FAQ

Q: Is this legal? A: Yes - we hit Shopify's public /products.json endpoint, the public Liquid HTML, and public /contact / /about / /pages/contact pages. All publicly accessible to any browser. Use the data per Shopify's Terms of Service and applicable law.

Q: Why might a run fail? A: (1) Cloudflare challenge - we use curl_cffi with Chrome 131 impersonation which handles most, but RESIDENTIAL proxies improve consistency. (2) Domain is not Shopify - row comes back is_shopify: false with the detection reason and is not charged. (3) /products.json is rate-limited at the store level - we self-throttle, but very high concurrency on a single brand's domain group can still trigger it.

Q: How fresh is the data? A: Live at crawl time. Product counts, prices, theme, apps, contact info, social links, and days_since_last_publish are read directly from the store at run time - no internal cache.

Q: Can I schedule this daily or weekly? A: Yes - weekly is typical for D2C-into-Shopify SaaS prospecting (find fresh installs of competitor apps, drop the new ones into outbound). Daily for very narrow watchlists. Use Apify Schedules.

Q: How do I push results into a CRM? A: The output maps cleanly to standard lead schemas - best_contact_email, contact_phones, social links, store name, and the apps_installed array all forward to HubSpot, Salesforce, Pipedrive, Apollo, or Klaviyo via Zapier/Make/n8n. Webhook the full record on each run-complete for real-time CRM enrichment.

Q: How accurate is the revenue estimate? A: It is a heuristic from product_count x avg_price x estimated_orders/day multipliers (with Shopify Plus, subscription, B2B/wholesale, and enterprise-stack refinements). Expect approximately +/-50% error on absolute MRR. The wedge is relative ranking - "under $10K/mo vs over $500K/mo" - not precision. Use it as a filter floor (min_estimated_monthly_revenue_usd: 50000 to skip tiny stores), not ground truth for a financial model. revenue_estimate_confidence (low / medium / high) tells you how much to trust each estimate.

Q: How does PPE pricing actually work here? A: Filtered-out and non-Shopify rows are NEVER charged. You only pay for stores that match your input criteria. Contact enrichment only bills when data is actually extracted. See the Pricing section for per-event rates.

  • ../b2b-sales-triggers/ - score intent (hiring, funding, exec changes) on top of Shopify-store fit. Run this actor to find non-Klaviyo $50K+ MRR stores, then pipe the domain list into the triggers actor.
  • ../google-maps-reviews-pro/ - layer review sentiment / topic analysis on Shopify brands with physical retail or showrooms.
  • ../reddit-topic-watcher/ - watch for alternative_seek and complaint posts mentioning Shopify apps your prospects are using (conquest signals).

Integrations

  • Zapier - push to HubSpot/Salesforce/Pipedrive/Apollo/Klaviyo
  • Make.com - workflow automation
  • n8n - self-hosted automation
  • Apify webhooks - POST to your endpoint
  • API + dataset export (JSON/CSV/Excel/XML)
  • MCP / AI agents - call from Claude/GPT/LangChain

App detection list (30+ apps)

Email + SMS: Klaviyo, Postscript, Privy, Justuno, Sumo, Drip. Subscriptions: Recharge, Bold, Loop, Smile.io. Reviews + UGC: Yotpo, Stamped.io, Judge.me, Okendo, Loox, Reviews.io, Trustpilot, Bazaarvoice. Support + Chat: Gorgias, Tidio, Drift. Search + Personalization: Klevu, Searchanise, Algolia, Nosto, Dynamic Yield, LimeSpot, Wiser. Page Builders: Shogun, PageFly, Replo, GemPages, Zipify. Upsell + CRO: ReConvert, Rebuy, Fomo, Octane AI. Headless / Frontend: Hydrogen, Shogun Frontend.

Modes

  • discover_by_domain_list - run the full intel pass on every input domain.
  • detect_shopify_only - lightweight is-Shopify boolean only (cheapest).
  • deep_analyze - discover_by_domain_list plus full /products.json walk and revenue estimate.

Input

See .actor/INPUT_SCHEMA.json. Sample - find non-Klaviyo Shopify stores doing 50-1000 products, $50K+ MRR:

{
"mode": "deep_analyze",
"domains": ["allbirds.com", "rothys.com", "warbyparker.com"],
"excluded_apps": ["klaviyo"],
"min_product_count": 50,
"max_product_count": 1000,
"min_estimated_monthly_revenue_usd": 50000,
"concurrency": 4,
"use_apify_proxy": true,
"apify_proxy_groups": ["RESIDENTIAL"]
}

Output

Sample output: ./.actor/sample-output.json — copy-paste-ready preview of real-looking records.

First record inline:

{
"domain": "luminouswick.co",
"store_url": "https://luminouswick.co",
"is_shopify": true,
"shopify_plan_hint": {
"plan": "shopify",
"source": "X-ShopId header pattern"
},
"store_name": "Luminous Wick \u2014 Hand-Poured Soy Candles",
"homepage_title": "Luminous Wick | Small-Batch Soy Candles & Refills",
"homepage_description": "Hand-poured in Brooklyn. Coconut-soy wax, cotton wicks, fragrance-loaded. Shop scents, refill kits, and gift sets.",
"currency": "USD",
"primary_country": "US",
"total_product_count": 84,
"total_collections_count": 12,
"avg_product_price": 38.4,
"min_product_price": 14.0,
"max_product_price": 168.0,
"top_categories": [
"Candles",
"Refill Kits",
"Gift Sets",
"Wax Melts",
"Accessories"
],
"recent_product_count_30d": 7,
"has_subscriptions": true,
"has_rewards_program": true,
"has_quiz": true,
"has_post_purchase_upsell": true,
"apps_installed": [
{
"app_id": "klaviyo",
"footprint_match": "static.klaviyo.com",
"confidence": "high"
},
{
"app_id": "recharge",
"footprint_match": "rechargepayments.com/shopify",
"confidence": "high"
},
{
"app_id": "smile_io",
"footprint_match": "cdn.smile.io",
"confidence": "high"
},
{
"app_id": "octane_ai",
"footprint_match": "cdn.octaneai.com/quiz-widget",
"confidence": "high"
},
{
"app_id": "judgeme",
"footprint_match": "judge.me/widget",
"confidence": "high"
},
{
"app_id": "yotpo",
"footprint_match": "staticw2.yotpo.com",
"confidence": "medium"
},
{
"app_id": "rebuy",
"footprint_match": "rebuyengine.com",
"confidence": "high"
},
{
"app_id": "gorgias",
"footprint_match": "config.gorgias.chat",
"confidence": "high"
},
{
"app_id": "tapcart",
"footprint_match": "open.tapcart.com",
"confidence": "medium"
}
],
"apps_count": 9,
"estimated_monthly_revenue_usd": {
"low": 180000,
"high": 320000,
"midpoint": 250000
},
"revenue_estimate_method": "product_count * avg_price * estimated_orders/day band",
"social_links": {
"instagram": "https://www.instagram.com/luminouswickco",
"facebook": "https://www.facebook.com/luminouswickco",
"tiktok": "https://www.tiktok.com/@luminouswick",
"twitter": null,
"youtube": null,
"pinterest": "https://www.pinterest.com/luminouswickco",
"linkedin": null
},
"contact_email": "hello@luminouswick.co",
"contact_phone": "(718) 555-0184",
"theme_name": "Impulse",
"theme_version": "7.4.2",
"language": "en",
"scraped_at": "2026-05-13T16:02:14Z",
"mode": "domain_scan",
"available": true,
"reason": null
}

Sample record:

{
"domain": "example.com",
"store_url": "https://example.com",
"is_shopify": true,
"shopify_plan_hint": {"plan": "shopify", "source": "headers"},
"store_name": "Example Co",
"currency": "USD", "primary_country": "US",
"total_product_count": 187,
"avg_product_price": 64.50,
"apps_installed": [
{"app_id": "klaviyo", "footprint_match": "static.klaviyo.com", "confidence": "high"},
{"app_id": "recharge", "footprint_match": "rechargepayments.com", "confidence": "high"}
],
"apps_count": 6,
"estimated_monthly_revenue_usd": {"low": 60000, "midpoint": 120000, "high": 240000},
"theme_name": "Dawn",
"available": true,
"scraped_at": "2026-05-14T12:00:00Z"
}

Non-Shopify rows include is_shopify: false and the detection reason; filtered-out rows are not emitted.

Pricing

Pay-per-event:

EventWhenPrice
store_recordVerified Shopify store with metadata$0.008
app_enrichment3+ apps detected$0.005
contact_enrichmentAt least one email or phone extracted from /contact /about$0.005
deep_analysisSurcharge in deep_analyze mode$0.010

Worst case (deep_analyze, 5+ apps, contact extracted): $0.028 per store. Cheapest (detect_shopify_only, <3 apps, no contact): $0.008. Contact enrichment is only billed when data is actually returned, so misses cost nothing.

FAQ

Q: Why is shopify_plan_hint often null? A: Shopify hides plan info. We can sometimes spot shopify-plus references in HTML or Powered-By headers; otherwise plan is null.

Q: How accurate is the revenue estimate? A: A rough heuristic - expect +/- 50% error on absolute MRR. The wedge is relative ranking ("under $10K/mo or over $500K/mo"), not precision. Treat it as a defensible signal, not a financial figure.

Q: Do I need a residential proxy? A: Recommended. Many Shopify stores are behind Cloudflare; we use curl_cffi with Chrome 131 impersonation, which gets through plain CF challenges, but RESIDENTIAL proxies improve consistency.

Q: How do server-side filters affect billing? A: Filtered-out and non-Shopify rows are NEVER charged. You only pay for stores that match your input criteria.

Support

Open an issue on the actor's GitHub or contact via Apify Store. Include the run ID and input config.

Changelog

See ./CHANGELOG.md.