# Shopee Email Scraper (`email_scraper/shopee-email-scraper`) Actor

Scrape publicly indexed Shopee results and extract targeted email addresses with Shopee Email Scraper. Search by keywords, location, and custom email domains, filter unwanted terms, remove duplicates, and export structured leads with emails, titles, descriptions, and URLs.

- **URL**: https://apify.com/email\_scraper/shopee-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **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

### 🔍 Shopee Email Scraper – Overview

Shopee Email Scraper is an Apify Actor designed to find publicly exposed email addresses associated with Shopee search results. It searches for Shopee pages using your keywords and selected email-domain suffixes, then extracts matching email addresses from the search-result descriptions.

It is useful for lead generation, market research, supplier discovery, business prospecting, contact research, and other workflows where publicly indexed Shopee contact information is relevant.

The easiest workflow is simple: enter one or more keywords, optionally specify a country or city, choose the email domains you want to find, set a maximum target, and run the Actor.

> **🔹 Key Features**
>
> - Search Shopee-related results using multiple keywords
> - Extract publicly indexed email addresses matching selected domains
> - Optionally narrow searches by country, state, or city
> - Set email-domain filters such as `@gmail.com` or `@yahoo.com`
> - Exclude results containing unwanted words or phrases
> - Remove duplicate email addresses across the run
> - Store extracted leads in an Apify dataset
> - Continue processing multiple keyword and domain combinations in one run

### 🔹 Shopee Email Scraper – Key Features

Shopee Email Scraper is built around targeted keyword and email-domain combinations. Instead of performing one broad search, the Actor can work through multiple keyword queries and multiple email suffixes, giving you more control over the type of Shopee contacts you want to discover.

For example, a supplier research campaign could use keywords such as `supplier`, `manufacturer`, `wholesaler`, or `distributor`, together with `@gmail.com`, `@yahoo.com`, and `@outlook.com`.

> **💡 Why Use Shopee Email Scraper**
>
> - Build targeted Shopee lead lists from search-oriented keywords
> - Focus searches on specific regions when geographic targeting matters
> - Discover different types of contact emails by changing domain suffixes
> - Reduce irrelevant results with exclusion words
> - Collect structured contact information instead of manually reviewing search pages
> - Process many keyword and domain combinations within one Actor run

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

The Actor extracts email information from publicly indexed search-result descriptions associated with Shopee results. It does not claim to retrieve every email address available on Shopee because the extraction depends on what is publicly exposed and indexed in the search results.

Every collected lead is associated with the keyword that produced the result and includes contextual information that can help you evaluate the contact.

The dataset view is designed around five primary lead fields: keyword, title, description, URL, and email. The Actor also sends a network value with each dataset record.

| Field         | Description                                                    |
| ------------- | -------------------------------------------------------------- |
| `network`     | Identifies the source network as Shopee.com                    |
| `keyword`     | Keyword used for the search                                    |
| `title`       | Title of the matching search result                            |
| `description` | Search-result description containing the extracted information |
| `url`         | URL associated with the search result                          |
| `email`       | Email address extracted from the result                        |

> **🔹 Output / Data Fields**
>
> - **Keyword** – Shows which search term generated the lead.
> - **Title** – Helps identify the relevant Shopee result.
> - **Description** – Preserves the contextual text surrounding the discovered contact.
> - **URL** – Provides the source result link.
> - **Email** – Contains the extracted email address.
> - **Network** – Identifies the source as Shopee.com.

### 🔎 How to Use Shopee Email Scraper

Using Shopee Email Scraper requires only a few inputs. Start with focused keywords and then adjust the other fields according to your targeting strategy.

#### 1. Add Keywords

Enter one or more keywords or search queries in the `keywords` field.

Examples:

- `supplier`
- `manufacturer`
- `wholesaler`
- `fashion seller`
- `electronics store`
- `beauty supplier`
- `home decor`
- `sports equipment`

More specific keywords often produce more targeted search results than one very broad term.

#### 2. Add a Location

Use the `location` field when you want to narrow the search geographically.

Examples:

- `Singapore`
- `Malaysia`
- `Thailand`
- `Jakarta`
- `Bangkok`
- `Tokyo`

Leave the field empty to search without an explicit geographic term.

#### 3. Select Email Domains

The `customDomains` field controls which email suffixes the Actor looks for.

Examples:

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

You can provide multiple domain suffixes in the same run.

#### 4. Set the Maximum Email Target

The `maxEmails` input accepts values from 1 to 10,000.

The configured limit is applied independently to each keyword + domain combination. Therefore, a run with multiple combinations can target multiple groups of results rather than treating the value as one simple shared target.

