Shopify Store Scraper - Find Stores, Emails & Tech Stack avatar

Shopify Store Scraper - Find Stores, Emails & Tech Stack

Pricing

from $0.001 / actor start

Go to Apify Store
Shopify Store Scraper - Find Stores, Emails & Tech Stack

Shopify Store Scraper - Find Stores, Emails & Tech Stack

Find Shopify stores by keyword, product category, country, rating or launch date. Get verified emails, phone numbers, social profiles, real product counts, price range, store age, Shopify theme and installed apps. Export to CSV, JSON or Excel for lead generation.

Pricing

from $0.001 / actor start

Rating

0.0

(0)

Developer

Mukesh Kumar

Mukesh Kumar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Find Shopify stores by keyword, product category, country, rating or launch date — then get the data that tells you whether each store is worth contacting: verified emails, phone numbers, social profiles, real product counts, price range, store age, Shopify theme and installed apps.

No store URLs needed. Give it a niche and it finds the stores for you. Export to CSV, JSON, Excel or XML, or pull results straight from the API.

What you get for every Shopify store

Field groupWhat's included
Contact detailsEmail (with confidence rating), phone, Instagram, Facebook, TikTok, X/Twitter, YouTube, Pinterest, LinkedIn
Store identityStore name, domain, .myshopify.com domain, Shopify shop ID, Shop.app profile
LocationVerified city, region and country from the store's own account, plus currency
Catalog dataReal product count, collection count, price min/median/max, in-stock rate, discount rate, top product types and vendors
Store ageEstimated launch date, months since last product published
Tech stackShopify theme name, custom vs off-the-shelf, and ~30 detectable apps (Klaviyo, Recharge, Gorgias, Yotpo, Judge.me, Attentive, Smile.io, PageFly and more)
Quality signalsStore rating, review count, lead score 0-100

That's ~70 fields per store. Most Shopify scrapers return a name, a URL and two sample products.

Who uses this

  • Ecommerce agencies — find Shopify stores in your niche that have budget signals (custom theme, paid apps, big catalog) and a working email address.
  • Shopify app developers — find stores already running a competing app, or stores that run everything except yours.
  • Suppliers and wholesalers — find retailers selling in your category, sized by real catalog and price band.
  • Dropshipping and market research — measure how many stores sell a product, where they're based, and what they charge.
  • Sales teams — build a Shopify prospect list with verified contacts and skip the ones you already have in your CRM.

How to find Shopify stores

By product keyword

{
"providers": ["shopapp"],
"query": "organic coffee",
"maxItems": 500
}

By niche, filtered to real prospects

Find established coffee stores with a working email that already pay for Klaviyo:

{
"providers": ["shopapp"],
"query": "organic coffee",
"minProducts": 25,
"catalogPriceMin": 20,
"requireEmail": true,
"usesApps": ["Klaviyo"],
"minLeadScore": 60
}

Newly launched Shopify stores

New stores are the highest-value segment for agencies and app developers — they are still choosing their tools. sortBy: "most_recent" is how you reach them:

{
"providers": ["shopapp"],
"query": "skincare",
"sortBy": "most_recent",
"maxStoreAgeMonths": 12,
"requireEmail": true
}

Everything in a category

A single keyword runs out of stores fast. The taxonomy provider walks the Shopify product category tree instead, so it keeps finding new merchants long after keyword search is exhausted:

{
"providers": ["taxonomy"],
"query": "coffee",
"maxItems": 5000,
"skipPreviouslyScraped": true
}

Enrich Shopify stores you already have

Already have a domain list? Skip discovery entirely and just enrich it — no proxy needed, and it's the cheapest way to run this:

{
"providers": ["domains"],
"domains": ["allbirds.com", "deathwishcoffee.com", "gymshark.com"]
}

Find stores in a specific country

{
"providers": ["shopapp"],
"query": "candles",
"storeCountry": "GB",
"requireEmail": true
}

Example output

