Store Leads Scraper: Shopify and WooCommerce | $1/1K avatar

Store Leads Scraper: Shopify and WooCommerce | $1/1K

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Store Leads Scraper: Shopify and WooCommerce | $1/1K

Store Leads Scraper: Shopify and WooCommerce | $1/1K

Store name, platform, product count, prices, contacts and social links for Shopify and WooCommerce sites from a domain list. $1 per 1,000 results, platform usage included.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

One Dollar Store

One Dollar Store

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Store Leads Scraper: Shopify and WooCommerce store facts, contacts and socials from a domain list

$1 per 1,000 stores. Platform usage included. No rental, no minimum.

The four most used Shopify store leads actors on Apify Store charge $3.50 to $5.99 per 1,000 stores (Store prices checked 29 October 2026). This actor costs $1. Most of those actors find stores for you; this one reads the stores you bring, so the price gap is for the enrichment step: platform, catalogue size, prices, contacts, socials and apps in one wide row per store.

Open it in Apify Console

New to Apify? [Create a free account](https://www.apify.com?fpr=ymnoit) (referral link). Runs from a free plan account return the first 10 results; any paid plan returns everything you ask for, up to your limit.

How much does Store Leads Scraper cost?

StoresThis actorMost used Shopify store leads actors on the Store
1,000$1.00$3.50 to $5.99
10,000$10.00$35 to $59.90
100,000$100.00$350 to $599

Plus $0.001 per run. You pay only for stores that return a row: a domain that is not a store, is unreachable or shows a bot check page costs nothing. A weekly run over 2,000 store domains costs about $2.00 a run, or about $8 a month.

What you get

Give it a list of domains. For each one the actor finds out whether the site is a Shopify store, a WooCommerce store or neither, then reads what the store itself publishes:

  • Store record. Name, canonical domain, myshopify domain, country, city, currency, shipping countries, Shopify store ID and theme (Shopify), site name and plugins (WooCommerce).
  • Catalogue. Product count, collection count, price minimum, median, average and maximum, share of products on sale and in stock, vendors and product types with counts, first and latest product dates.
  • Contacts. Emails and phone numbers shown on the home page and a contact or about page, with the contact page address.
  • Social profiles. Instagram, Facebook, X, LinkedIn, YouTube, TikTok, Pinterest and WhatsApp links.
  • Apps and tech. Review, email, SMS, chat, payment, analytics and ad apps seen in the page.
  • Checks. Password protected stores, whether the store's robots.txt allows its product feed, which pages were read.

A row has up to 66 fields, and Shopify stores typically fill 40 to 55 of them. Fields a store does not publish are left out, never invented.

Why use it

  • Wide rows from public store data. The numbers come from the store's own /meta.json, /products.json or public Store API, so product counts are exact for Shopify and prices are the store's current prices.
  • You pay for results only. Non-stores, dead domains and bot check pages are skipped and listed in the run summary.
  • Filters that build a lead list. Platform, country, product count range, only stores with an email or phone, only stores that use a named app such as Klaviyo or Recharge.
  • Honest scope. It does not search for stores by niche. An optional Common Crawl mode adds a random sample of small Shopify stores. See Limits.

How to use Store Leads Scraper

  1. Open the actor, paste domains (one per line) into Store domains, press Start.
  2. Or paste this input:
{ "domains": ["allbirds.com", "gymshark.com", "nutribullet.com"], "maxItems": 10 }
  1. Download the results as JSON, CSV or Excel, or read them through the API.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~shopify-woocommerce-store-leads/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains": ["allbirds.com", "gymshark.com"], "maxItems": 10}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/shopify-woocommerce-store-leads").call(
run_input={"domains": ["allbirds.com", "gymshark.com"], "countryCodes": ["US"], "maxItems": 10}
)
for store in client.dataset(run["defaultDatasetId"]).iterate_items():
print(store["domain"], store["platform"], store.get("productCount"), store.get("emails"))

Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

