Shopify Store Scraper 🛍️ Prospector (catalogue + contacts)
Pricing
from $5.60 / 1,000 store analyzeds
Shopify Store Scraper 🛍️ Prospector (catalogue + contacts)
Turn a domain list into a qualified Shopify prospecting sheet: catalogue size, price range, brands and types carried, products shipped in the last 30 days, discount depth, collections, theme, socials and role mailboxes. Read from each store's own public storefront JSON. No API key, no proxy.
Pricing
from $5.60 / 1,000 store analyzeds
Rating
0.0
(0)
Developer
Tagada Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Shopify Store Prospector 🛍️ (catalogue + contacts, no key)
Paste a list of domains. Get back a qualified prospecting sheet: which of them actually run Shopify, how big and how active each catalogue is, what the store sells and at what price, which brands it carries, how hard it discounts, what theme it runs, and where to contact it. Everything is read from each store's own public storefront JSON, so there is no API key, no app install, no OAuth and no proxy anywhere in the run.
StoreLeads, the database most agencies use for this, publishes $75 a month for interactive use of its UI and $250 a month for the plan that lets you export (storeleads.app, read 2026-08-26). This is the same job priced per store, with no subscription, and you keep the raw rows.
How it compares on the Apify Store
Users and prices read from the public Store API on 2026-08-26. Per the 2026-08-20 recon, no listing in this pool carries more than seven reviews, and the biggest one has none at all, so nobody here has an established quality bar yet.
| Listing | 30-day users | Price per store row | Reads a headless storefront? | Free for a miss? |
|---|---|---|---|---|
clearpath/shopify-store-leads | 176 | $5.99 / 1k (deepest $4.99) | not advertised | not advertised |
apivault_labs/website-leads-database | 100 | $8.00 / 1k | not advertised | not advertised |
apivault_labs/shopify-store-analyzer | 77 | $15.00 / 1k (deepest $4.00) | not advertised | not advertised |
webdatalabs/shopify-store-intelligence | 10 | $10.00 / 1k (deepest $4.00) | not advertised | not advertised |
| this actor | new | $8.00 / 1k (deepest $5.60) | yes | yes |
"Not advertised" means exactly that: it is what their public listing says, not a test of their code.
The headless problem, and why it matters to your list
A growing share of the best Shopify brands run a custom front end (Hydrogen, a
Next.js build, a headless CMS). Ask brand.com/products.json and you get a 404
HTML page, so a naive storefront scraper writes them off as "not Shopify" and
they fall out of your list, which is the opposite of what you want: those are the
biggest accounts in it.
This actor reads the homepage, recovers the store's .myshopify.com handle from
its own markup, and reads the catalogue there instead. Measured 2026-08-25:
skims.com/products.json answers 404, skimsbody.myshopify.com/products.json
answers 200 with the real catalogue. When even that is closed, the row still
comes back labelled shopify-headless with the firmographics, theme and socials
attached, instead of a wrong not-shopify.
What you get
One store row per domain.
| Field | What it is |
|---|---|
status | ok, empty, shopify-headless, password, blocked, not-shopify, unreachable, invalid-domain |
statusDetail | A plain sentence saying what happened, per store |
isShopify, myshopifyDomain, canonicalDomain | Platform verdict and the store's Shopify handle |
shopName, city, province, country, currency | Firmographics from the store's own shop record |
productCount, productsAnalyzed, productCountIsFloor, catalogueSizeBand, catalogueTruncated | Exact catalogue size, how many products the summary was computed over, and the size band: starter / micro / small / mid / large / enterprise |
priceMin, priceMax, priceAvg | Price positioning, in the store's own currency |
vendorCount, topVendors | Own-brand or multi-brand retailer, and which brands it carries |
productTypeCount, topProductTypes | What it actually sells |
newProductsLast30d, newProductsLast90d, newestProductAt, oldestProductAt, catalogueAgeDays, productsUpdatedLast30d | Merchandising velocity and catalogue age. New counts come from each product's creation date, not its published date, because Shopify rewrites the published date every time a merchant re-publishes an old product |
discountedProducts, discountRate, maxDiscountPercent | How hard the store is discounting right now |
inStockProducts, outOfStockProducts, inStockRate | Stock health |
variantCount, avgVariantsPerProduct, imageCount | SKU depth and content investment |
collectionCount, collectionsTruncated, topCollections | Merchandising structure |
themeName, themeSchemaName, themeSchemaVersion, usesFreeShopifyTheme | Theme stack, and whether the store is still on a free Shopify theme |
socialLinks | Instagram, TikTok, Facebook, X, YouTube, Pinterest, LinkedIn company page |
publicEmails, contactUrls | Generic role mailboxes and contact / wholesale pages published on the store itself |
prospectFlags | The short list you sort on, e.g. ships-new-products-weekly, catalogue-stale-90d, heavy-discounting, multi-brand-retailer, own-brand, free-shopify-theme, headless-storefront, stock-thin, premium-pricing |
Turn the products toggle on and you also get one product row per product:
title, handle, URL, vendor, product type, tags, price, compare-at price, sale
depth, stock, variant count, image count and the created / updated / published
dates.
On contact data
Only generic role mailboxes (hello@, info@, wholesale@ and the like) that
the store publishes on its own homepage are ever returned. A named personal
mailbox is discarded and never stored. There is no people data of any kind in
the output.
Who buys this
Agencies and SaaS selling into DTC. Filter a domain list down to live
Shopify stores, then sort by catalogueSizeBand, newProductsLast30d and
usesFreeShopifyTheme to find the accounts worth a call. A store on Dawn with
900 products and 40 new listings a month is a different pitch from a parked
40-product store on a custom theme.
3PL, packaging and fulfilment. productCount, variantCount and
newProductsLast30d are the closest public proxy there is for how much a brand
actually ships, and country plus currency tell you which warehouse it needs.
Competitor and price watching. Run the same list weekly. priceAvg,
discountRate, maxDiscountPercent and newProductsLast30d move before the
press release does.
Sourcing and retail buying. topVendors and topProductTypes tell you
which retailers already carry a category, and inStockRate tells you who is
running out.
Input
{"stores": ["allbirds.com", "colourpop.com"]}
Products as well, capped so one large retailer cannot swamp the run:
{"stores": ["https://www.allbirds.com/collections/mens","deathwishcoffee.com","kith.com"],"includeProducts": true,"maxProductsPerStore": 250}
| Input | Type | Default | Notes |
|---|---|---|---|
stores | array of strings | required | A bare domain, a domain with www, or any URL on the store. Duplicates merge. |
includeProducts | boolean | false | Adds one row per product on top of the store row. |
maxProductsPerStore | integer | 100 | Cap on product rows per store. The store summary always covers the whole catalogue. |
Anything the list field can be handed works: a single string, a comma or
newline separated list, or a dataset piped in from another scraper with url
or domain keys on each item.
Pricing
You pay per store we actually read, and per product row delivered. Domains that turn out to be blocked by a merchant firewall, password-protected, unreachable or not on Shopify come back labelled and cost nothing beyond the run start.
Platform usage is on us, so the price you see is the price you pay. There is no proxy setting because none is needed: the storefront JSON surface is open.
FAQ
Does this need a Shopify API key or a private app?
No. Every path it reads (/meta.json, /products.json, /collections.json)
is served publicly by Shopify storefronts by default.
How do I find Shopify stores in the first place? Version 1 takes a domain list you already have: a CRM export, an ad-library pull, a competitor's stockist page, a conference attendee list. It does not discover stores on its own. Discovery through a tech-detection database needs a paid API key, which would put a cost on this actor that you would end up paying for, so it is deliberately out of scope.
Why does one of my stores come back blocked?
Some merchants put their own firewall in front of Shopify. gymshark.com
answers 403 from any datacenter and bombas.com answers 429 (both measured
2026-08-25). The run does not stop, the store is labelled, and you are not
charged for it.
What does password mean?
The store exists on Shopify but still has its password page on, which is what
an unlaunched or seasonal store looks like. For some prospecting jobs that is
the best signal in the sheet.
Is productCount the whole catalogue?
Almost always exactly, however big the store is. The catalogue is read in full
up to 5,000 products; past that the exact total is recovered with a handful of
tiny index requests rather than downloading the rest, catalogueTruncated turns
true, and productsAnalyzed tells you how many products the price, brand and
velocity figures were computed over.
There is one hard limit, and it is Shopify's, not ours: the storefront JSON
refuses to look past product number 25,000 (page * limit above 25,000 returns
HTTP 400, measured on kith.com 2026-08-26). A store that still answers at that
depth comes back with productCount 25000 and productCountIsFloor true,
meaning at least that many. No reader of this surface can do better, so treat a
tool that quotes you an exact number above 25,000 with suspicion.
Can I get best sellers?
No, and be careful with anyone who says they can from this surface. The JSON
endpoint ignores sort_by=best-selling: the response is byte identical with
and without it (measured 2026-08-25). This actor reports what it can prove.
Can I track a store over time?
Yes. Re-run the same list on a schedule. newProductsLast30d, priceAvg,
discountRate and inStockRate are designed to be diffed run over run.
Does it collect personal data? No. Role mailboxes published by the store itself, social profile links and company firmographics only. Named personal mailboxes are dropped.
Related actors
agency-leads-scraperandclutch-agency-leadsfor the agencies on the other side of this market.b2b-lead-verifierto check a company behind a domain against public registers before you call it.saas-pricing-monitorif the pricing pages, rather than the catalogues, are what you need to watch.
Keywords: shopify store scraper, shopify store leads, shopify products json, dtc brand list, shopify prospecting, ecommerce lead generation, shopify store finder, storeleads alternative, shopify catalogue export, shopify competitor price tracking, shopify tech stack lookup, headless shopify detection.