Shopify Store Scraper 🛍️ Prospector (catalogue + contacts) avatar

Shopify Store Scraper 🛍️ Prospector (catalogue + contacts)

Pricing

from $5.60 / 1,000 store analyzeds

Go to Apify Store
Shopify Store Scraper 🛍️ Prospector (catalogue + contacts)

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

Tagada Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

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.

Listing30-day usersPrice per store rowReads a headless storefront?Free for a miss?
clearpath/shopify-store-leads176$5.99 / 1k (deepest $4.99)not advertisednot advertised
apivault_labs/website-leads-database100$8.00 / 1knot advertisednot advertised
apivault_labs/shopify-store-analyzer77$15.00 / 1k (deepest $4.00)not advertisednot advertised
webdatalabs/shopify-store-intelligence10$10.00 / 1k (deepest $4.00)not advertisednot advertised
this actornew$8.00 / 1k (deepest $5.60)yesyes

"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.

FieldWhat it is
statusok, empty, shopify-headless, password, blocked, not-shopify, unreachable, invalid-domain
statusDetailA plain sentence saying what happened, per store
isShopify, myshopifyDomain, canonicalDomainPlatform verdict and the store's Shopify handle
shopName, city, province, country, currencyFirmographics from the store's own shop record
productCount, productsAnalyzed, productCountIsFloor, catalogueSizeBand, catalogueTruncatedExact catalogue size, how many products the summary was computed over, and the size band: starter / micro / small / mid / large / enterprise
priceMin, priceMax, priceAvgPrice positioning, in the store's own currency
vendorCount, topVendorsOwn-brand or multi-brand retailer, and which brands it carries
productTypeCount, topProductTypesWhat it actually sells
newProductsLast30d, newProductsLast90d, newestProductAt, oldestProductAt, catalogueAgeDays, productsUpdatedLast30dMerchandising 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, maxDiscountPercentHow hard the store is discounting right now
inStockProducts, outOfStockProducts, inStockRateStock health
variantCount, avgVariantsPerProduct, imageCountSKU depth and content investment
collectionCount, collectionsTruncated, topCollectionsMerchandising structure
themeName, themeSchemaName, themeSchemaVersion, usesFreeShopifyThemeTheme stack, and whether the store is still on a free Shopify theme
socialLinksInstagram, TikTok, Facebook, X, YouTube, Pinterest, LinkedIn company page
publicEmails, contactUrlsGeneric role mailboxes and contact / wholesale pages published on the store itself
prospectFlagsThe 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
}
InputTypeDefaultNotes
storesarray of stringsrequiredA bare domain, a domain with www, or any URL on the store. Duplicates merge.
includeProductsbooleanfalseAdds one row per product on top of the store row.
maxProductsPerStoreinteger100Cap 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.

  • agency-leads-scraper and clutch-agency-leads for the agencies on the other side of this market.
  • b2b-lead-verifier to check a company behind a domain against public registers before you call it.
  • saas-pricing-monitor if 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.