https://mcp.apify.com?tools=one_dollar_store/shopify-woocommerce-store-leads

Then ask, for example: "Check these 40 domains and give me the Shopify stores in Canada with an email address and more than 100 products."

Switching from another store leads actor

Most store leads actors take a keyword or a country and return stores they found. Here the input is domains (a list you bring, from a CRM, an event list or a Google Maps run) and maxItems. The core output fields are domain, platform, storeName, country, productCount, emails, phones and the social links. If you need stores found by niche, use another actor for the finding and this one for the facts.

Input

FieldTypeDefaultWhat it does
domainslist of textnoneStore domains or any store address, one per line.
discoverFromtextnonecommoncrawl adds a random sample of Shopify store addresses (hosts that end in .myshopify.com) from the Common Crawl index. It does not search by niche.
discoverHostsMaxnumber100How many addresses to take from Common Crawl (10 to 5,000).
platformtextanyshopify, woocommerce or any.
includeOtherSitestrue or falsefalseReturn a row for sites that are neither Shopify nor WooCommerce (contacts, socials, tech). Off by default, so they cost nothing.
skipPasswordProtectedtrue or falsetrueLeave out Shopify stores that show the password page.
countryCodeslistnoneTwo letter codes such as US, GB, IN. Needs a published store country.
minProducts, maxProductsnumber0Product count range. 0 means no limit.
requireEmail, requirePhonetrue or falsefalseKeep only stores where an email or phone number was found.
usesAnyApplistnoneApp or theme names such as Klaviyo, Yotpo, Recharge. Matched as text.
productPagesnumber1Pages of the product feed to read: 250 products a page on Shopify, 100 on WooCommerce (0 to 6). 0 reads only the store record and the product count.
contactPagesnumber2Contact or about pages to read besides the home page (0 to 3). They are read only when the home page did not already give an email and a phone number.
maxItemsnumber100Total stores for the run (10 to 100,000).

Example for a lead list of Canadian Shopify stores that use Klaviyo:

{
"domains": ["store-one.ca", "store-two.ca", "store-three.ca"],
"platform": "shopify",
"countryCodes": ["CA"],
"usesAnyApp": ["Klaviyo"],
"requireEmail": true,
"maxItems": 1000
}

What data does Store Leads Scraper return?

FieldMeaning
domain, inputDomain, urlCanonical domain, the domain as you gave it, and the home page address after redirects.
platform, platformEvidenceshopify, woocommerce or other, and how it was recognised (meta.json, store-api or page).
storeName, description, title, languageName, description and title the store publishes.
country, region, city, postalCode, addressText, currencyStore location and currency. Shopify publishes country, region and city; a street address appears only where the site marks it up.
shopifyStoreId, myshopifyDomain, shipsToCountries, shipsToCountryCountShopify store ID (a stable join key), myshopify address and shipping countries.
themeName, themeSchemaName, themeVersion, themeStoreIdThe live Shopify theme.
passwordProtected, storeApiAvailableShopify password page seen; WooCommerce Store API answered or closed.
productCount, collectionCount, categoryCountPublished products (exact), collections (Shopify), categories seen (WooCommerce).
productsSampled, priceMin, priceMedian, priceAverage, priceMaxPrices over the products read, in the store currency. Each product counts at its lowest variant price; priceMax is the highest variant price.
onSaleShare, availableShareShare of sampled products on sale and in stock (0 to 1).
vendorCount, topVendors, productTypeCount, topProductTypes, topCategoriesVendors, product types and categories with counts.
firstProductCreatedAt, lastProductUpdatedAt, lastProductPublishedAtProduct dates in the sample (ISO 8601). A recent update date shows an active store.
emails, emailCount, phones, phonesE164, contactPageUrlContacts shown on the pages read.
facebookUrl, instagramUrl, twitterUrl, linkedinUrl, youtubeUrl, tiktokUrl, pinterestUrl, whatsappUrlSocial links found on the pages read.
detectedApps, hasBlogApps and services seen in the home page; whether it links to a blog.
robotsAllowsProductsJson, robotsOverriddenPathsWhat the store's robots.txt says about the product feed, and any disallowed path that was read anyway.
metaUrl, productsUrl, pagesRead, requests, checkedAt, discoveredViaWhere the data came from and when.