#### 5. Add Exclusion Words

Use `excludeWords` to skip search-result descriptions containing terms you do not want.

Examples:

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

Single words are matched as whole words, while phrases are matched as phrases. Matching is case-insensitive.

### ⚙️ Shopee Email Scraper – How the Search Works

For each keyword and selected email domain, the Actor constructs a targeted search for Shopee-related results. It then examines search-result pages and checks their descriptions for email addresses matching the domains you supplied.

Only emails matching the configured suffix pattern are considered. This means the domain list directly influences what type of email addresses can be collected.

The Actor also keeps track of emails already discovered during the run, helping prevent the same address from being added repeatedly when it appears in more than one search combination.

> **🔹 Important Search Behavior**
>
> - Email extraction is based on publicly indexed search-result content.
> - The Actor does not guarantee that every Shopee profile contains an email.
> - A Shopee result may be returned without producing an email address.
> - Duplicate email addresses are skipped during collection.
> - Different keywords can return overlapping results, so the final unique count may be lower than the combined targets.

### 🎯 How to Get More Shopee Email Leads

Search quality depends heavily on your input strategy. A single broad keyword may provide limited contact coverage, while several related keywords can explore different segments.

For supplier research, consider combining commercial terms with product categories.

For example:

- `supplier shoes`
- `shoe manufacturer`
- `fashion wholesaler`
- `clothing supplier`
- `sportswear manufacturer`

For business prospecting, combine industry terms with role or business-type terms.

> **💡 Lead Generation Tip**
>
> - Use several closely related keywords instead of relying on one generic term.
> - Add multiple relevant email domains when you need broader coverage.
> - Use a location when regional targeting is important.
> - Remove restrictive filters if your result count is unexpectedly low.
> - Start with focused searches and expand them gradually.

### 🌍 Can You Search by Country or City?

Yes. The `location` field is an optional text filter that adds a country, state, or city term to the search.

For example, you can search with:

```json
{
  "keywords": ["supplier", "manufacturer"],
  "location": "Singapore"
}
```

You can also leave `location` empty when geographic targeting is not required.

### 📧 Can You Search for Specific Email Domains?

Yes. Shopee Email Scraper allows you to provide your own email-domain suffixes.

Example:

```json
{
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ]
}
```

This is useful when your workflow specifically needs consumer email providers, company domains, or a combination of both.

The Actor searches for the domains you provide rather than claiming to discover every possible email provider automatically.

### 🚫 Can You Exclude Certain Shopee Results?

Yes. The `excludeWords` field lets you filter out search-result descriptions containing unwanted words or phrases.

Example:

