Shopify Store Leads Scraper: Emails, Payments, Lead Scoring avatar

Shopify Store Leads Scraper: Emails, Payments, Lead Scoring

Pricing

from $2.99 / 1,000 store scrapeds

Go to Apify Store
Shopify Store Leads Scraper: Emails, Payments, Lead Scoring

Shopify Store Leads Scraper: Emails, Payments, Lead Scoring

Find Shopify stores by keyword or category — no store URL needed. Emails, phones, addresses, ratings, socials, sample product. Optional enrichment finds inboxes the marketplace hides and flags the payment stack (Stripe, PayPal, Adyen +10). Every lead scored 0-100 so your list arrives ranked.

Pricing

from $2.99 / 1,000 store scrapeds

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

17

Monthly active users

6 days ago

Last modified

Share

Shopify Store Leads Scraper — Emails, Payment Stack & Lead Scoring

Discover Shopify stores by product keyword or category and pull back structured store leads — website, emails, phone numbers, business address, star rating, social profiles and a sample product — with no store URL needed.

Three things set it apart from a plain marketplace scrape: optional enrichment visits each store's own website and reads its contact / about / impressum pages for inboxes the marketplace never lists, payment-stack detection tells you which processor each store actually runs — so you can filter a list down to merchants that demonstrably take money online — and every row ships with a 0–100 lead score so a thousand-store export arrives already ranked.

Built for B2B outreach, supplier sourcing, agency prospecting and e-commerce market research.

How the Shopify Store Leads Scraper works

Why use this Shopify Store Leads Scraper?

  • No store URLs required — search by what stores sell ("organic coffee", "serum", "yoga mat") or browse a whole category. The scraper finds the stores for you.
  • Payment-stack qualification — flags whether a store exposes a real checkout and which processor runs it, across 13 gateways (Stripe, Shopify Payments, PayPal, Paddle, Square, Braintree, Adyen, Mollie, Chargebee, Recurly, FastSpring, Lemon Squeezy, WooCommerce), each with a high / medium / low confidence rating. A dead storefront and a merchant doing real volume look identical in a marketplace listing — this is what separates them.
  • Optional email enrichment — turn it on and the actor visits each store's own website and reads its contact / about / impressum pages to find emails, phones and socials the marketplace does not expose. This is the difference between a website and an actual address to email.
  • Built-in lead scoring, with a quality floor — every row carries a leadScore from 0 to 100 plus leadScoreSignals, the list of exactly which signals earned it. Sort by score, or set Minimum lead score and the actor drops weak leads before they ever reach your dataset — so you ask for "stores worth calling", not "stores". Computed from data already on the row: always on, costs nothing, adds no run time.
  • Real contact leads — emails, phones, and Facebook / Instagram / Pinterest / YouTube / TikTok / Twitter / LinkedIn profiles, plus the store's own website and .myshopify.com domain.
  • Ratings & social proof — average product rating, total ratings and total reviews for every store, so you can prioritise established merchants.
  • Location & price filters — target a country or region, or filter by the store's sample-product price and on-sale status.
  • One row per store, billed per store — clean, deduplicated output. Export to JSON, CSV, Excel or HTML, or pull it over the API.

What does the Shopify Store Leads Scraper do?

It searches the Shop by Shopify marketplace (shop.app) — the consumer marketplace that indexes hundreds of thousands of real Shopify stores — to discover merchants that match your keyword or category, then enriches each one with contact and profile data.

  • 🔍 Search by keyword — find stores that sell a specific product.
  • 📂 Browse by category — 14 top-level categories (Beauty, Electronics, Home, Food & drinks, Pet supplies…), alone or combined with a keyword.
  • 🌍 Filter by location — a single country (US, GB, DE…) or a named region (Europe, North America, English-speaking, UK & Ireland, Nordics, Oceania, Worldwide).
  • 📧 Extract contacts — emails, phones and seven social networks straight from the marketplace, merged with anything found on the store's own site when enrichment is on.
  • Ratings & reviews — average rating, total ratings, total review count.
  • 🛍️ Sample product — a representative product per store (title, price, currency, on-sale flag) when discovered via category / price search.
  • 🎯 Lead score — a 0–100 grade per store, built from the contact and quality signals already on the row: email on the store's own domain, business vs free mailbox, phone, website, rating of 4+, socials, and a complete address. leadScoreSignals lists which ones fired, so the number is always explainable.
  • 💳 Payment detection (optional) — scans the store's own site for checkout and gateway signals and returns takesPayments, the list of detected processors, and a confidence grade. High means a named processor or an exposed live Stripe publishable key (public by design — it confirms a real, active Stripe account); medium means an e-commerce platform; low means a generic cart only. Runs during enrichment, so it costs no extra requests.