Sample results

Real rows from test runs on 27 October 2026 (shortened: some fields and list items are cut). The third row came from the Common Crawl option.

[
{"domain": "allbirds.com", "platform": "shopify", "platformEvidence": "meta.json", "storeName": "Allbirds", "country": "US", "region": "California", "city": "Beverly Hills", "currency": "USD", "myshopifyDomain": "weareallbirds.myshopify.com", "themeName": "DNAM Theme July 2026", "productCount": 357, "collectionCount": 1346, "productsSampled": 250, "priceMin": 0.8, "priceMedian": 110, "priceMax": 165, "onSaleShare": 0.076, "availableShare": 0.992, "vendorCount": 2, "topVendors": [{"name": "Allbirds", "count": 249}], "lastProductUpdatedAt": "2026-10-27T12:01:14.000Z", "emails": ["help@allbirds.com"], "phones": ["+1 424 363 8064"], "detectedApps": ["Google Tag Manager", "Microsoft Clarity", "Shop Pay"], "robotsAllowsProductsJson": true, "checkedAt": "2026-10-27T12:01:14.542Z"},
{"domain": "nutribullet.com", "platform": "woocommerce", "platformEvidence": "page", "storeName": "nutribullet", "currency": "USD", "productCount": 182, "categoryCount": 9, "productsSampled": 100, "priceMin": 5.99, "priceMedian": 24.99, "priceMax": 224.99, "onSaleShare": 0.02, "availableShare": 0.94, "topCategories": [{"name": "Accessories", "count": 43}, {"name": "Warranty", "count": 32}], "phones": ["+1 800 523 5993"], "contactPageUrl": "https://www.nutribullet.com/contact-us/", "instagramUrl": "https://www.instagram.com/nutribullet", "facebookUrl": "https://www.facebook.com/nutribullet", "tiktokUrl": "https://www.tiktok.com/@nutribullet", "detectedApps": ["Facebook Pixel", "Google Ads", "Google Tag", "Google Tag Manager"], "robotsAllowsProductsJson": true, "checkedAt": "2026-10-27T12:01:20.748Z"},
{"domain": "jcthejeweler.com", "platform": "shopify", "platformEvidence": "meta.json", "storeName": "J.C.’s Jewelry & Repair", "country": "US", "region": "Illinois", "city": "O'Fallon", "currency": "USD", "myshopifyDomain": "jcthejeweler.myshopify.com", "themeName": "jcs-jewelry-website/development", "productCount": 4, "collectionCount": 0, "productsSampled": 4, "onSaleShare": 0, "availableShare": 0.25, "vendorCount": 1, "topVendors": [{"name": "J.C.’s Jewelry & Repair", "count": 4}], "lastProductUpdatedAt": "2026-10-27T12:10:48.000Z", "emails": ["jaime@jcthejeweler.com"], "phones": ["+1 618 624 3900", "+1 314 839 8100", "+1 618 530 5122"], "instagramUrl": "https://www.instagram.com/jcthejeweler", "facebookUrl": "https://www.facebook.com/jcthejeweler", "detectedApps": ["Shop Pay"], "robotsAllowsProductsJson": true, "checkedAt": "2026-10-27T12:10:50.370Z"}
]