{
"name": "Death Wish Coffee",
"domain": "www.deathwishcoffee.com",
"myshopifyDomain": "deathwishcoffee.myshopify.com",
"primaryEmail": "hey@deathwishcoffee.com",
"primaryEmailConfidence": "medium",
"socials": { "instagram": "...", "facebook": "...", "youtube": "..." },
"productCount": 149,
"priceMin": 5, "priceMedian": 32.75, "priceMax": 119.99,
"inStockRate": 0.88,
"estimatedStoreAgeMonths": 154,
"topProductTypes": [{ "name": "Apparel", "count": 38 }, { "name": "Coffee", "count": 32 }],
"verifiedAddress": { "city": "Round Lake", "region": "New York", "country": "US" },
"currency": "USD",
"theme": { "name": "Dawn", "isCustomTheme": true },
"apps": [
{ "app": "Klaviyo", "category": "email" },
{ "app": "Gorgias", "category": "helpdesk" },
{ "app": "Smile.io", "category": "loyalty" }
],
"rating": 4.7,
"leadScore": 77
}

Where the data comes from

Five discovery sources, switchable via providers:

ProviderFinds stores byTargetingVolume
shopappKeyword and facet search on Shopify's own marketplaceBestMedium
taxonomyWalking the Shopify product category treeBestHighest
domainsYour own list — enrichment onlyYou chooseYour list
iprangeReverse IP on Shopify's hosting rangeNoneVery high
serpSearch enginesGoodMedium

Every store found is then read directly from its own public storefront endpoints — the same data Shopify serves to any visitor. That's where the catalog, pricing, theme and app data comes from, and it's why the output is deeper than tools that only resell one search API.

Filtering: only pay for leads you'd actually contact

Filters run against the enriched data, not just search results, and only stores that pass count toward maxItems:

FilterFinds
minProducts / maxProductsStores sized to your offer
maxStoreAgeMonthsNewly launched Shopify stores
catalogPriceMin / catalogPriceMaxStores at your price point
requireEmail / requirePhoneOnly contactable leads
usesApps / excludeAppsStores running (or missing) specific apps
customThemeOnlyAgency-built stores, i.e. stores with budget
storeCountryStores based in one country
minRating / minLeadScoreOnly well-rated or high-scoring stores

Lead score

Every store gets a 0-100 score so a large export can be sorted by who to contact first. It weighs contactability, catalog size, publishing activity, tech sophistication and review reputation. It's a ranking heuristic, not a promise — tune minLeadScore against leads you know converted.

Not paying for the same lead twice

  • skipPreviouslyScraped remembers delivered stores between runs, stored as a readable domain list you can inspect — not opaque internal state.
  • excludeDomains seeds it from your CRM, so you never pay for a lead you own.
  • resetSeenStores clears the history without losing the run.

Keeping costs down

Residential proxy transfer is billed per gigabyte and storefront payloads are large, so storefrontProxyMode defaults to auto: requests go direct and fall back to a proxy only for storefronts that actually block us. That cuts the running cost by roughly 70% versus proxying everything, with no loss of coverage. The domains provider needs no proxy at all.

Notes and limits

  • Store age is a lower bound on large catalogs. It's derived from the oldest product sampled, and /products.json isn't ordered by creation date, so a partial sample can make a store look newer than it is. Each record carries storeAgeConfidence (exact or lower-bound), and when maxStoreAgeMonths is set, unverifiable ages are rejected rather than reported as new. Raise catalogPages to sample deeper, or set allowUnverifiedAge to keep them.
  • productCount is capped by Shopify at 25001; records above that carry productCountCapped: true and should be read as "25,000+".
  • App detection is fingerprint-based, so it finds apps that ship front-end assets. Purely back-office apps leave no trace on the storefront.
  • Some storefronts sit behind bot protection and answer nothing. They're reported as verificationStatus: "blocked" rather than silently dropped, and excluded by default unless you set keepUnverified.

FAQ

Do I need store URLs? No. Give it a keyword or category and it finds the stores. If you do have URLs, the domains provider enriches them directly.

Can it find stores in a specific country? Yes — storeCountry matches against each store's own verified account country, not a guess from the domain.

Can it tell me which apps a Shopify store uses? Yes, around 30 common apps are detected from the storefront, including Klaviyo, Recharge, Gorgias, Yotpo, Judge.me, Loox, Okendo, Attentive, Postscript, Smile.io, LoyaltyLion, PageFly and Shogun.

How many stores can I get? Set maxItems up to 20,000 per run. Use the taxonomy provider with skipPreviouslyScraped to keep pulling fresh stores across runs.

Are the emails verified? Each email carries a confidence rating. high means it came from a real mailto: link on the store's own domain. Use requireEmail to drop stores without one.

Is this allowed? It reads publicly available storefront data — the same pages and endpoints Shopify serves to any visitor. Use the output in line with applicable marketing and privacy law (GDPR, CAN-SPAM) in your market.