Shopify Store B2B Leads Finder avatar

Shopify Store B2B Leads Finder

Pricing

from $2.00 / 1,000 lead scrapeds

Go to Apify Store
Shopify Store B2B Leads Finder

Shopify Store B2B Leads Finder

Find Shopify stores by niche keyword and extract B2B leads: emails, phones, addresses, owner names, social profiles, installed apps, product counts, and theme. Export as JSON, CSV, Excel.

Pricing

from $2.00 / 1,000 lead scrapeds

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Shopify Store B2B Leads Finder

Turn a list of Shopify store domains into qualified B2B leads — emails, phone numbers, addresses, owner names, social profiles, installed apps, product counts, and store metadata.

Paste any list of store domains and get back verified Shopify stores enriched with contact details, 24 detectable apps, estimated catalogue size, wholesale and blog flags, and an auto-classified niche.

ParseBird Shopify Suite   •  Store discovery, lead enrichment, and product catalog tools
 Shopify Store Leads Scraper
Discover stores by keyword
 Shopify Store B2B Leads Finder
➤ You are here
 Shopify Products Scraper
Full product catalog

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Shopify Store B2B Leads Finder (parsebird/shopify-b2b-leads-finder) enriches Shopify store domains into B2B leads. Call via ApifyClient: client.actor("parsebird/shopify-b2b-leads-finder").call(run_input={"inputUrls": ["allbirds.com", "tentree.com"], "includeContactEnrichment": True}). Inputs: inputUrls (array of strings, REQUIRED — bare domains, full URLs, or .myshopify.com subdomains), includeContactEnrichment (bool, default true — visits contact/about pages for email/phone/address/owner), minProductCount (int, optional — drops stores with fewer products), maxStores (int 1-5000, default 100 — caps how many leads are returned), proxyConfiguration (object, default {"useApifyProxy": true}). Output fields per store: url, domain, storeName, contactEmail, phoneNumber, physicalAddress, ownerFounderName, socialLinks (instagram/facebook/twitter/tiktok/pinterest/linkedin/youtube), shopifyTheme, estimatedProductCount, reviewCount, storeNiche, metaDescription, hasBlog, hasWholesale, detectedApps, isShopify, scrapedAt. Every returned store is verified as Shopify; non-Shopify sites are dropped and never charged. Pricing is pay-per-event: $2.90/1,000 leads (Free), $2.70 (Bronze), $2.50 (Silver), $2.00 (Gold). Get API token: https://console.apify.com/account#/integrations

What does Shopify Store B2B Leads Finder do?

Shopify Store B2B Leads Finder turns a list of store domains into a qualified prospect list of Shopify merchants. Give it any set of domains and it confirms which ones actually run on Shopify, then visits each store to pull out the details a B2B seller needs. Every row is a verified Shopify store — non-Shopify sites are detected, reported in the log, and dropped before they reach your dataset.

  • 📋 Bulk enrichment — Feed it a CSV export, a competitor list, or the output of a discovery tool. Up to 5,000 stores per run, deduplicated by domain.
  • Shopify verification — Confirmed through storefront CDN paths, the Shopify JavaScript object, generator meta tags, and analytics signatures. Headless Shopify stores are detected too, not just standard themes.
  • 📧 Contact enrichment — Visits contact and about pages to find emails, phone numbers, postal addresses, and founder names, with placeholder and app-vendor addresses filtered out.
  • 🧩 App detection — Identifies 24 common Shopify apps from page signatures, so you can target stores already paying for tooling.
  • 📱 Social profiles — Instagram, Facebook, Twitter/X, TikTok, Pinterest, LinkedIn, and YouTube handles, with share-widget and Shopify-owned links excluded.
  • 📦 Catalogue size — Estimated product count read from the store's sitemap, which works even on headless storefronts.
  • 🏷️ Niche classification — Auto-sorts stores into 12 categories from the store name and description.
  • 🤝 Wholesale and blog flags — Flags stores running a blog or publishing a wholesale, trade, or stockist page — a strong buying signal for B2B outreach.
  • 🧹 Automatic deduplicationstore.com, www.store.com, and a full product URL all collapse to one lead.

What data can you extract from Shopify stores?

FieldTypeDescription
urlstringStore URL as reached
domainstringNormalized domain, www removed
storeNamestringFrom og:site_name or the page title
contactEmailstringBest merchant email found, role addresses preferred
phoneNumberstringPhone from tel: links or contact page text
physicalAddressstringPostal address from structured data or contact page
ownerFounderNamestringFounder or owner name when the about page states it
socialLinksobjectInstagram, Facebook, Twitter/X, TikTok, Pinterest, LinkedIn, YouTube
shopifyThemestringTheme name as the merchant named it
estimatedProductCountnumberCatalogue size estimated from the sitemap
reviewCountnumberReview count when the store publishes structured rating data
storeNichestringAuto-detected category from 12 niches
metaDescriptionstringStore's SEO meta description
hasBlogbooleanStore runs a Shopify blog
hasWholesalebooleanStore has a wholesale, trade, or stockist page
detectedAppsarrayShopify apps identified in the page source
isShopifybooleanConfirmed Shopify storefront — always true in results
scrapedAtstringISO 8601 timestamp