Limits

  • No search by niche. The actor reads the domains you give it. The optional Common Crawl mode adds a random sample of Shopify store addresses (hosts ending in .myshopify.com) and then reads them like any other domain. It is not a search for a product or a country. The Common Crawl index server is sometimes slow or answers with errors; the actor skips a page that fails, stops asking after six failures in a row, and carries on with your own domains. If you gave no domains and Common Crawl does not answer, the run fails with a message.
  • Shopify numbers. Product count and collection count come from the store's own /meta.json and are exact. Prices, vendors, product types and dates are read from the first pages of /products.json (250 products a page, up to 6 pages), so for a big store they describe that sample, and productsSampled says how many products it was. Stores can hide products from the feed or run prices per market.
  • WooCommerce. Product data needs the public Store API (/wp-json/wc/store/v1/products). Many stores leave it open; some close it or return nothing. Those rows have storeApiAvailable false and no price or catalogue fields.
  • Bot checks. If a site shows a bot check page (a "Just a moment" page, a security checkpoint, a captcha), the actor stops for that site, does not try to get past it, and does not charge for it. After three refusals in a row from one site it stops asking that site.
  • robots.txt. The actor reads every store's robots.txt first. Where a path it needs is disallowed (for example /products.json), it still reads that public path, one request at a time and no faster than one request a second, and lists the path in robotsOverriddenPaths. See the answer to "Is it legal?" below.
  • Contacts. Emails and phone numbers are what the store shows on the home page and a contact or about page. They are not verified, and many stores show a contact form only. No mobile numbers are looked up. When a store has addresses on its own domain, addresses of other companies are left out.
  • Speed and size. The actor makes about 5 to 8 requests per store, one at a time per store, and reads up to 12 stores at once from Apify's own addresses, with no proxy. A test run over 1,746 small Shopify stores returned 1,424 rows in 739 seconds on 1 GB of memory, about 2 stores a second; 322 of the 1,746 gave no row because they were password protected, paused or gone. Some sites refuse Apify's addresses; they are skipped.
  • Free plan. A run started from a free plan account returns the first 10 results.

FAQ

What is the cheapest Shopify store leads scraper on Apify? The four most used ones charge $3.50 to $5.99 per 1,000 stores (checked 29 October 2026). This one charges $1 per 1,000 stores with platform usage included. It reads domains you bring rather than searching for stores, so compare what you need.

How much does it cost to check 10,000 stores? $10.00 plus $0.001 for the run, if every domain returns a row. Domains that return no row cost nothing.

Do I pay for compute or proxy on top? No. The price per result includes platform usage, and the actor uses no proxy.

Can it find stores for me? Only as a random sample: turn on Common Crawl discovery. For a store list by niche, build the domain list elsewhere (a Google Maps run, an event list, your CRM) and give it to this actor.

How do I know a domain is a Shopify store? The actor tries the store's /meta.json, which only Shopify stores publish, and also looks for Shopify markers in the home page. platformEvidence tells you which one decided.

Does it work on headless Shopify stores? Often, when /meta.json still answers. Some headless stores close it; they are then recognised only by markers in the page, with fewer fields.

Is it legal? The actor collects only public data that a store shows to any visitor: its own public product feed, store record and pages. You are responsible for how you use it: follow each store's terms of use and the data protection and marketing laws that apply to you, such as GDPR and ePrivacy, especially for emails and phone numbers of people. Some stores' robots.txt files ask automated clients not to read certain paths, such as the product feed. The actor reads those public paths anyway, at no more than one request a second per store and one request at a time, and tells you which paths in robotsOverriddenPaths; you decide for yourself how to use the data. The Common Crawl option takes host names only, in line with Common Crawl's terms, which bar collecting personal information from it for separate use.

Is this an official Shopify or WooCommerce product? No. It is an independent tool and is not affiliated with or endorsed by Shopify or WooCommerce.

Do I need an Apify account? Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can sign up here. This is a referral link and it costs you nothing.

Is there a limit on the free plan? Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

Feedback and support

Found a problem or want a field added? Open an issue on the Issues tab of this actor and it gets read. If the actor saved you time, an honest rating on the Reviews tab helps other people find it.

More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

Shopping

Changelog

  • 29 October 2026: clearer description and headings, field details for AI tools. Price and output unchanged.
  • October 2026: first release.