# Shopify Email Scraper (`email_scraper/shopify-email-scraper`) Actor

Shopify Email Scraper finds publicly indexed Shopify email addresses using targeted keywords, locations, and custom email domains. Build structured lead lists with titles, descriptions, URLs, and emails for prospecting, market research, and Shopify business discovery.

- **URL**: https://apify.com/email\_scraper/shopify-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🔍 Shopify Email Scraper – Overview

**Shopify Email Scraper** is an Apify Actor designed to discover publicly listed email addresses associated with Shopify-related search results. It accepts targeted keywords, optional locations, selected email domain suffixes, and exclusion terms, then returns structured lead information such as the keyword, title, description, URL, and email address.

This **Shopify Email Scraper** is useful for lead generation, market research, supplier discovery, vendor research, prospecting, and building focused contact datasets from publicly available search results.

The easiest workflow is simple: enter one or more relevant keywords, optionally specify a country or city, choose the email domains you want to search for, set the maximum number of emails per keyword-and-domain combination, and run the Actor.

> 💡 **Shopify Email Scraper at a glance**
>
> - Search Shopify-related results using custom keywords
> - Filter results geographically with an optional location
> - Target specific email domains such as `@gmail.com` or `@yahoo.com`
> - Exclude unwanted words or phrases from descriptions
> - Collect unique email addresses with supporting lead information
> - Store results in a structured Apify dataset
> - Process multiple keyword and email-domain combinations in one run

### 🎯 Shopify Email Scraper – Key Features

The **Shopify Email Scraper** is built around flexible search targeting rather than a fixed list of categories. You control the search terms and email domains, allowing the same Actor to be used for different prospecting objectives.

> ⭐ **Key Features**
>
> - **Keyword-based discovery:** Search using suppliers, vendors, manufacturers, brands, agencies, consultants, coaches, and other relevant terms.
> - **Multiple keywords:** Provide a list of search queries to expand coverage.
> - **Location targeting:** Narrow searches to a country, state, region, or city.
> - **Custom email domains:** Search for selected domains instead of relying on one predefined domain.
> - **Exclude-word filtering:** Skip search snippets containing unwanted words or phrases.
> - **Per-combination limits:** Set how many addresses to collect for each keyword + email-domain combination.
> - **Duplicate protection:** Previously collected email addresses are tracked so duplicate emails are not repeatedly added.
> - **Structured results:** Each collected email is accompanied by relevant search-result metadata.
> - **Incremental dataset storage:** Results are pushed to the Actor dataset as they are collected.

### 📊 Shopify Email Scraper – What Data Can You Extract?

The **Shopify Email Scraper** returns structured lead information rather than only a plain email list. This provides context around where each email was discovered and which search term produced the result.

The output contains the following fields:

| Field         | Description                                          |
| ------------- | ---------------------------------------------------- |
| `network`     | Source network identifier, returned as `Shopify.com` |
| `keyword`     | Keyword used to discover the result                  |
| `title`       | Title of the search result                           |
| `description` | Search-result description or snippet                 |
| `url`         | URL associated with the search result                |
| `email`       | Extracted email address                              |

> 📦 **Output Data**
>
> - Network/source
> - Search keyword
> - Result title
> - Result description
> - Result URL
> - Email address

A structured dataset makes the **Shopify Email Scraper** useful when you need more than contact information alone. The title, description, keyword, and URL can help with prospect qualification, categorization, and later review.

### 🛠️ Shopify Email Scraper – How to Use It

Using the **Shopify Email Scraper** requires only a few inputs.

#### 🔑 1. Add Keywords

Enter the terms you want to search for. You can provide several keywords in the same run.

For example:

- `supplier`
- `vendor`
- `fitness coach`
- `fitness trainer`
- `fashion brand`
- `jewelry store`
- `beauty supplier`
- `wholesale clothing`

More specific keyword combinations can produce more focused results than broad single-word searches.

#### 🌍 2. Set a Location

The `location` field is optional. You can enter a country, state, region, or city to narrow your search.