Supported inputs

InputWhat it does
Search queryProduct keyword to find stores that sell it. Optional if a category is set.
CategoryOne of 14 product categories to browse. Optional if a query is set.
Store locationRestrict to a country or a named region.
Min / Max priceKeep stores whose sample product falls in a price band.
On sale onlyKeep stores whose sample product is currently discounted.
Max storesCap on unique stores returned (one billable row each).
Enrich with store website emailsFetch each store's own site for extra emails / phones / socials.
Detect payment stackDuring enrichment, flag the store's payment / checkout processor.
Minimum lead scoreKeep only stores scoring at or above this (0–100). Empty = keep every store.

You must provide at least one of Search query or Category.

Using Minimum lead score together with enrichment? The score is computed from the enriched row, so enrichment has to run before the actor knows whether a store clears your bar. Stores dropped below the threshold are never billed as results — but any email enrichment already performed on them is. If you want the cheapest possible run, filter on score with enrichment off, or raise the threshold gradually rather than starting high.

Use cases

B2B lead generation — Build targeted prospect lists of Shopify store owners by niche and location, with direct contact details for cold outreach. Turn on enrichment to get real inboxes, not just homepages.

Supplier & wholesale discovery — Find every store selling a given product across the Shopify ecosystem, compare ratings and price points, and shortlist suppliers or partners.

Agency prospecting — Discover stores in a vertical and build outreach lists for design, marketing, fulfilment, CRO or Shopify-app services. Payment detection tells you which ones already sell online.

Market & competitor research — Map how many stores operate in a category, where they're based, and how they're rated — a fast read on any niche's competitive landscape.

CRM enrichment — Feed a keyword or category and export straight to CSV / Excel to append emails, phones and socials onto an existing account list.

How it works

  1. You enter a product keyword, a category, or both — plus any location / price filters.
  2. The actor discovers matching Shopify stores from the Shop marketplace. Keyword-only searches use the store index directly; category or price searches use product discovery and derive the store behind each product.
  3. Each unique store is mapped to a clean lead row — website (tracking parameters stripped), .myshopify.com domain, emails, phones, socials, address, rating and reviews.
  4. If email enrichment is on, the store's own website is fetched and its contact / about pages are scanned for additional emails, phones and social links, which are merged into the row.
  5. The finished row is scored 0–100 from the signals it ended up with, and the signals that fired are attached alongside the number.
  6. If you set a minimum lead score, anything below the bar is dropped here — before it is written or billed as a result.
  7. Each surviving store is written to the dataset as one row, ready to export or pull over the API.

Input configuration

Run it from the Apify Console UI, or via the API / SDK. Example input:

{
"query": "organic coffee",
"storeLocation": "US",
"maxItems": 200,
"enrichEmails": true,
"detectPayment": true,
"minLeadScore": 60
}

That last line is the "only leads worth calling" setting: enrichment finds the inboxes, the score grades what it found, and anything under 60 never reaches your dataset.

Category browse with a price floor:

{
"category": "Beauty",
"query": "serum",
"priceMin": 20,
"maxItems": 100
}

Output overview

Every store is one dataset row. Below is a real, lightly-trimmed example (enrichEmails: true):