Input parameters

ParameterTypeRequiredDefaultDescription
inputUrlsarrayYesStore domains or URLs to enrich
includeContactEnrichmentbooleanNotrueVisit contact and about pages for email, phone, address, owner
minProductCountintegerNoDrop stores with fewer products than this
maxStoresintegerNo100Cap on how many verified leads are returned (1–5,000)
proxyConfigurationobjectNo{"useApifyProxy": true}Proxy used for store pages

Input example:

{
"inputUrls": ["https://allbirds.com", "https://tentree.com", "https://meundies.com"],
"includeContactEnrichment": true,
"minProductCount": 5
}

How to find Shopify store leads

  1. Open the Actor — Go to Shopify Store B2B Leads Finder and click Try for free.
  2. Paste your store domains — One per row in Store URLs. Bare domains, full URLs, and .myshopify.com subdomains all work, and duplicates are merged automatically.
  3. Keep contact enrichment on — Leave Visit contact and about pages enabled to collect emails, phones, addresses, and owner names. Turn it off for a faster homepage-only pass.
  4. Filter out hobby stores — Set Minimum product count to something like 20 to skip abandoned and test stores.
  5. Click Start — Each domain is verified as Shopify, then enriched. Leads stream into the dataset as they complete.
  6. Check the log for skips — Non-Shopify sites and stores below your product threshold are listed explicitly, so you know why a domain is missing.
  7. Export — Download as JSON, CSV, Excel, XML, or HTML, or pull results through the Apify API.

Need to find stores in the first place? Run Shopify Store Leads Scraper to discover them by keyword or category, then feed its domains into this actor.

Output example

{
"url": "https://candlebliss.com",
"domain": "candlebliss.com",
"storeName": "Candle Bliss",
"contactEmail": "hello@candlebliss.com",
"phoneNumber": "+1 (512) 847-3920",
"physicalAddress": "4821 Burnet Rd, Austin, TX, 78756",
"ownerFounderName": "Jessica Hartwell",
"socialLinks": {
"instagram": "candlebliss",
"facebook": "candleblissco",
"twitter": null,
"tiktok": "candlebliss",
"pinterest": null,
"linkedin": null,
"youtube": null
},
"shopifyTheme": "Dawn",
"estimatedProductCount": 112,
"reviewCount": null,
"storeNiche": "Home & Garden",
"metaDescription": "Hand-poured soy candles. Free shipping on orders over $50.",
"hasBlog": true,
"hasWholesale": true,
"detectedApps": ["Klaviyo", "Judge.me", "Afterpay"],
"isShopify": true,
"scrapedAt": "2026-08-05T14:29:32.749580+00:00"
}

Download results in JSON, CSV, Excel, XML, or HTML from the Apify dataset.

Detected apps

The actor identifies these Shopify apps from page-source signatures:

Klaviyo · ReCharge · Gorgias · Yotpo · Okendo · LoyaltyLion · Privy · SMSBump · Postscript · Attentive · Tidio · Intercom · Hotjar · Omnisend · Judge.me · Stamped.io · Loox · Afterpay · Klarna · ShipStation · Shogun · PageFly · GemPages · Bold Commerce

Apps only appear in detectedApps when the storefront actually loads their scripts, so an empty array means no signature was present — commonly the case on small stores and headless builds.

Use cases

Shopify agency prospecting — Qualify a list of stores before pitching design, CRO, or development work. Use detectedApps to spot stores already investing in tooling, and shopifyTheme to find those still on a default theme.

App and SaaS sales — Target merchants by the apps they run. Sell a reviews app to stores without Judge.me or Okendo, or a retention tool to stores already paying for Klaviyo.

Wholesale and supplier outreach — Filter on hasWholesale to find merchants who already sell B2B, then contact them through the address and phone number on file.

Competitive research — Profile a set of competitors: catalogue size, apps they pay for, theme, and whether they sell wholesale.

Influencer and partnership sourcing — Use socialLinks to find merchants with an existing audience for co-marketing.

CRM enrichment — Feed a list of known store domains through Store URLs to append emails, apps, catalogue size, and social profiles to records you already hold.

How it works

  1. Normalization and dedupe — Every entry is reduced to a bare domain: schemes, credentials, ports, paths, and query strings are stripped, www is removed, and internationalized domains are converted to punycode. Duplicates collapse before any request is made.
  2. Homepage fetch — Each store is fetched, falling back between the www and non-www host so a storefront that answers on only one still resolves.
  3. Shopify verification — The page is checked for storefront CDN paths, the Shopify JavaScript object, generator meta tags, and analytics signatures. Anything unverified is dropped and never charged.
  4. Sitemap analysis — The sitemap index yields catalogue size, blog presence, and wholesale or stockist pages. This beats scanning the homepage, because many stores run a blog or wholesale page without linking it from the front page.
  5. Contact enrichment — Contact and about pages are visited in turn until an email, phone, address, and owner name are found, stopping early once the record is complete.
  6. Delivery — Verified leads are pushed to the dataset as they complete, so partial results survive an aborted run. Stores are processed five at a time.

