Shopify Competitor Analysis - Size, Stack & Prices
Pricing
from $4.75 / 1,000 stores
Shopify Competitor Analysis - Size, Stack & Prices
Profile competitor Shopify stores in one run: catalogue and collection counts, price band, vendors and product types, theme and installed apps, country and currency, and whether they are still shipping new products. A store-level competitor snapshot from a list of domains.
Pricing
from $4.75 / 1,000 stores
Rating
0.0
(0)
Developer
Blackcube
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
| Shopify Store Intelligence Suite • 4 Actors, one codebase, one store billed once | ||
| Shopify Store Leads Scraper Emails, Apps & Store Size | myshopify Domain List Scraper Store Handles & URLs | Shopify Theme Detector Find Stores by Theme in Bulk |
| Shopify Competitor Analysis ➤ You are here | ||
More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite · App Store & Google Play Reviews Suite · Etsy Research Suite · YouTube Comments Intelligence Suite · Telegram Channel Intelligence Suite · Business Reviews Suite · Google Trends Suite · Amazon Product Data Suite · Nordic Marketplaces Suite · Google Sheets Suite · TikTok Suite · Snapchat Suite · LinkedIn Public Data Suite · Instagram Suite · Contact Validation Suite · Google Maps Suite · X / Twitter
Profile competitor Shopify stores in one run: catalogue and collection counts, price band, vendors and product types, theme and installed apps, country and currency, and whether they are still shipping new products. A store-level competitor snapshot from a list of domains.
You pay once per store delivered. Stores that fail your filters are free. Non-Shopify domains, dead domains, frozen stores and bot-walled sites are free. There is no run-start fee, and a run that finds nothing costs nothing.
Why this one
Paste your rivals' domains and get the shape of each business back: how deep the catalogue is, what it costs, what it is built on, and - the question a static database can never answer - whether they are still actively shipping products or coasting on an old catalogue.
How to analyse a competitor's Shopify store
Put your rivals' domains in Store URLs. Each comes back with catalogue depth, price band, product mix, theme, installed apps, and the date it last published a product — so you can tell a competitor that is actively investing from one that is coasting.
What comes back
Every run returns one row per store:
| Field | What it tells you |
|---|---|
storeId, myshopifyDomain, domain, storeUrl | The store's permanent ID and both of its addresses |
name, description | What the store calls itself |
productCount, collectionCount, sizeBand | How big the catalogue is, before you contact anyone |
country, province, city, currency, shipsToCountries | The market the store declares for itself |
isActive, daysSinceLastProduct, newestProductAt | Whether the store is still trading, or died three years ago |
priceMin, priceMax, priceAverage, vendors[], productTypes[] | Price band and catalogue mix |
email, emails[], phone, socials | Published contact routes, plus seven social networks |
themeName, themeStoreId, apps[] | The theme it runs and the apps it has installed |
oldestPublishedProductAt | A launch-era estimate, or null where it cannot be established |
Nothing is invented to fill a column. A field the store does not publish returns null, because a
guessed value is worse than no value.
Measured coverage
Real numbers from a 25-store run, not estimates:
| Field | Present on |
|---|---|
| Theme | 100% |
| Contact email | 72% |
| Active in the last year | 60% |
| Social profiles | 56% |
| Installed apps detected | 44% |
Default settings
Clicking Start with the defaults runs exactly this:
{"discoverStores": false,"storeUrls": ["https://www.allbirds.com","https://www.deathwishcoffee.com","https://kith.com"],"maxStores": 25,"includeCatalog": true,"includeContacts": true,"includeTechStack": true,"includeLaunchDate": true}
Change any of it. The full filter set — countries, minProducts, maxProducts,
activeWithinDays, launchedWithinDays, keywords, excludeKeywords — is available on every
run, and anything a filter rejects is free.
What you are charged for
One charge per store record delivered. Nothing else.
Always free: stores that fail your filters, domains that are not Shopify stores, dead and parked
domains, frozen and deleted stores, sites behind a bot wall, every error and diagnostics row,
the second sighting of a store already charged in the run, and a run that returns nothing. There is
no run-start fee.
maxStores caps what you pay for, maxCostUsd stops the run before a hard ceiling, and
maxStoresScanned bounds how far a narrow filter searches.
Setup
Apify Proxy is required — it is selected by default. Datacenter proxy is enough; residential is not needed. Runs without a proxy return almost nothing.
Related tools
Same engine, pointed at a different job:
- myshopify Domain List Scraper - Store Handles & URLs
- Shopify Theme Detector - Find Stores by Theme in Bulk
- Shopify Store Finder - Discover Ecommerce Stores
- New Shopify Stores Scraper - Recently Launched Brands
- Ecommerce Leads by Country - Shopify Stores Scraper
- Shopify Store Leads Scraper — the full version, every mode in one
Unofficial
This is an unofficial tool. It is not affiliated with, endorsed by, or sponsored by Shopify Inc. "Shopify" is a trademark of Shopify Inc. and is used here only to describe what the tool works with. It reads only what a store publishes publicly on its own storefront — nothing private, nothing behind a login.
Use it from n8n, MCP, the API or a schedule
Built to be called by a workflow, not only from the Store form. The Actor is vonsensey/shopify-competitor-analysis-scraper; every snippet below sends {}, which runs the defaults shown on the form — replace it with your own input.
n8n
Install the Apify community node (@apify/n8n-nodes-apify under Settings → Community Nodes, or search "Apify" on n8n Cloud). Add Apify → Run Actor with Actor vonsensey/shopify-competitor-analysis-scraper and your input JSON, then Apify → Get Dataset Items on the run's defaultDatasetId and pipe the rows anywhere. For scheduled runs, the On new Apify Event trigger fires when a run of this Actor finishes.
MCP (Claude, Cursor, VS Code, any MCP client)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=vonsensey/shopify-competitor-analysis-scraper","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
Your agent then calls vonsensey/shopify-competitor-analysis-scraper as a tool with the same input the form takes and reads the dataset back.
REST API (one call, rows in the response)
curl -X POST "https://api.apify.com/v2/acts/vonsensey~shopify-competitor-analysis-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d '{}'
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("vonsensey/shopify-competitor-analysis-scraper").call(run_input={})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row)
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('vonsensey/shopify-competitor-analysis-scraper').call({});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Make, Zapier, LangChain, CrewAI
The Apify app in Make and Zapier has a Run an Actor module: pick vonsensey/shopify-competitor-analysis-scraper. In LangChain and CrewAI the Apify tool wrappers take the same Actor id. A daily schedule needs nothing but the Console: Schedules → Create → this Actor → cron, and the dataset fills on its own.
Run it without configuring anything — Compare Shopify competitors side by side, a ready-made example you can start as-is or copy.
Use cases
- Build a qualified lead list. Every store arrives with its contact email, country, catalogue size and price band, so the list is already filtered before you write a line.
- Sell to a tech stack. Find the stores running a given theme or app category — or the ones missing it entirely, which is the better pitch.
- Size a niche before entering it. Catalogue depth, price band, vendors and whether a store still ships new products tell you if a market is alive.
- Catch new stores early. Recently launched brands are still choosing the tools they will pay for.
Run it on a schedule
A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per store delivered, and the FAQ below says exactly what a scheduled run that finds nothing new costs.
FAQ
Where do the stores come from?
Live storefronts, read at the moment you run it — either the URLs you supply or discovery across the public web. Nothing here is a resold static list.
Is the email the store owner's?
It is the contact address the store publishes. Where a store exposes several, the most owner-facing one is preferred and the rest are kept.
Do I pay for stores that fail my filters?
No. A store that does not match your country, size or keyword filter is a free row, so you can filter aggressively without paying for it.
Can I check which apps and theme a store runs?
Yes — theme family, Theme Store ID where it has one, and the installed app categories, on the same row as the contact details.
Does this work on stores with a custom domain?
Yes, and it recognises them as the same store as their .myshopify.com address, so you are never billed twice for one shop.
Can I target a specific niche?
Use keywords, which matches the store name, description, domain, vendors and product types. Discovery itself is broad, so a narrow keyword needs a higher maxStoresScanned — and everything rejected along the way is free.
Why is oldestPublishedProductAt sometimes null?
Very large catalogues cannot be paged to the end, so the launch date genuinely cannot be established. It returns null rather than a wrong date.
Why is email null on some stores?
Because that store publishes no contact address. Inventing info@ would give you a bounce and a damaged sending reputation. Addresses are also only accepted from the store's own domain — a support address belonging to some third-party tool the store happens to use is not your lead.
Will I get the same stores if I run it again?
No. Each discovery run samples a different slice, so a weekly top-up brings new leads rather than re-charging you for ones you already have. Pin discoverySeed if you want a run to repeat exactly.
Is the data personal information?
The contact details are business contact routes a merchant publishes on its own storefront and policy pages for exactly this purpose. Handle them under your own lawful basis and honour any opt-out you receive.
How long does a run take, and why does nothing appear for the first minute?
Discovery starts with the Common Crawl URL index, which takes roughly a minute before the first store appears (measured 81 s). After that a store takes about 2.3 s at the default concurrency of 10, so 200 scans is 8–10 minutes and the default 60-minute timeout covers about 1,500 scans. The log says what is happening from the first second. If a run approaches its timeout it stops early on its own: you keep every store found, the diagnostics row shows stopReason: outOfTime and candidatesNotScanned, a free notice row explains it, and nothing unscanned is charged — raise the run timeout or lower maxStoresScanned to get the rest.
Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.