{
"id": "4521218",
"shopifyId": "55854628923",
"name": "IncaFé Organic Coffee",
"website": "https://www.incafe.co.nz/",
"myshopifyDomain": "incafe-organic-coffee.myshopify.com",
"shopUrl": "https://shop.app/m/incafe-organic-coffee",
"email": "coffee@incafe.co.nz",
"emails": ["coffee@incafe.co.nz"],
"phone": "06 759 1680",
"phones": ["06 759 1680"],
"socials": {
"facebook": "https://facebook.com/incafeorganic",
"instagram": "https://instagram.com/incafeorganic"
},
"address": {
"address1": "6 Cody Place",
"address2": "Fitzroy",
"city": "New Plymouth",
"state": "Taranaki",
"stateCode": "TKI",
"country": "NZ",
"postalCode": "4312",
"company": null,
"formatted": ["6 Cody Place", "Fitzroy", "Taranaki", "New Plymouth 4312", "New Zealand"]
},
"rating": 4.9016,
"totalRatings": 61,
"totalReviews": 20,
"sampleProduct": {
"title": "Organic House Blend",
"price": 18.5,
"currency": "NZD",
"originalPrice": null,
"onSale": false,
"url": "https://www.incafe.co.nz/products/organic-house-blend"
},
"contacts": [
{ "method": "website", "target": "https://www.incafe.co.nz/" },
{ "method": "email", "target": "coffee@incafe.co.nz" },
{ "method": "phone", "target": "06 759 1680" },
{ "method": "facebook", "target": "https://facebook.com/incafeorganic" },
{ "method": "instagram", "target": "https://instagram.com/incafeorganic" }
],
"emailEnrichment": {
"website": "https://www.incafe.co.nz",
"emails": ["coffee@incafe.co.nz"],
"source": "site-scrape",
"confidence": "high",
"phones": ["06 759 1680"],
"payment": { "takesPayments": true, "processors": ["shopify"], "confidence": "medium" }
},
"leadScore": 85,
"leadScoreSignals": [
"emailPresent",
"emailDomainMatch",
"emailProviderBusiness",
"phonePresent",
"websitePresent",
"ratingAtLeast4",
"socialAny",
"addressComplete"
],
"scrapedAt": "2026-08-08T13:21:43.220Z"
}

Download as JSON, CSV, Excel or HTML from the dataset tab, or fetch via the API.

Key output fields

FieldTypeDescription
idstringShop marketplace store id
shopifyIdstringUnderlying Shopify shop id
namestringStore name
websitestringStore's own website (tracking params stripped)
myshopifyDomainstringstore.myshopify.com domain
shopUrlstringShop marketplace profile URL
email / emailsstring / arrayPrimary email and all emails found
phone / phonesstring / arrayPrimary phone and all phones found
socialsobjectFacebook, Instagram, Pinterest, YouTube, TikTok, Twitter, LinkedIn
addressobjectaddress1/2, city, state, stateCode, country, postalCode, company, formatted[]
ratingnumberAverage product rating (out of 5)
totalRatingsnumberNumber of ratings
totalReviewsnumberNumber of written reviews
sampleProductobjectRepresentative product (title, price, currency, originalPrice, onSale, url)
contactsarrayEvery contact method as { method, target }
emailEnrichmentobjectPresent when enrichment is on — website, emails, phones, socials, source, confidence, payment
leadScorenumber0–100 quality grade for the store as an outreach lead. Always present
leadScoreSignalsarrayWhich signals earned the score, e.g. emailDomainMatch, phonePresent, addressComplete
scrapedAtstringISO timestamp

FAQ

Do I need a store URL? No. You search by keyword or category; the scraper discovers the stores.

Where does the data come from? The public Shop by Shopify marketplace (shop.app), which indexes real Shopify merchants and their storefront metadata.

Why is email empty for some stores? Not every store publishes an email on the marketplace. Turn on Enrich with store website emails to fetch the store's own site and find one — it's best-effort and skews toward stores that run a full website. phone and address are likewise present only when the store exposes them.

How is leadScore calculated? It sums the outreach signals present on the finished row: an email on the store's own domain (25 points) is the heaviest, then phone (12), any social profile (10), any email at all (8), website (8), rating of 4+ (8), complete street address (8) and a business rather than free mailbox (6). leadScoreSignals names every one that fired, so any score can be traced back to its parts. It reads only data already on the row, so it costs no extra requests and never slows a run.

Why doesn't any store score 100? Three of the scorer's signals — long description, listing images and structured attributes — describe fields the Shop marketplace doesn't publish for stores, so a perfect Shopify store row tops out at 85. Treat the score as a ranking tool within a run, not an absolute grade. Scores are directly comparable between runs of this actor.

What does minLeadScore do, and what should I set it to? It drops any store scoring below the bar before it is written or billed, so you can ask for "only leads worth calling" instead of filtering a spreadsheet afterwards. With enrichment on, 60 is a good starting bar — it demands a real email plus a couple of supporting signals. Two cautions the run log will also tell you: a store with no email caps at 46, so a bar above that with enrichment off will reject nearly everything; and a store dropped by the filter may still have been enriched, because the score is computed from the enriched row. Note also that Max stores caps how many stores are examined, not how many survive the filter — a run with a high bar returns fewer rows than the cap.

Should I turn on enrichment before trusting the scores? For outreach, yes. The three email signals are 39 of the 100 points, and the marketplace publishes an email for only a minority of stores — so with enrichment off, most rows land in the 8–46 band regardless of how good the store is, and the ranking mostly reflects who listed an email publicly. With enrichment on, the score separates stores by contactability, which is what you actually want to sort by. The run log warns you when scoring is running without enrichment.