How much does it cost to find Shopify store leads?

Pay-per-event pricing — you pay only for verified Shopify leads delivered, never for candidates that fail verification or for compute time.

PlanPrice per leadPrice per 1,000 leads
Free$0.0029$2.90
Bronze$0.0027$2.70
Silver$0.0025$2.50
Gold$0.0020$2.00

Example: 500 verified store leads cost $1.45 on the Free plan and $1.00 on Gold.

New users get a free trial with platform credits, enough to pull your first few hundred leads before paying. See the Pricing tab for current rates.

Programmatic API usage

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run_input = {
"inputUrls": ["allbirds.com", "tentree.com", "deathwishcoffee.com"],
"includeContactEnrichment": True,
"minProductCount": 20,
}
run = client.actor("parsebird/shopify-b2b-leads-finder").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["contactEmail"]:
print(f"{item['storeName']} <{item['contactEmail']}> "
f"{item['storeNiche']}{item['estimatedProductCount']} products "
f"— apps: {', '.join(item['detectedApps']) or 'none'}")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_API_TOKEN>" });
const run = await client.actor("parsebird/shopify-b2b-leads-finder").call({
inputUrls: ["allbirds.com", "tentree.com", "deathwishcoffee.com"],
includeContactEnrichment: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items
.filter((store) => store.hasWholesale && store.contactEmail)
.forEach((store) => {
console.log(`${store.storeName}${store.contactEmail}${store.domain}`);
});

Get your API token at Apify Console → Integrations, and see the Apify API reference for all endpoints.

Use Apify scheduling to refresh lead lists weekly, and connect integrations to push new leads into Google Sheets, Slack, HubSpot, Zapier, Make, or your CRM.

Shopify Store B2B Leads Finder collects publicly available business information that merchants publish on their own storefronts — company names, business contact details, social profiles, and catalogue metadata. It does not log in, bypass authentication, or touch customer data or merchant admin systems.

Business contact data is treated differently from personal data in most jurisdictions, but the distinction is not absolute: a sole trader's email can still be personal data under the GDPR, and B2B outreach is separately governed by anti-spam rules such as CAN-SPAM, CASL, and the ePrivacy Directive. If you email the leads this actor returns, make sure you have a lawful basis, identify yourself, and honour opt-outs.

Review Shopify's terms of service and see Apify's guide on the legality of web scraping for more background.

More ParseBird tools on the Apify Store:

FAQ

Where do I get the store domains to feed in? Any list works — a CSV export, a competitor spreadsheet, a CRM dump, or the output of a discovery tool. Shopify Store Leads Scraper finds Shopify stores by keyword or category, and its domains drop straight into this actor.

Why do some stores return no email? Small stores, especially those still on a default .myshopify.com domain, often publish no contact page at all. Set minProductCount to around 20 to bias toward established stores, which have far better contact coverage. Turning off contact enrichment also removes emails entirely, by design.

What happens to domains that are not Shopify? They are verified, skipped, logged with the reason, and never charged. The end-of-run summary counts how many were dropped as non-Shopify, how many fell below your product threshold, and how many were unreachable.

Are all returned stores really on Shopify? Yes. isShopify is verified from the live page before a store is added, and unverified sites are dropped without being charged. Headless Shopify storefronts — custom frontends backed by Shopify — are detected as well.

Why is ownerFounderName usually empty? It is only filled when an about page states the founder in a recognisable phrasing such as "founded by Jane Doe". Most stores never name a person, so the field stays null rather than guessing.

Why does shopifyTheme show something odd like "Copy of production"? That is the theme name the merchant chose in their admin. Stores routinely duplicate and rename themes, so real values are often messier than catalogue names like "Dawn". The field reports what the store actually publishes.

Is estimatedProductCount exact? It is an estimate. Counts come from the store's product sitemaps; when a store has more sitemap files than the actor samples, the total is extrapolated. For an exact catalogue, run Shopify Products Scraper against the domain.

Can I turn off contact enrichment? Yes. Switch off Visit contact and about pages for a faster run that uses homepage data only. You still get store name, apps, socials, theme, niche, product count, and the blog and wholesale flags.

Do I need a proxy? Apify Proxy is on by default because storefronts often block datacenter traffic. If a specific store still refuses to load, switch the proxy to the Residential group in the Advanced section.

Are duplicates removed? Yes. Leads are deduplicated by normalized domain, so store.com, www.store.com, and a deep product URL all resolve to a single row.

Can I schedule recurring runs? Yes. Use Apify schedules to re-enrich your store list on a cadence and catch newly added apps, wholesale pages, or contact details.

Something looks wrong — where do I report it? Open a report on the actor's Issues tab in Apify Console with the domain you used and the log output. Feedback and feature requests are welcome.