```json
{
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

If an exclusion term appears in the relevant description, that search-result snippet is skipped and no email is collected from that snippet.

This can be especially useful when your campaign needs cleaner business-oriented leads.

### 📝 Input

The Actor accepts the following user-facing inputs:

| Input           | Type             | Required | Purpose                                            |
| --------------- | ---------------- | -------: | -------------------------------------------------- |
| `keywords`      | Array of strings |      Yes | Search terms or queries                            |
| `location`      | String           |       No | Optional country, state, or city                   |
| `customDomains` | Array of strings |       No | Email suffixes to extract                          |
| `maxEmails`     | Integer          |       No | Maximum target per keyword + domain combination    |
| `excludeWords`  | Array of strings |       No | Terms or phrases that exclude a result description |

#### Example Input

```json
{
  "keywords": [
    "supplier",
    "manufacturer",
    "fashion wholesaler"
  ],
  "location": "Singapore",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

### 📦 Output

The Actor writes extracted records to the Apify dataset as they are collected.

A simplified example output looks like this:

```json
{
  "network": "Shopee.com",
  "keyword": "supplier",
  "title": "Example Shopee Supplier",
  "description": "Supplier contact information ... sales@example.com ...",
  "url": "https://shopee.com/example",
  "email": "sales@example.com"
}
```

The exact title, description, URL, and email depend on the publicly indexed result discovered during the run.

> **📊 Dataset Format**
>
> - Results are stored as structured dataset records.
> - The default dataset view highlights `keyword`, `title`, `description`, `url`, and `email`.
> - The stored records also include the `network` field.
> - Duplicate email addresses are not intentionally re-added during the same collection process.

### 💰 Pricing

The provided Actor code does not define a fixed monetary price for each email or a public per-run price, so an exact cost cannot be stated from the supplied files.

The Actor does, however, submit collected results using a `result` charged event. The final amount you pay therefore depends on the pricing configuration applied to the Actor in the Apify platform.

There is also different handling for free and paid users. The code applies a 100-email ceiling to the configured maximum for free users when a higher target or no target is requested. The configured `maxEmails` value itself is still applied independently to each keyword + domain combination.

Because the implementation processes combinations independently, you should not interpret `maxEmails: 100` as a guaranteed 100-email total for the entire multi-combination run.

> **⚠️ Pricing Note**
>
> - No exact dollar or credit price is defined in the supplied Actor configuration.
> - The Actor uses a charged `result` event for collected records.
> - Free-user behavior applies a 100-email ceiling to the configured maximum.
> - Actual discovered results are not guaranteed to reach the requested target.

### 🛠️ Tips and Best Practices

Good search planning can have a major effect on the usefulness of the final Shopee email dataset.

Use keyword variations that represent different buyer, seller, supplier, and product intents. For example, `supplier` alone may be much broader than `electronics supplier` or `mobile accessories wholesaler`.

Choose email domains according to your lead strategy. If you need broad consumer-email coverage, include several common providers. For B2B research, relevant company-domain suffixes can also be tested.

Location targeting can make searches more specific, but a narrow location combined with a narrow keyword may reduce available results.

Exclusion words are most useful when you already know which types of pages create irrelevant results.

Finally, remember that public indexing controls what can be discovered. Shopee Email Scraper cannot guarantee an email address simply because a Shopee profile exists.

### ❓ Frequently Asked Questions

#### What is Shopee Email Scraper?

Shopee Email Scraper is an Apify Actor that searches publicly indexed Shopee-related results and extracts email addresses matching your selected domain suffixes.

#### How does Shopee Email Scraper find email addresses?

It searches for Shopee results using your keywords and email-domain filters, then extracts matching email patterns from the descriptions of the returned search results.

#### Can I search Shopee emails by country?

Yes. Enter a country, state, or city in the `location` field to narrow the search.

#### Can I search for Gmail emails from Shopee?

Yes. Add `@gmail.com` to `customDomains`. You can also include multiple email providers in the same run.

#### Can I extract Yahoo and Outlook emails too?

Yes. Add `@yahoo.com`, `@outlook.com`, or other desired email-domain suffixes to the domain list.

#### What happens if no location is provided?

The Actor performs the search without adding a geographic location term.

#### Can I use multiple Shopee keywords in one run?

Yes. The `keywords` input is an array, so you can provide several keywords or search queries.

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

No. The implementation applies the configured limit separately to each keyword + domain combination. Duplicate addresses can still reduce the number of unique results obtained.

#### Can I exclude irrelevant Shopee results?

Yes. Use `excludeWords` to skip descriptions containing unwanted words or phrases.

#### Does Shopee Email Scraper guarantee a specific number of emails?

No. `maxEmails` is a target/cap, not a guaranteed result count. The available number of publicly indexed matching emails determines how many contacts can actually be collected.

#### What data does the Actor return?

Each collected record can include the network, keyword, result title, description, URL, and extracted email address.

#### Is the extracted data already structured?

Yes. Results are pushed into an Apify dataset as structured records, making them easier to review and use in downstream workflows.

### 🚀 Shopee Email Scraper – Practical Use Cases

Shopee Email Scraper can support several research and lead-generation scenarios where publicly indexed contact information is relevant.

- **Supplier discovery** – Search for manufacturers, wholesalers, distributors, and suppliers.
- **Product research** – Combine product categories with commercial keywords.
- **B2B prospecting** – Identify publicly indexed business contact emails associated with relevant Shopee results.
- **Market research** – Explore businesses operating around selected product or location keywords.
- **Lead list building** – Create structured datasets containing email, URL, title, and contextual description.
- **Regional research** – Compare search results across different countries or cities.
- **Email-domain research** – Focus collection on specific public email providers or domain suffixes.

> **🔐 Privacy & Data Note**
>
> - Use the Actor responsibly and only for information that is publicly available.
> - Respect applicable laws, platform policies, privacy requirements, and email-marketing regulations.
> - The Actor is intended for legitimate research, discovery, and data-collection workflows.

### ✅ Summary

Shopee Email Scraper provides a focused way to search publicly indexed Shopee results for email addresses using customizable keywords, locations, email-domain suffixes, maximum targets, and exclusion filters.

Its structured dataset output makes the collected information easier to review, analyze, and incorporate into lead-research workflows. Because extraction depends on publicly indexed search content, results vary by keyword, location, domain, and the availability of publicly visible contact information.

For better coverage, use multiple relevant keywords, test several appropriate email domains, and avoid making your search unnecessarily restrictive.

- 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",
    "Manufacturer"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 5,
  "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",
        "Manufacturer"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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