Examples:

- `Canada`
- `United States`
- `New York`
- `Toronto`
- `London`

Leave this field empty when you want a broader search without a geographic restriction.

#### ✉️ 3. Choose Email Domains

Use `customDomains` to define the email suffixes you want to collect.

Examples:

- `@gmail.com`
- `@yahoo.com`
- `@outlook.com`
- `@hotmail.com`
- `@icloud.com`

You can also specify other domain suffixes when they are relevant to your target audience.

#### 🔢 4. Set the Email Limit

The `maxEmails` input controls the target for each keyword + domain combination.

For example, with:

- 3 keywords
- 2 email domains
- `maxEmails = 20`

the Actor processes six keyword/domain combinations, with a target of up to 20 addresses for each combination.

This means the setting is **not a single shared run-wide target**.

#### 🚫 5. Add Exclude Words

Use `excludeWords` to skip search snippets containing unwanted terms.

Examples:

- `crypto`
- `onlyfans`
- `gambling`

Single words are matched as whole words without case sensitivity. Multi-word phrases are matched without case sensitivity as text phrases.

### 🔎 How to Scrape Shopify Emails with Targeted Keywords

The best way to use the **Shopify Email Scraper** is to start with specific search intent. Instead of entering only a broad term such as `fitness`, combine the industry or role with a more descriptive phrase.

For example:

- `fitness coach`
- `online fitness coach`
- `fitness trainer`
- `fitness influencer`

The same strategy can be applied to suppliers, manufacturers, vendors, agencies, stores, service providers, and business categories.

> 💡 **Search targeting tip**
>
> - Use several related keywords rather than relying on one broad term.
> - Add a location when geographic targeting matters.
> - Use multiple email domains when broader email coverage is required.
> - Remove an overly restrictive location when the result count is low.
> - Increase `maxEmails` when deeper collection is appropriate.

### 📍 Can Shopify Email Scraper Search Specific Countries or Cities?

Yes. The **Shopify Email Scraper** supports an optional `location` input for geographic targeting.

A location is added to the search query as a geographic term, helping focus discovery around the specified country, region, or city.

For broad prospecting, leaving `location` blank can provide wider coverage. For local lead generation, adding a location can make the search more targeted.

Examples include:

- `Canada`
- `Australia`
- `New York`
- `Los Angeles`
- `Toronto`

The location should be treated as a search filter rather than a guarantee that every returned result is physically located in that area.

### 📥 Input

The **Shopify Email Scraper** accepts these user-facing inputs:

| Input           | Type    | Required | Purpose                                         |
| --------------- | ------- | -------- | ----------------------------------------------- |
| `keywords`      | Array   | Yes      | Search terms or queries                         |
| `location`      | String  | No       | Country, state, region, or city                 |
| `customDomains` | Array   | No       | Email suffixes to search for                    |
| `maxEmails`     | Integer | No       | Maximum target per keyword + domain combination |
| `excludeWords`  | Array   | No       | Words or phrases that exclude a snippet         |

#### 🔍 `keywords`

A list of keywords or queries used to discover relevant Shopify results.

Default example:

```json
["supplier", "vendor"]
```

#### 🌍 `location`

An optional geographic search term.

Default:

```json
""
```

#### ✉️ `customDomains`

An array of email suffixes.

Default:

```json
["@gmail.com"]
```

#### 🔢 `maxEmails`

An integer between `1` and `10000`.

Default:

```json
10
```

The limit is applied independently to each keyword + domain combination.

#### 🚫 `excludeWords`

A list of words or phrases used to filter unwanted descriptions.

Default:

```json
[]
```

### 🧪 Shopify Email Scraper – Input Example

Here is a practical example using multiple keywords, locations, email domains, and exclusions:

```json
{
  "keywords": [
    "fitness coach",
    "fitness trainer",
    "online fitness coach"
  ],
  "location": "Canada",
  "customDomains": [
    "@gmail.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

This configuration searches multiple targeted keyword/domain combinations and attempts to collect up to the specified number of matching addresses for each combination, subject to available public search results and the Actor's stopping conditions.

### 📤 Shopify Email Scraper – Output Example

A typical dataset record follows this structure:

```json
{
  "network": "Shopify.com",
  "keyword": "fitness coach",
  "title": "Example Fitness Coaching",
  "description": "Fitness coaching and online training ... contact@example.com",
  "url": "https://example.com/",
  "email": "contact@example.com"
}
```

The actual values depend on the public search results available for your selected keywords, domains, and location.

> 📌 **Important output note**
>
> - The Actor only returns email addresses it can identify from the available result descriptions.
> - A requested `maxEmails` value is a target, not a guarantee.
> - Some keyword/domain combinations may produce fewer results than requested.
> - Duplicate email addresses are filtered during collection.

### 💼 Shopify Email Scraper – Use Cases

The **Shopify Email Scraper** can support a wide range of legitimate business and research workflows involving publicly available contact information.

#### 🏪 Supplier and Vendor Discovery

Search for supplier, vendor, wholesaler, distributor, or manufacturer-related terms to identify potential business contacts.

#### 🛍️ Ecommerce Market Research

Discover businesses associated with specific ecommerce categories, products, niches, or markets and collect available contact information for research.

#### 📣 B2B Lead Generation

Use job titles, business roles, industries, or service categories as keywords to build targeted prospecting datasets.

#### 🌎 Location-Based Prospecting

Combine business-related keywords with a country or city to focus research on a specific geographic market.

#### 🧑‍💼 Agency and Service Research

Search for agencies, consultants, specialists, coaches, designers, marketers, and other professional service providers.

#### 🔍 Competitor and Market Analysis

Collect result titles, URLs, descriptions, keywords, and email addresses to help organize market research datasets.

> 🚀 **Useful workflow**
>
> - Define your target industry.
> - Create 3–5 specific keyword variations.
> - Select relevant email domains.
> - Add a location when geographic targeting is important.
> - Use exclusions to remove irrelevant result categories.
> - Review the resulting dataset for relevance before outreach.

### 💰 Pricing

The provided Actor configuration does **not specify a monetary price**, so this README does not claim a fixed dollar or credit price.

The Actor's runtime records successful dataset result pushes using the Apify `result` event, which can participate in the applicable Apify usage/billing system.

The configured input limit allows `maxEmails` values from `1` to `10000`. Runtime behavior also applies a maximum `maxEmails` value of **100 for free users**. Paid-user runs are not subject to that specific free-user ceiling.

Actual platform charges can depend on the applicable Apify account, usage model, and current pricing rules.

### ⚙️ Tips and Best Practices

For stronger **Shopify Email Scraper** results, search quality matters as much as the requested quantity.

- Use several highly relevant keyword variations.
- Prefer descriptive phrases over extremely broad single terms.
- Combine business categories with roles, products, or services.
- Use multiple email domains when you want broader coverage.
- Leave location empty when a regional filter produces too few results.
- Increase the run timeout for especially broad searches when needed.
- Use `excludeWords` to remove irrelevant categories.
- Treat `maxEmails` as a collection target rather than a guaranteed number.
- Review descriptions and URLs before using collected leads for downstream campaigns.

### 🧠 How Does Shopify Email Scraper Handle Low Results?

A low result count does not necessarily mean the Actor failed. The **Shopify Email Scraper** can stop a keyword/domain search when the available search results are no longer producing useful new email addresses.

Collection may stop when:

- The configured target is reached.
- Several consecutive pages produce no new emails.
- Search pages become empty.
- Later pages become inefficient for email discovery.
- Repeated fetching failures prevent reliable continuation.

For this reason, broadening keywords, using additional relevant domains, or removing an overly narrow location can improve coverage.

### ❓ Frequently Asked Questions

#### 🔹 What is Shopify Email Scraper?

**Shopify Email Scraper** is an Apify Actor that searches for publicly available email addresses associated with Shopify-related search results and stores them with supporting metadata.

#### 🔹 How do I use Shopify Email Scraper?

Provide one or more `keywords`, optionally add a `location`, choose `customDomains`, set `maxEmails`, and optionally configure `excludeWords`. Then start the Actor and review the resulting dataset.

#### 🔹 What data does Shopify Email Scraper return?

It returns `network`, `keyword`, `title`, `description`, `url`, and `email` fields for collected results.

#### 🔹 Can Shopify Email Scraper search Gmail addresses?

Yes. You can include `@gmail.com` in `customDomains`. Other email suffixes can also be specified.

#### 🔹 Can I search Yahoo or Outlook emails?

Yes. Add the required suffixes such as `@yahoo.com` or `@outlook.com` to `customDomains`.

#### 🔹 Can I target a country or city?

Yes. Use the optional `location` field to narrow the search geographically.

#### 🔹 Is maxEmails a total run limit?

No. The configured behavior applies `maxEmails` to each keyword + domain combination rather than one shared run-wide target.

#### 🔹 Does Shopify Email Scraper guarantee the requested number of emails?

No. `maxEmails` is a target. The final number depends on how many relevant public search results and matching email addresses are available.

#### 🔹 Can I exclude certain types of results?

Yes. Use `excludeWords` to skip snippets containing specified words or phrases.

#### 🔹 Does Shopify Email Scraper remove duplicates?

Yes. The Actor tracks already collected email addresses and avoids adding the same email repeatedly.

#### 🔹 Where are the scraped results stored?

Results are pushed incrementally to the Apify dataset, where the structured records can be reviewed and processed.

#### 🔹 Who can benefit from Shopify Email Scraper?

It can be useful for researchers, marketers, sales teams, ecommerce professionals, agencies, business-development teams, and developers who need structured datasets from publicly available search results.

#### 🔹 How can I get better Shopify email results?

Use several specific keyword variations, test multiple relevant email domains, broaden overly restrictive locations, and apply exclusion terms only when necessary.

### 🛡️ Responsible Use

The **Shopify Email Scraper** is intended for discovering publicly available information. Collected data should be handled responsibly and in accordance with applicable privacy, marketing, data-protection, website-use, and anti-spam requirements.

Before contacting collected addresses, make sure your intended use complies with applicable laws, regulations, platform rules, and your organization's policies.

### 📞 Support

For questions, improvements, custom requirements, or bespoke scraper development:

- contact me by email : <alphascraper69@gmail.com>

# Actor input Schema

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

A list of keywords or queries to search for.

## `location` (type: `string`):

Optional country, state or city used to narrow the search. Leave it empty to search without a geographic filter.

## `customDomains` (type: `array`):

List of custom email domains

## `maxEmails` (type: `integer`):

How many addresses each search keyword + domain suffix combination may collect before the finder moves on to the next one. This is a per-combination target, not a run-wide total: with 3 keyword and 2 Domains and a limit of 20, the run works through all 6 combinations and aims for up to 20 addresses in each, so up to 120 overall. Lower values finish sooner and cost less; higher values dig deeper but never guarantee a fuller result, since the run can only find what is publicly listed.

## `excludeWords` (type: `array`):

Words or phrases you do not want to see.

## Actor input object example

```json
{
  "keywords": [
    "supplier",
    "vendor"
  ],
  "location": "canada",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 10,
  "excludeWords": []
}
```

# Actor output Schema

## `dataset` (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": [
        "supplier",
        "vendor"
    ],
    "location": "canada",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("email_scraper/shopify-email-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": [
        "supplier",
        "vendor",
    ],
    "location": "canada",
    "customDomains": ["@gmail.com"],
    "excludeWords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("email_scraper/shopify-email-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": [
    "supplier",
    "vendor"
  ],
  "location": "canada",
  "customDomains": [
    "@gmail.com"
  ],
  "excludeWords": []
}' |
apify call email_scraper/shopify-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,email_scraper/shopify-email-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/lnfkbloHTIO81H33G/builds/BAGDfC3nVZVsrd75H/openapi.json
