# Shopify Store Leads Scraper 🛍️ 📧⚡ (`contactminerlabs/shopify-store-leads-scraper`) Actor

🔍 Scrape Shopify Store Leads

Enter your search parameters to discover Shopify stores and collect business contact emails, phone numbers, store names, URLs, social media profiles & business details. Perfect for e-commerce lead generation, merchant outreach, competitor research & CRM enrichment ⚡📊

- **URL**: https://apify.com/contactminerlabs/shopify-store-leads-scraper.md
- **Developed by:** [ContactMinerLabs](https://apify.com/contactminerlabs) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🛍️ Shopify Store Leads – Shopify Stores by Niche with Emails, Apps, Theme, Catalog Size & Prices 📧

**Shopify Store Leads** finds **Shopify stores of any niche** (`candles`, `skincare`, `dog treats`, `streetwear`…) with 6 search engines – or analyses the store urls you give – and delivers **one row per store** with its **emails (checked), phones, Instagram / TikTok / Facebook profiles, country, currency, theme, apps installed (Klaviyo, Judge.me, Gorgias, Recharge…), catalog size, price range, newest products and sales opportunities** ("no reviews app", "no live chat"…).

Perfect for **Shopify app makers and SaaS, Shopify agencies and freelancers, e-commerce marketing agencies (email, SMS, ads, SEO), suppliers, wholesalers and manufacturers, 3PL and fulfillment, payment providers, influencer and UGC agencies, and market research**.

### ✨ Why this Shopify Store Leads actor?

- 🔎 **Find stores by niche** – no list needed: 6 search engines (Google, Bing, DuckDuckGo, Brave, Yahoo, Mojeek) find the Shopify stores of your niche – or paste store urls you already have
- ✅ **Real Shopify stores only** – every store is checked (Shopify storefront); `*.myshopify.com` addresses are followed to the store's own domain; duplicates merged
- 📦 **Store data** – products count, collections, price min / median / max, newest product, products added in the last 30 days, top product types and vendors, countries shipped to
- 🧩 **Tech stack** – theme (Dawn, Impulse, Prestige…) and 40+ apps and tools detected: email & SMS (Klaviyo, Omnisend, Attentive), reviews (Judge.me, Yotpo, Loox, Okendo), support (Gorgias, Tidio, Zendesk), subscriptions (Recharge), loyalty (Smile.io), upsell, page builders, pixels…
- 💡 **Sales opportunities** – what the store is missing: no reviews app, no email marketing, no live chat, no loyalty program, no ads pixel
- 📇 **Contacts** – emails (checked: mail server, disposable, free provider, role address), phones, Instagram, TikTok, Facebook, Pinterest, YouTube, WhatsApp, contact page
- 🌍 **Filters** – store country (`US`, `UK`, `Germany`…), minimum number of products
- 🆕 **Only new stores** – for scheduled runs: stores delivered before are skipped, you only pay for new leads
- 🤝 **Polite & clean** – only public storefront data (`/meta.json`, `/products.json`, public pages); robots.txt of every store respected; no login, no checkout, no customer data
- 📤 **Export anywhere** – JSON, CSV, Excel, XML, HTML, API, Zapier, Make, n8n, Google Sheets, HubSpot

### 🔍 What does it extract?

| Field | Description |
| --- | --- |
| `storeName` / `website` / `domain` / `myshopifyDomain` | Store identity |
| `country` / `city` / `province` / `currency` / `language` | Where the store is and sells |
| `theme` / `themeVersion` | Shopify theme |
| `productsCount` / `collectionsCount` | Catalog size |
| `priceMin` / `priceMedian` / `priceMax` | Prices of the catalog (store currency) |
| `newestProductAt` / `productsAddedLast30Days` / `lastUpdatedAt` | Catalog activity |
| `topProductTypes` / `topVendors` / `sampleProducts` | What the store sells |
| `shipsToCountries` | Number of countries shipped to |
| `apps` / `appCategories` | Apps and tools installed |
| `opportunities` | What the store is missing (sales angles) |
| `primaryEmail` / `emails` / `emailDetails` | Emails with their check (`emailStatus`, role, free provider, page) |
| `phones` | Phone numbers |
| `instagram` `tiktok` `facebook` `pinterest` `youtube` `x` `linkedin` `whatsapp` | Social profiles |
| `contactPageUrl` / `address` / `description` | From the store pages |
| `keyword` | Niche that found the store |
| `scrapedAt` | Date and time of extraction |

### 🛠 How to find Shopify stores (4 steps)

1. **Add one or more niches** with **+ Add** – `candles`, `skincare`, `pet supplies`, `coffee beans uk` (or paste **store urls**)
2. Optionally set **countries** (`US`, `UK`, `Germany`) and a **minimum number of products**
3. **Set the maximum number of stores**
4. Click **Start**

Download your list in **JSON, CSV, Excel, XML or HTML**, or send it to your CRM. Two views: **Stores** and **Email details**.

### 💡 Tips

🔹 **Shopify app makers**: use `opportunities` – e.g. stores with "no reviews app" for a reviews app, "no loyalty program" for a loyalty app
🔹 **Agencies**: target stores with an active catalog (`productsAddedLast30Days` > 0) and a minimum of products (e.g. 50) – real businesses investing in their store
🔹 **Suppliers & wholesalers**: niche + country (`organic skincare` + `US`) and read `topVendors` and `priceMedian`
🔹 **Be specific**: `soy candles`, `vegan leather bags`, `matcha`, `kids clothing` give more stores than generic words
🔹 **Weekly pipeline**: schedule the actor with **Only new stores**
🔹 **Already have a list?** Paste it in **Store urls**: each store is checked and enriched

### 🎯 Use cases

🧩 **Shopify apps & SaaS** – find stores without your category of app, or using a competitor
🚀 **Agencies & freelancers** – Shopify development, CRO, email & SMS, ads, SEO
🏭 **Suppliers, wholesalers & manufacturers** – find retailers of your niche
📦 **3PL, fulfillment & packaging** – growing stores with active catalogs
📣 **Influencer & UGC agencies** – DTC brands with Instagram and TikTok
📊 **Market research** – catalog sizes, prices, themes and apps of a niche

### 📥 Input

Input example:

```
{
  "KEYWORDS": ["candles", "skincare"],
  "STORE_URLS": [],
  "COUNTRIES": ["US", "UK"],
  "MIN_PRODUCTS": 20,
  "MAX_STORES": 100,
  "ONLY_WITH_CONTACTS": true,
  "MAX_PAGES_PER_SITE": 4,
  "VERIFY_EMAILS": true,
  "ONLY_NEW": false
}
```

| Field | Type | Description |
| --- | --- | --- |
| `KEYWORDS` | string\[] | 🔍 Niches or products (stores found with 6 search engines) |
| `STORE_URLS` | string\[] | 🏪 Optional Shopify stores to analyse |
| `COUNTRIES` | string\[] | 🌍 Optional store countries (codes or names) |
| `MIN_PRODUCTS` | integer | 📦 Minimum number of products (0 = no minimum) |
| `MAX_STORES` | integer | 🔢 Number of stores to deliver |
| `ONLY_WITH_CONTACTS` | boolean | 📇 Only stores with an email or a phone (default on) |
| `MAX_PAGES_PER_SITE` | integer | 📄 Pages read per store for contacts (1–10, default 4) |
| `VERIFY_EMAILS` | boolean | ✅ Check every email |
| `ONLY_NEW` | boolean | 🆕 Skip the stores delivered by your previous runs |

### 🧾 Output example

```
{
  "storeName": "Example Candle Co",
  "website": "https://examplecandles.com/",
  "domain": "examplecandles.com",
  "myshopifyDomain": "example-candles.myshopify.com",
  "country": "GB",
  "city": "London",
  "currency": "GBP",
  "language": "en",
  "theme": "Dawn",
  "themeVersion": "15.0.0",
  "productsCount": 312,
  "collectionsCount": 9,
  "priceMin": 10,
  "priceMedian": 24,
  "priceMax": 89,
  "newestProductAt": "2026-10-27T09:00:00.000Z",
  "productsAddedLast30Days": 12,
  "topProductTypes": ["Candles", "Gift Sets"],
  "topVendors": ["Example Candle Co"],
  "sampleProducts": ["Lavender Soy Candle", "Amber Reed Diffuser", "Gift Set Trio"],
  "apps": ["Klaviyo", "Judge.me", "Meta Pixel"],
  "appCategories": ["email & SMS", "reviews", "ads"],
  "opportunities": ["no live chat / helpdesk", "no loyalty program", "active catalog (new products this month)"],
  "primaryEmail": "hello@examplecandles.com",
  "emails": ["hello@examplecandles.com"],
  "phones": ["+442071234567"],
  "instagram": "https://www.instagram.com/examplecandles",
  "tiktok": "https://www.tiktok.com/@examplecandles",
  "contactPageUrl": "https://examplecandles.com/pages/contact",
  "keyword": "candles",
  "scrapedAt": "2026-10-29T08:30:12.213Z"
}
```

### ❓ FAQ

**Where does the data come from?**
Only from what every Shopify store publishes publicly: its storefront pages, its public `/meta.json` and `/products.json`, and its contact and about pages. No login, no checkout, no customer data. Emails are never guessed or generated.

**How are the stores found?**
With 6 search engines, using queries such as `<niche> "powered by shopify"` and `<niche> site:myshopify.com`. Each result is checked: only real Shopify stores are delivered. You can also paste your own store urls.

**Why is `productsCount` empty for some stores?**
Some stores disable their public catalog, or their robots.txt does not allow it: the actor then does not read it (robots.txt is always respected).

**Why fewer stores than requested?**
Few stores matched the niche or the filters. Use more niches, fewer filters, or untick "Only stores with contacts". The `SUMMARY` record of the run gives why stores were skipped.

**Is it legal?**
The actor only collects public storefront information and business contacts that stores publish themselves, and respects robots.txt. You are responsible for using the data in compliance with anti-spam and privacy laws (GDPR, CAN-SPAM, CASL…): send relevant, professional messages, identify yourself and always include an unsubscribe option.

**Can I schedule it?**
Yes – schedule it weekly with **Only new stores** to receive the new stores of your niches automatically in Google Sheets, a CRM or a webhook.

### 💰 Pricing

Simple pay-per-result model: you only pay for the stores delivered – one row per store, with all its data and contacts.

**Price: $4.99 per 1,000 Shopify stores** 💵

### ⚠️ Disclaimer

This tool is **not affiliated with, endorsed by, or sponsored by Shopify or by any of the stores, apps or brands listed** (Klaviyo, Judge.me, Gorgias, Recharge…). Data comes from publicly available pages.

### 🔗 Related actors

- [Instagram Email Scraper – Advanced, Cheapest & Reliable 📧⚡📷](https://apify.com/contactminerlabs/instagram-email-scraper---advanced-cheapest-reliable)
- [Facebook Email Scraper – Advanced, Cheapest & Reliable 📧⚡📷](https://apify.com/contactminerlabs/facebook-email-scraper---advanced-cheapest-reliable)
- [Twitter Email Scraper – Advanced, Cheapest & Reliable 📧⚡📷](https://apify.com/contactminerlabs/twitter-email-scraper---advanced-cheapest-reliable)
- [Discord Email Scraper – Advanced, Cheapest & Reliable 📧⚡📷](https://apify.com/contactminerlabs/discord-email-scraper---advanced-cheapest-reliable)
- [LinkedIn Email Scraper – Advanced, Cheapest & Reliable 📧⚡📷](https://apify.com/contactminerlabs/linkedin-email-scraper---advanced-cheapest-reliable)
- [Substack Email Scraper – Advanced, Cheapest & Reliable 📧⚡](https://apify.com/contactminerlabs/substack-email-scraper---advanced-cheapest-reliable)

### 📫 Support

😊 Leave us a ⭐⭐⭐⭐⭐ review if you like Shopify Store Leads!
🌍 Questions, custom needs or issues? Contact us through Apify or via [ContactMinerLabs 🌩️](https://apify.com/contactminerlabs).

# Actor input Schema

## `KEYWORDS` (type: `array`):

What the stores sell: "candles", "skincare", "dog treats", "streetwear", "coffee beans uk"... One per line (click "+ Add"). The stores are found with 6 search engines.

## `STORE_URLS` (type: `array`):

Shopify stores you already know (domain or url): they are analysed too. Leave empty to only find stores by niche.

## `COUNTRIES` (type: `array`):

Keep only stores based in these countries: codes ("US", "GB", "DE") or names ("United States", "UK", "Germany"). Empty = every country.

## `MIN_PRODUCTS` (type: `integer`):

Keep only stores with at least this many products (0 = no minimum). Use it to skip tiny or test stores.

## `MAX_STORES` (type: `integer`):

Number of Shopify stores to deliver (one row per store). The run stops automatically once this number is reached.

## `ONLY_WITH_CONTACTS` (type: `boolean`):

Deliver only the stores with at least one email or phone (recommended). Untick to also get stores without public contact (store data only).

## `MAX_PAGES_PER_SITE` (type: `integer`):

Pages read on each store to find its contacts: home page, /pages/contact, about page...

## `VERIFY_EMAILS` (type: `boolean`):

Checks every email: syntax, the domain receives emails (mail server / MX records), disposable inbox, free provider, role address. No email is ever sent.

## `ONLY_NEW` (type: `boolean`):

For scheduled runs: stores delivered by your previous runs of this actor are skipped, so each run only brings (and charges) NEW stores.

## Actor input object example

```json
{
  "KEYWORDS": [
    "candles",
    "skincare"
  ],
  "MIN_PRODUCTS": 0,
  "MAX_STORES": 50,
  "ONLY_WITH_CONTACTS": true,
  "MAX_PAGES_PER_SITE": 4,
  "VERIFY_EMAILS": true,
  "ONLY_NEW": false
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `emails` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "KEYWORDS": [
        "candles",
        "skincare"
    ],
    "MIN_PRODUCTS": 0,
    "MAX_STORES": 50,
    "MAX_PAGES_PER_SITE": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("contactminerlabs/shopify-store-leads-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "KEYWORDS": [
        "candles",
        "skincare",
    ],
    "MIN_PRODUCTS": 0,
    "MAX_STORES": 50,
    "MAX_PAGES_PER_SITE": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("contactminerlabs/shopify-store-leads-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "KEYWORDS": [
    "candles",
    "skincare"
  ],
  "MIN_PRODUCTS": 0,
  "MAX_STORES": 50,
  "MAX_PAGES_PER_SITE": 4
}' |
apify call contactminerlabs/shopify-store-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,contactminerlabs/shopify-store-leads-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/604tlRJvvbpCIo4gW/builds/uk2YTAAE111QFmrzX/openapi.json
