Store Leads Scraper: Shopify and WooCommerce | $1/1K
Pricing
from $1.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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.
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?
| Stores | This actor | Most 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.jsonor 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
- Open the actor, paste domains (one per line) into Store domains, press Start.
- Or paste this input:
{ "domains": ["allbirds.com", "gymshark.com", "nutribullet.com"], "maxItems": 10 }
- 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 ApifyClientclient = 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
| Field | Type | Default | What it does |
|---|---|---|---|
domains | list of text | none | Store domains or any store address, one per line. |
discoverFrom | text | none | commoncrawl 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. |
discoverHostsMax | number | 100 | How many addresses to take from Common Crawl (10 to 5,000). |
platform | text | any | shopify, woocommerce or any. |
includeOtherSites | true or false | false | Return a row for sites that are neither Shopify nor WooCommerce (contacts, socials, tech). Off by default, so they cost nothing. |
skipPasswordProtected | true or false | true | Leave out Shopify stores that show the password page. |
countryCodes | list | none | Two letter codes such as US, GB, IN. Needs a published store country. |
minProducts, maxProducts | number | 0 | Product count range. 0 means no limit. |
requireEmail, requirePhone | true or false | false | Keep only stores where an email or phone number was found. |
usesAnyApp | list | none | App or theme names such as Klaviyo, Yotpo, Recharge. Matched as text. |
productPages | number | 1 | Pages 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. |
contactPages | number | 2 | Contact 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. |
maxItems | number | 100 | Total 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?
| Field | Meaning |
|---|---|
domain, inputDomain, url | Canonical domain, the domain as you gave it, and the home page address after redirects. |
platform, platformEvidence | shopify, woocommerce or other, and how it was recognised (meta.json, store-api or page). |
storeName, description, title, language | Name, description and title the store publishes. |
country, region, city, postalCode, addressText, currency | Store location and currency. Shopify publishes country, region and city; a street address appears only where the site marks it up. |
shopifyStoreId, myshopifyDomain, shipsToCountries, shipsToCountryCount | Shopify store ID (a stable join key), myshopify address and shipping countries. |
themeName, themeSchemaName, themeVersion, themeStoreId | The live Shopify theme. |
passwordProtected, storeApiAvailable | Shopify password page seen; WooCommerce Store API answered or closed. |
productCount, collectionCount, categoryCount | Published products (exact), collections (Shopify), categories seen (WooCommerce). |
productsSampled, priceMin, priceMedian, priceAverage, priceMax | Prices over the products read, in the store currency. Each product counts at its lowest variant price; priceMax is the highest variant price. |
onSaleShare, availableShare | Share of sampled products on sale and in stock (0 to 1). |
vendorCount, topVendors, productTypeCount, topProductTypes, topCategories | Vendors, product types and categories with counts. |
firstProductCreatedAt, lastProductUpdatedAt, lastProductPublishedAt | Product dates in the sample (ISO 8601). A recent update date shows an active store. |
emails, emailCount, phones, phonesE164, contactPageUrl | Contacts shown on the pages read. |
facebookUrl, instagramUrl, twitterUrl, linkedinUrl, youtubeUrl, tiktokUrl, pinterestUrl, whatsappUrl | Social links found on the pages read. |
detectedApps, hasBlog | Apps and services seen in the home page; whether it links to a blog. |
robotsAllowsProductsJson, robotsOverriddenPaths | What the store's robots.txt says about the product feed, and any disallowed path that was read anyway. |
metaUrl, productsUrl, pagesRead, requests, checkedAt, discoveredVia | Where 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.jsonand 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, andproductsSampledsays 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 havestoreApiAvailablefalse 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 inrobotsOverriddenPaths. 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
- Amazon Reviews Scraper: Public reviews for any Amazon product.
- AliExpress Product Scraper: Products with prices, orders sold and ratings.
- Etsy Scraper: Listings with prices, shops and badges.
- Carsales Scraper: Australian car listings with prices and specs.
- Open Food Facts Scraper: Food products with nutrition and labels.
- Kleinanzeigen Scraper: Classified ads from kleinanzeigen.de.
- VIN Decoder: Make, model, year and specs from a VIN.
- Alibaba Scraper: Alibaba.com product listings with verified supplier details, prices and minimum orders.
- 1688 Wholesale Scraper: Wholesale product listings and supplier details from 1688.com.
Changelog
- 29 October 2026: clearer description and headings, field details for AI tools. Price and output unchanged.
- October 2026: first release.