Shopify Store Discovery - Apps, Revenue Estimate, Tech Stack
Pricing
from $8.00 / 1,000 store records
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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=1first, 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_analyzemode) with Shopify Plus, subscription, B2B/wholesale, and enterprise-stack refinements; returns arevenue_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/aboutand surfacesbest_contact_email(founder/sales/owner ranked above generic info/support), allcontact_emailswith role classification, andcontact_phones. Only charged when something is extracted. - Founder + brand-story intel (opt-in) -
founder_names,founding_year, andbrand_story_keywords(vegan, sustainable, made in USA, woman-owned, B-corp, etc) for sales personalization. - Last-product-published timestamp +
days_since_last_publishso 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: trueAND 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.
Related Actors
- ../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_seekandcomplaintposts 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_listplus full/products.jsonwalk 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:
| Event | When | Price |
|---|---|---|
store_record | Verified Shopify store with metadata | $0.008 |
app_enrichment | 3+ apps detected | $0.005 |
contact_enrichment | At least one email or phone extracted from /contact /about | $0.005 |
deep_analysis | Surcharge 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.