# Shopify Store Finder & Scraper - Find Shopify Stores by App (`storeinspect/shopify-store-finder`) Actor

Find Shopify stores by the apps they use or don't use, country, category and traffic. Also a Shopify store analyzer: paste store URLs to get theme, apps, pixels and tech stack. A Shopify store scraper backed by a Shopify store database of 1M+ stores. No API key. Pay per store.

- **URL**: https://apify.com/storeinspect/shopify-store-finder.md
- **Developed by:** [StoreInspect](https://apify.com/storeinspect) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 3 total users, 2 monthly users, 98.1% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 store founds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

### What does Shopify Store Finder do?

**Shopify Store Finder** is a Shopify store scraper that lets you **find Shopify stores by what they run**. Choose the apps a store uses (or does not use), a country, a category and a traffic band, and get one clean row per store: domain, name, theme, apps, pixels, traffic and revenue tier, and Shopify Plus signals. Or paste store URLs and get the same row for each one.

Rows come from StoreInspect's **Shopify store database of over 1 million stores**, so a run finishes in seconds. There is no scraping wait, no proxy bill, no API key and no account to create. To try it, keep the default input and click **Start**.

#### Who uses a Shopify store finder?

- **Shopify app teams:** find stores that use a competitor's app, or stores that have no app in your category yet.
- **Agencies and freelancers:** build a Shopify store list for one country and category, with enough traffic to be worth a pitch.
- **Market research:** see which apps, pixels and themes stores in a niche run.
- **Enrichment:** turn a list of store domains into theme, app and traffic columns for a CRM, Clay or n8n.

### What Shopify store data can you get?

One row per store. Example (illustrative values):

```json
{
    "domain": "example-store.com",
    "name": "Example Store",
    "category": "Beauty",
    "country": "US",
    "traffic_tier": "50K-200K",
    "revenue_tier": "$500K-$2M",
    "shopify_plus": false,
    "lead_fit_score": 72,
    "apps": ["Klaviyo", "Judge.me", "Recharge"],
    "apps_count": 3,
    "pixels": ["Meta Pixel", "TikTok Pixel"],
    "theme_name": "Dawn",
    "theme_type": "free",
    "theme_version": "15.0.0",
    "theme_outdated": true,
    "ships_to_countries": ["US", "CA"],
    "store_created_at": "2021-03-01T00:00:00.000Z",
    "first_seen_at": "2026-02-11T09:14:00.000Z",
    "contacts_available": 2,
    "retrieved_at": "2026-10-12T10:00:00.000Z"
}
```

| Data          | Fields                                                                   |
| ------------- | ------------------------------------------------------------------------ |
| Store         | `domain`, `name`, `category`, `country`                                  |
| Size          | `traffic_tier`, `revenue_tier`, `shopify_plus`, `lead_fit_score`         |
| Tech stack    | `apps`, `apps_count`, `pixels`                                           |
| Theme         | `theme_name`, `theme_type`, `theme_version`, `theme_outdated`            |
| Other signals | `ios_app_url`, `ships_to_countries`, `store_created_at`, `first_seen_at` |

A field is left out when StoreInspect has no value for it. Traffic and revenue tiers are estimates shown as bands, not exact numbers. Apps, pixels, theme and Shopify Plus are detection signals from the public storefront. Export the dataset as JSON, CSV or Excel.

### How to find Shopify stores by app, country and traffic

1. Open the Actor and fill in the filters you need. Empty filters add no restriction.
2. Set **Maximum stores** (up to 1,000 per run).
3. Click **Start**, then open the **Dataset** tab.

#### Find Shopify stores using a specific app

Stores in the US that use Klaviyo:

```json
{
    "countries": ["US"],
    "apps": ["Klaviyo"],
    "max_results": 100
}
```

Set `apps_match` to `all` to require every listed app.

#### Find Shopify stores that do not use an app

Stores that use Klaviyo but none of these reviews apps, a ready prospect list for a reviews vendor:

```json
{
    "countries": ["US"],
    "apps": ["Klaviyo"],
    "exclude_apps": ["Yotpo", "Judge.me", "Loox"],
    "max_results": 100
}
```

#### Find Shopify Plus stores

Shopify Plus fashion stores with 200K or more monthly visits:

```json
{
    "category": "fashion",
    "shopify_plus": true,
    "traffic_tiers": ["200K-1M", "1M-5M", "5M-20M", "20M+"],
    "max_results": 200
}
```

#### Find new Shopify stores every week

Set `first_seen_within_days` to `7`, save the input as a task and schedule it weekly. Each run returns only stores that were first found in the last seven days.

### Shopify store analyzer: check which theme and apps a store uses

Already have a list? Use it as a Shopify store analyzer: paste URLs or domains and get one row per store, with its theme, apps, pixels and traffic tier:

```json
{
    "domains": ["allbirds.com", "https://www.gymshark.com"]
}
```

When `domains` has entries, the filters are ignored. Stores that are not in the database come back with `status: "not_found"` and are **not charged**. Addresses that are not valid domains come back with `status: "invalid_domain"`. Up to 1,000 domains per run. This mode needs a paid Apify plan.

### Input

| Input                    | What it does                                                                                                                                                                                    |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `countries`              | Two-letter country codes, such as `US`, `GB`, `DE`.                                                                                                                                             |
| `category`               | One of fashion, beauty, home, food, health, electronics, sports, pets, jewelry, baby, automotive, outdoor, hobby, gifts, books-media, hardware, office, travel, services, events, adult, other. |
| `apps` + `apps_match`    | Stores that use `any` (default) or `all` of the listed apps.                                                                                                                                    |
| `exclude_apps`           | Leaves out stores that use any of the listed apps.                                                                                                                                              |
| `pixels`                 | Stores that use any of the listed pixels.                                                                                                                                                       |
| `traffic_tiers`          | `<50K`, `50K-200K`, `200K-1M`, `1M-5M`, `5M-20M`, `20M+`.                                                                                                                                       |
| `shopify_plus`           | `true` returns only stores with Shopify Plus signals.                                                                                                                                           |
| `first_seen_within_days` | Only stores StoreInspect first found in the last N days.                                                                                                                                        |
| `max_results`            | 1 to 1,000 stores per run. Default 100.                                                                                                                                                         |
| `domains`                | Store URLs to analyze instead of searching by filters.                                                                                                                                          |

Use app and pixel names as listed on [storeinspect.com/apps](https://storeinspect.com/apps) and [storeinspect.com/pixels](https://storeinspect.com/pixels). A name that matches nothing returns no stores. Stores are returned best lead fit first.

Above 100 stores, results come in full pages of 100, so `max_results: 250` returns 200. A run never returns more than you asked for.

#### Advanced filters

`filters` takes a StoreInspect filter object for anything the form does not cover. A field set here replaces the matching form control.

```json
{
    "countries": ["US"],
    "filters": {
        "revenue_tiers": ["$2M-$10M", "$10M-$50M"],
        "themes": { "types": ["paid"], "outdated": true },
        "meta_ads": { "active_ads_min": 5 },
        "store_created_at": { "from": "2025-01-01T00:00:00Z" }
    }
}
```

Supported fields: `categories`, `countries`, `traffic_tiers`, `revenue_tiers`, `shopify_plus`, `apps` and `pixels` (each with `any`, `all`, `none`), `themes` (`types`, `outdated`), `has_ios_app`, `checkout` (`offers_shop_pay_installments`, `ships_to_any`), `meta_ads` (`active_ads_min`), `store_created_at` and `first_discovered_at` (`from`, `to`).

### How much does it cost to scrape Shopify store data?

| What                                       | Starter | Scale | Business and above |
| ------------------------------------------ | ------: | ----: | -----------------: |
| Store found by filters, per 1,000          |   $4.00 | $3.80 |              $3.50 |
| Store analyzed from a URL, per 1,000 found |   $5.00 | $4.80 |              $4.50 |

The price depends on your Apify plan. You pay only for stores that are returned. Empty searches, stores that are not found and invalid addresses cost nothing. Set a maximum charge for the run in Apify Console; the run stops when it is reached. Check the Pricing tab for current prices.

#### Is Shopify Store Finder free to try?

Yes. Every Apify account, including free-plan accounts, gets **25 real store rows** in total to check the data, up to 10 per search. The same search returns the same saved rows. The allowance is shared with our [Shopify Store Leads & Contacts](https://apify.com/storeinspect/shopify-store-search) Actor. More stores and URL analysis need a paid Apify plan.

### Shopify store data API

Run the Actor from your own code and get the rows in the response:

```bash
curl -X POST 'https://api.apify.com/v2/acts/storeinspect~shopify-store-finder/run-sync-get-dataset-items' \
  -H 'Authorization: Bearer <APIFY_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{"countries":["US"],"apps":["Klaviyo"],"max_results":100}'
```

Replace `<APIFY_TOKEN>` with your own token and keep it private. The same input works from the Apify Python and JavaScript clients, n8n, Make and Zapier.

#### Use it from an AI agent (MCP)

Add the Actor as an MCP tool:

```text
https://mcp.apify.com?tools=storeinspect/shopify-store-finder
```

Notes for agents:

- Send either filters or `domains`, not both.
- Start with a small `max_results`, read the dataset, then ask for more.
- The `OUTPUT` record has the run summary: `stores_saved`, `has_more`, `billing_truncated`.
- An empty dataset with the status "No stores match these filters" is a valid answer, not a failure.

### Limits

- One run returns at most 1,000 stores for one set of filters. To build a longer Shopify store list, split it, for example one run per country or traffic band.
- The database covers Shopify stores StoreInspect has found and scanned. It does not include every store in existence, and it does not scan a new URL on demand.
- Store data is refreshed on a rolling basis, so a store that changed its apps this week may still show last month's stack.
- Traffic and revenue are estimated bands. Treat them as a rough qualifier.

### Need Shopify store owner contacts?

This Actor returns store data only. `contacts_available` tells you how many contacts StoreInspect has for a store. To get names, roles, emails and phone numbers, use [Shopify Store Leads & Contacts](https://apify.com/storeinspect/shopify-store-search).

### FAQ

#### Does it scrape the store when I run it?

No. It reads StoreInspect's database of already scanned stores, which is why it is fast and does not fail on blocked pages.

#### Do I need a StoreInspect account or API key?

No. It runs on your Apify account and bills through Apify.

#### Am I charged for stores that are not found?

No. Only returned stores are charged.

#### Can I get a list of more than 1,000 Shopify stores?

Yes, with several runs that use different filters.

#### Why did I get fewer stores than `max_results`?

Fewer stores match the filters, the run reached its maximum charge, or the number was rounded down to full pages of 100.

#### Is Shopify store data public?

The rows come from public storefront pages. They contain no customer data and no personal contact details.

### Support

Open an issue on the Issues tab with the run ID and what you expected. Do not include tokens.

# Actor input Schema

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

Two-letter country codes, such as US or GB. Leave empty for every country.

## `category` (type: `string`):

What the store sells.

## `apps` (type: `array`):

App names, such as Klaviyo, Yotpo or Recharge. Only stores that use them are returned.

## `apps_match` (type: `string`):

Whether a store must use any one of the apps above, or all of them.

## `exclude_apps` (type: `array`):

Stores that use any of these apps are left out. Use it to find stores without your app category.

## `pixels` (type: `array`):

Tracking pixels, such as Meta Pixel or TikTok Pixel. Stores that use any of them are returned.

## `traffic_tiers` (type: `array`):

Estimated monthly visit bands. Leave empty for every size.

## `shopify_plus` (type: `boolean`):

Return only stores with Shopify Plus signals.

## `first_seen_within_days` (type: `integer`):

Return only stores first seen in the last N days. Schedule the run weekly with 7 to get new stores only.

## `max_results` (type: `integer`):

How many stores to return, up to 1,000 per run. Above 100, results come in full pages of 100, so 250 returns 200. You pay only for returned stores.

## `domains` (type: `array`):

Paste store URLs or domains, such as allbirds.com, to get one row per store. When this list has entries, the filters above are ignored. Stores not in the database are reported and not charged. Up to 1,000 per run.

## `filters` (type: `object`):

Optional StoreInspect filter object, for example revenue tiers, theme type, store age or Meta ad count. A field set here replaces the matching control above. See the README for supported fields.

## Actor input object example

```json
{
  "countries": [
    "US"
  ],
  "category": "",
  "apps": [
    "Klaviyo"
  ],
  "apps_match": "any",
  "shopify_plus": false,
  "max_results": 100
}
```

# Actor output Schema

## `results` (type: `string`):

Store rows with theme, apps, pixels and traffic tier.

# 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 = {
    "countries": [
        "US"
    ],
    "apps": [
        "Klaviyo"
    ],
    "max_results": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("storeinspect/shopify-store-finder").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 = {
    "countries": ["US"],
    "apps": ["Klaviyo"],
    "max_results": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("storeinspect/shopify-store-finder").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 '{
  "countries": [
    "US"
  ],
  "apps": [
    "Klaviyo"
  ],
  "max_results": 100
}' |
apify call storeinspect/shopify-store-finder --silent --output-dataset

```

## MCP server setup

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

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/DdNKGYDzTpggVmPCX/builds/5pdEXcfmNHrgTstg7/openapi.json