Why is the sample-product currency sometimes different from the store's country? Marketplace prices are returned in the currency inferred for the run's location, so amounts and currency codes can vary between rows. Treat sampleProduct.price as an indicative figure, not a billing-exact quote.

How does the location filter behave for stores with no address? Stores that publish no country are kept rather than dropped, so you don't lose leads to missing metadata. Stores that do publish a country are filtered strictly.

Can I get more stores per run? Yes — raise Max stores. The marketplace routinely returns hundreds to thousands of stores for a broad keyword.

Is this affiliated with Shopify? No. It reads publicly available marketplace data and is not endorsed by or affiliated with Shopify Inc.

Support

Found a bug or need a field added? Open an issue on the actor's Issues tab in the Apify Console and it'll be looked at.

Additional services

Turn on email enrichment to convert store websites into real, mailable contacts — the single biggest lift for outbound campaigns. Pair with payment detection to prioritise stores that already transact online, then sort the export by leadScore to work the strongest leads first.

Explore more scrapers

This actor pairs well with product-level and storefront scrapers for building a full e-commerce dataset — discover the stores here, then drill into their catalogs.

🤖 For AI Agents & LLM Apps

This actor is a clean tool call for agentic workflows — deterministic JSON in, structured leads out.

Shopify Store Leads Scraper (memo23/shopify-store-leads-scraper) discovers Shopify stores on the Shop marketplace and extracts contact leads.
Call via ApifyClient: client.actor("memo23/shopify-store-leads-scraper").call(run_input={"query": "organic coffee", "maxItems": 50, "enrichEmails": true}).
Inputs: query (string keyword), category (string — one of Women, Men, Accessories, Beauty, Home, Electronics, "Luggage & bags", "Toys & games", "Pet supplies", "Fitness & nutrition", "Baby & toddler", "Food & drinks", "Sporting goods", "Arts & crafts"; at least one of query/category required), storeLocation (country code like "US"/"GB" or region "EUROPE"/"NORTH_AMERICA"/"ENGLISH_SPEAKING"/"UK_IRELAND"/"NORDICS"/"OCEANIA"/"GLOBAL"), priceMin (int), priceMax (int), onSale (bool), maxItems (int 1–10000, default 50), enrichEmails (bool — fetch each store's own site for extra emails/phones/socials), detectPayment (bool), minLeadScore (int 0-100 — drop stores scoring below this; omit to keep all), maxConcurrency (int, default 10).
Output per store: id, shopifyId, name, website, myshopifyDomain, shopUrl, email, emails[], phone, phones[], socials{facebook,instagram,pinterest,youtube,tiktok,twitter,linkedin}, address{address1,city,state,country,postalCode,formatted[]}, rating, totalRatings, totalReviews, sampleProduct{title,price,currency,onSale,url}, contacts[{method,target}], emailEnrichment{emails,phones,source,confidence,payment}, leadScore (0-100 lead quality grade, always present), leadScoreSignals[] (which signals earned the score), scrapedAt.
Rank results by leadScore descending to work the best leads first, or pass minLeadScore to have the actor drop weak leads server-side; set enrichEmails=true for meaningful scores, since the email signals are 39 of the 100 points and a Shopify store row tops out at 85 (46 for a store with no email).
Get an API token: https://console.apify.com/account#/integrations

⚠️ Disclaimer

This actor extracts only publicly available information from the Shop by Shopify marketplace and public store websites. It does not access private, gated, or authenticated data, and it is not affiliated with, endorsed by, or sponsored by Shopify Inc. or Shop. Use the data in compliance with the Shopify and Shop terms of service, applicable data-protection laws (including GDPR/CCPA where relevant), and anti-spam regulations (such as CAN-SPAM and GDPR) when contacting the businesses you discover. You are responsible for how you use the exported data.

SEO Keywords

Shopify store scraper, Shopify leads scraper, Shopify store leads, Shopify email scraper, Shopify store finder, Shop app scraper, shop.app scraper, Shopify store directory, ecommerce leads scraper, Shopify merchant list, Shopify store emails, Shopify B2B leads, DTC brand discovery, Shopify prospecting, find Shopify stores by product, Shopify store contacts, Shopify store database, ecommerce email finder, Shopify niche research, Shopify supplier discovery, Shopify lead scoring, scored ecommerce leads, ranked Shopify leads, lead quality score, B2B lead scoring.