# Shopify Store Leads — Emails, Socials, Apps & Tech Stack (`wleeaf/shopify-store-leads-index`) Actor

Find Shopify stores by niche, country, size and installed apps (Klaviyo, ReCharge, Judge.me, Yotpo…) — with contact emails, Instagram/TikTok/Facebook, theme and catalog stats. Pre-built, refreshed weekly, results in seconds.

- **URL**: https://apify.com/wleeaf/shopify-store-leads-index.md
- **Developed by:** [Taceddin Sancak](https://apify.com/wleeaf) (community)
- **Categories:** Lead generation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 stores

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 — Emails, Socials, Apps & Tech Stack

Find **14,800+ live Shopify stores** by niche, country, catalog size and the apps they run — each with
its public contact email, social profiles, theme, installed apps and catalog stats. The table is pre-built,
so a search returns in seconds: no domain lists, no crawling, no browser.

Built for **Shopify app developers, agencies, email/SMS marketing tools, suppliers and wholesale reps**
who need a targeted list of real, active stores.

### What you get per store

| Field | Example |
|---|---|
| `store_name`, `store_domain`, `myshopify_store` | Glow Botanics · glowbotanics.com · glow-botanics.myshopify.com |
| `country`, `region`, `city`, `currency` | US · California · San Diego · USD |
| `products_count`, `collections_count` | 142 · 18 |
| `price_min`, `price_median`, `price_max` | 9 · 34 · 120 |
| `top_categories`, `top_vendors`, `vendors_count` | \["Serum", "Moisturizer"] · \["Glow Botanics"] · 1 |
| `on_sale_pct`, `in_stock_pct` | 12.5 · 96.0 |
| `newest_product_at`, `last_product_update_at` | when the catalog last changed — filters out abandoned stores |
| `emails`, `phone` | Contact email(s) published on the store's own website |
| `instagram`, `facebook`, `tiktok`, `youtube`, `pinterest`, `twitter`, `linkedin` | Profile URLs linked from the store |
| `apps`, `apps_count` | \["Klaviyo", "Judge.me", "ReCharge"] · 3 |
| `theme`, `theme_store_id` | Dawn · 887 |
| `ships_to_count`, `ships_worldwide` | 42 · false |

**Detected apps and integrations (74)** include Klaviyo, Omnisend, Mailchimp, Attentive, Postscript,
Judge.me, Yotpo, Loox, Okendo, Stamped, ReCharge, Skio, Smile.io, LoyaltyLion, Rebuy, Gorgias, Zendesk,
Tidio, Afterpay, Klarna, Affirm, Sezzle, Route, AfterShip, PageFly, GemPages, Shogun, Weglot, Triple Whale,
Elevar, Meta/TikTok/Pinterest pixels, Google Analytics, Hotjar and Global-e.

### Example searches

Skincare stores in the US that do **not** use Klaviyo (pitch an email tool):

```json
{"keywords": ["skincare", "beauty"], "countries": ["US"], "notUsingApps": ["Klaviyo", "Omnisend"], "hasEmail": true}
```

Subscription-ready stores already on ReCharge or Skio:

```json
{"usesApps": ["ReCharge", "Skio"], "activeWithinDays": 30}
```

Established UK/AU fashion stores with Instagram and TikTok:

```json
{"keywords": ["fashion", "clothing", "apparel"], "countries": ["GB", "AU"], "minProducts": 100, "hasSocials": ["instagram", "tiktok"]}
```

Stores on the free Dawn theme with no reviews app (pitch a theme or reviews app):

```json
{"themes": ["Dawn"], "notUsingApps": ["Judge.me", "Yotpo", "Loox", "Okendo", "Stamped"], "activeWithinDays": 30}
```

### Coverage (current snapshot)

- 14,812 live stores in 112 countries (US 7.9K, UK 1.0K, Canada 980, Australia 630, Japan 590, Germany 500)
- 43% with a contact email, 57% with Instagram, 61% with at least one detected app
- Catalog stats from a full product snapshot taken every 2 days; store signals refreshed weekly

### Pricing

**$4 per 1,000 stores** returned (+ a tiny per-run start fee). Set `maxResults` and your run's spending
limit to control cost.

### How the data is collected

From each store's public storefront: the `/meta.json` store profile, the public product catalog and the
homepage (links, scripts and theme). Nothing behind a login. Stores that block automated access are skipped.

### Data use and privacy

Store details are business information published by the merchants themselves. For stores in the EU/EEA,
UK and Switzerland, only role mailboxes (info@, support@, hello@ …) are included and phone numbers are
omitted. You are responsible for using contact data lawfully — e.g. honour opt-outs and comply with
CAN-SPAM, GDPR and PECR in your outreach. This dataset is independent and not affiliated with or endorsed by
Shopify Inc.

# Actor input Schema

## `keywords` (type: `array`):

Stores whose name, domain, product categories or brands contain any of these words, e.g. skincare, coffee, pet, jewelry. Leave empty for all niches.

## `countries` (type: `array`):

Store's registered country, e.g. US, GB, AU, CA. Leave empty for all.

## `currencies` (type: `array`):

e.g. USD, EUR, GBP.

## `usesApps` (type: `array`):

Only stores where at least one of these apps/integrations is detected (case-insensitive). Detected apps include: Klaviyo, Omnisend, Mailchimp, Attentive, Postscript, Judge.me, Yotpo, Loox, Okendo, Stamped, ReCharge, Skio, Smile.io, LoyaltyLion, Rebuy, Gorgias, Zendesk, Tidio, Afterpay, Klarna, Affirm, Sezzle, Shop Pay Installments, Route, AfterShip, PageFly, GemPages, Shogun, Weglot, Triple Whale, Elevar, Meta Pixel, TikTok Pixel, Google Analytics, Hotjar, Global-e.

## `notUsingApps` (type: `array`):

Exclude stores where any of these is detected — e.g. find stores without Klaviyo or without a reviews app to pitch yours.

## `hasEmail` (type: `boolean`):

Only stores that publish a contact email on their website.

## `hasSocials` (type: `array`):

Only stores linking all of the selected social profiles.

## `minProducts` (type: `integer`):

Minimum number of published products.

## `maxProducts` (type: `integer`):

Maximum number of published products.

## `minMedianPrice` (type: `integer`):

In the store's currency.

## `maxMedianPrice` (type: `integer`):

In the store's currency.

## `themes` (type: `array`):

Theme family, e.g. Dawn, Impulse, Prestige.

## `activeWithinDays` (type: `integer`):

Only stores that updated a product in the last N days (filters out abandoned stores).

## `shipsWorldwideOnly` (type: `boolean`):

Only stores with a rest-of-world shipping zone.

## `maxResults` (type: `integer`):

Maximum number of stores to return. You are charged per store returned.

## Actor input object example

```json
{
  "keywords": [
    "skincare"
  ],
  "countries": [
    "US"
  ],
  "hasEmail": false,
  "shipsWorldwideOnly": false,
  "maxResults": 100
}
```

# Actor output Schema

## `stores` (type: `string`):

Matching stores as a table (store, country, products, contacts, socials, apps).

# 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": [
        "skincare"
    ],
    "countries": [
        "US"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("wleeaf/shopify-store-leads-index").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": ["skincare"],
    "countries": ["US"],
}

# Run the Actor and wait for it to finish
run = client.actor("wleeaf/shopify-store-leads-index").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": [
    "skincare"
  ],
  "countries": [
    "US"
  ]
}' |
apify call wleeaf/shopify-store-leads-index --silent --output-dataset

```

## MCP server setup

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

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/EkQagVw6eRmHEV6db/builds/taGxbfe3MZfzxNHoT/openapi.json
