# Discord Email Scraper (`email_scraper/discord-email-scraper`) Actor

Discord Email Scraper extracts publicly surfaced email addresses from Discord-related search results using targeted keywords, locations, and email domains. Build structured Discord lead lists for research, prospecting, outreach, and contact discovery.

- **URL**: https://apify.com/email\_scraper/discord-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

### Discord Email Scraper – Overview

Discord Email Scraper helps you discover publicly surfaced email addresses associated with Discord search results by using targeted keywords, optional locations, selected email domains, and exclusion words. It is designed for lead research, audience discovery, partnership research, community outreach, and other workflows where you need structured Discord-related contact data rather than manually reviewing search results.

The actor works from search queries built around your chosen keyword and email domain. For each combination, it searches for relevant Discord results, reads the available result snippets, extracts matching email addresses, removes duplicates, and sends structured records to the Apify dataset.

> 💡 **Key idea:** Use specific, intent-rich keywords such as `Fitness Coach`, `Gaming Moderator`, `Discord Developer`, or `Community Manager` instead of broad one-word queries when you want more focused contact discovery.

Discord Email Scraper does not guarantee a particular number of results. It can only extract email addresses that are publicly surfaced in the search results it processes. Search coverage, query wording, location filters, domain choices, and the amount of publicly indexed information all affect the final dataset.

### Discord Email Scraper – Key Features

> ⚡ **Key Features**
>
> - Search Discord-related results with multiple keywords.
> - Target specific email domain suffixes such as `@gmail.com`, `@yahoo.com`, or custom domains.
> - Narrow searches by country, state, city, or another location string.
> - Exclude results when selected words or phrases appear in the result description.
> - Collect unique email addresses across the run.
> - Save each lead with keyword, title, description, URL, and email information.
> - Process multiple keyword × domain combinations in one run.
> - Continue through result pages until the actor reaches a stopping condition or target.

#### What makes Discord Email Scraper useful?

Discord Email Scraper combines keyword targeting and email-domain targeting into a practical contact discovery workflow. Instead of searching for “Discord emails” with one broad query, you can define several related search intents and several email suffixes.

For example, a campaign could use `Gaming Community`, `Gaming Moderator`, and `Gaming Developer` with `@gmail.com` and `@outlook.com`. The actor processes each keyword and domain combination separately, giving every combination its own requested email target.

### Discord Email Scraper – What Data Can You Extract?

Each discovered lead is stored as a structured record. The actor extracts information from the search result it finds and associates the email address with that result.

> 📦 **Output / Data Fields**
>
> | Field         | Description                                                                                      |
> | ------------- | ------------------------------------------------------------------------------------------------ |
> | `network`     | Identifies the source network as `Discord.com`.                                                  |
> | `keyword`     | The keyword used for the current search combination.                                             |
> | `title`       | The title of the processed search result.                                                        |
> | `description` | The available search-result description/snippet.                                                 |
> | `url`         | The URL associated with the result.                                                              |
> | `email`       | The email address extracted from the result description and matching the selected domain suffix. |

The actor pushes records incrementally to the dataset, so collected leads become available as processing continues.

Duplicate email addresses are filtered during the run. This means the same email is not repeatedly added simply because it appears in multiple search results.

### Discord Email Scraper – How to Use It

Using Discord Email Scraper is straightforward. The most important step is creating search inputs that are specific enough to identify the type of Discord-related contact you need.

#### Step 1: Add your keywords

Enter one or more keywords or search queries. These can describe a role, niche, audience, service, skill, or community type.

Examples:

- `Moderator`
- `Gaming Moderator`
- `Gaming Community Manager`
- `Discord Developer`
- `Fitness Coach`
- `Fitness Influencer`
- `NFT Community Manager`
- `Minecraft Server Owner`

Specific combinations normally make it easier to focus the search around a meaningful intent.

#### Step 2: Add an optional location

Use the location field when geography matters. You can enter a country, state, city, or another location phrase.

Examples:

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

Leave the field empty when you want the search to run without a geographic phrase.

> 📍 **Location tip:** A location filter can make results more targeted, but it can also reduce the available search coverage. When results are sparse, removing the location is one of the first adjustments to test.

#### Step 3: Choose email domains

The `customDomains` input controls which email suffixes the actor looks for.

Example:

```json
[
  "@gmail.com",
  "@outlook.com",
  "@yahoo.com"
]
```

You can also use other suffixes that are relevant to your research. Custom domains can be useful for B2B discovery when you are specifically interested in organization or company email addresses that are publicly surfaced.

#### Step 4: Set the maximum email target

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

For example, with 3 keywords, 2 domains, and `maxEmails = 20`, the actor works through 6 combinations, targeting up to 20 emails per combination. The actual result depends on available public matches.

#### Step 5: Add exclusion words

Use `excludeWords` when certain terms should remove an entire search-result snippet from consideration.

For example:

```json
[
  "crypto",
  "onlyfans"
]
```

A single word is matched case-insensitively as a whole word. A phrase is matched as a case-insensitive phrase. When a description matches an exclusion term, the actor skips that snippet and does not extract an email from it.

### How to Find Discord Emails with Better Keywords

The quality of your keyword strategy has a major effect on contact discovery.

Broad terms such as `gaming` may produce a large and mixed set of search results. More descriptive queries can reduce noise and make the returned leads more relevant.

Try combining a niche with a role or service:

```text
Gaming Moderator
Gaming Community Manager
Discord Server Admin
Fitness Coach
Online Fitness Coach
Esports Community
Minecraft Server Owner
```

You can also build keyword groups around the type of contact you need. For example, a partnership campaign may focus on creators and community managers, while a B2B campaign may focus on developers, agencies, consultants, or business owners.

> 🎯 **Search strategy:** Start with several closely related keyword variations. If the dataset is too narrow, expand the keyword list before assuming that the actor is unable to find more contacts.

### Can You Search Discord Emails by Country or City?

Yes. The `location` field adds the specified location to the search query.

Location targeting should be treated as a search refinement, not as a guarantee that every returned lead is physically based in that location. The actor works from search-result text and public indexing.

### Can You Target Gmail, Outlook, Yahoo, or Custom Domains?

Yes. The `customDomains` field accepts a list of email domain suffixes.

For example:

```json
[
  "@gmail.com",
  "@yahoo.com",
  "@outlook.com",
  "@hotmail.com"
]
```

The actor builds a separate search combination for every keyword and selected domain. This makes domain targeting useful when you want to compare or prioritize different categories of public email addresses.

Keep in mind that adding more domains increases the number of keyword × domain combinations the actor needs to process.

### Input

> 🧩 **Input**
>
> | Input           | Type             | Required | Purpose                                                                                                         |
> | --------------- | ---------------- | -------: | --------------------------------------------------------------------------------------------------------------- |
> | `keywords`      | Array of strings |      Yes | Keywords or queries used to search for relevant Discord results.                                                |
> | `location`      | String           |       No | Country, state, city, or other location phrase used to narrow the search.                                       |
> | `customDomains` | Array of strings |       No | Email suffixes to search for, such as `@gmail.com`.                                                             |
> | `maxEmails`     | Integer          |       No | Requested maximum number of emails for each keyword + domain combination, from 1 to 10,000 in the input schema. |
> | `excludeWords`  | Array of strings |       No | Words or phrases that cause a result description to be skipped.                                                 |

The default keyword configuration includes `Moderator` and `gaming`. The default email-domain selection is `@gmail.com`.

#### Example input

```json
{
  "keywords": [
    "Gaming Moderator",
    "Discord Developer",
    "Fitness Coach"
  ],
  "location": "United States",
  "customDomains": [
    "@gmail.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

### Output

Discord Email Scraper writes the collected leads to the actor dataset as structured records.

#### Example output

```json
{
  "network": "Discord.com",
  "keyword": "Gaming Moderator",
  "title": "Example Discord Result",
  "description": "Public result description containing contact context...",
  "url": "https://discord.com/...",
  "email": "example@gmail.com"
}
```

> ✅ **Structured result:** Every extracted email is connected to the keyword and the source result that produced it, making the dataset more useful for lead review and filtering than an email-only list.

### Use Cases

Discord Email Scraper can support several practical research and lead-generation workflows.

#### Lead generation

Build targeted prospect lists around roles such as community managers, moderators, creators, developers, coaches, and other Discord-related audiences.

#### Community and creator research

Find publicly surfaced contact information connected with specific community types or niches. Multiple keyword variations can help explore different roles within the same market.

#### B2B prospecting

Use business-oriented keywords and company email domains to identify potentially relevant organizations or professionals whose public search results expose contact information.

#### Partnership outreach

Agencies, software companies, community tools, and service providers can search for relevant communities, operators, or creators and organize discovered public contact details into a structured dataset.

> 💡 **Use-case tip:** For better precision, mix broad discovery keywords with narrow role-based phrases rather than relying on one generic term.

### Pricing

The actor's configured runtime includes a free-user collection ceiling of **100 unique emails**. For free users, requests above that ceiling are reduced to the 100-email maximum.

Paid users are not subject to that specific free-tier result ceiling in the actor logic.

Your actual Apify platform charges can still depend on the surrounding Apify account, resource consumption, and the way the actor is run. No fixed monetary price is stated here because the provided actor configuration does not define a universal dollar price for a run.

> 💰 **Pricing note:** The `maxEmails` input is a collection target, not a promise of results and not a direct statement of monetary cost. Higher targets can require more search processing.

### Tips and Best Practices

#### Use several focused keywords

Instead of relying on one broad term, create a small group of related search intents. This often produces a more useful mix of results.

#### Test domain coverage

If Gmail-only searches are sparse, consider adding other relevant public email suffixes. For professional prospecting, custom organization domains can also be useful when those addresses are publicly surfaced.

#### Keep exclusions intentional

Exclude terms when they clearly identify unwanted result categories. Too many exclusion words can remove otherwise useful leads.

#### Relax narrow filters when results are low

Sparse results can happen because the keyword, location, or domain is too restrictive. Try broader keywords, more domains, or no location filter.

#### Allow enough runtime for broad searches

Wide combinations can take longer because every keyword × domain pair may process multiple result pages. Large runs should use an appropriate Apify run timeout.

#### Review the dataset before outreach

The actor extracts publicly surfaced contact information; it does not verify that an address is active, owned by the intended person, or appropriate for outreach. Review and validate leads before using them.

### How Does the Actor Stop Searching?

The actor uses several practical stopping conditions rather than blindly requesting pages forever.

It can stop a keyword × domain combination when its target is reached, when multiple consecutive pages produce no new email addresses, when empty result pages indicate that results have ended, or when later pages become inefficient.

This behavior helps prevent unnecessary searching when the available public result set has become exhausted or low-yield.

### Frequently Asked Questions

#### What is Discord Email Scraper?

Discord Email Scraper is an Apify Actor for discovering email addresses that are publicly surfaced in search results related to Discord. It combines keywords, optional location targeting, email-domain filters, and exclusion words, then stores the extracted contacts in a structured dataset.

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

The actor builds targeted search queries for Discord-related results and selected email domains. It processes search-result descriptions and extracts email addresses that match the configured domain suffixes.

#### Can I search for Discord emails by keyword?

Yes. The `keywords` input is the main targeting mechanism. You can supply one or many search terms, such as `Moderator`, `Gaming Community Manager`, or `Discord Developer`.

#### Can I search Discord contacts by city or country?

Yes. Enter a country, state, city, or similar location phrase in `location`. Leave it blank to avoid a geographic search filter.

#### How many emails can Discord Email Scraper collect?

The input schema accepts `maxEmails` values from 1 through 10,000. However, the result is limited by what is publicly surfaced and discoverable for the selected searches. Free users have a 100-email ceiling in the actor's runtime logic.

#### Is maxEmails a run-wide limit?

No. The actor applies the requested target independently to each keyword + domain combination. For example, 2 keywords and 3 domains create 6 combinations, each with its own target.

#### Does the actor remove duplicate emails?

Yes. The actor tracks previously discovered email addresses during the run and only stores new unique addresses.

#### Can I exclude certain Discord results?

Yes. Use `excludeWords` to skip result descriptions containing unwanted words or phrases. Matching is case-insensitive.

#### Why did I get fewer emails than my maxEmails target?

The actor only collects email addresses that are publicly surfaced and match your keyword, domain, location, and exclusion settings. Search results may simply contain fewer qualifying addresses than your target.

#### What is the best way to improve Discord email search results?

Use several specific keyword variations, test additional email domains, and remove overly restrictive location or exclusion filters when the result volume is low.

#### Does the actor verify email addresses?

No. The actor extracts email strings from available search-result descriptions. It does not claim that an address is active, deliverable, owned by a specific person, or suitable for outreach.

#### What format does the output use?

The actor writes structured records to the Apify dataset with the fields documented above.

### Support

Need a custom variation, different extraction behavior, or a bespoke Discord research workflow? Contact **<alphascraper69@gmail.com>**.

For best results, describe the target audience, keyword strategy, preferred email domains, location filters, and any exclusions you want to apply.

> 🔧 **Important:** This actor is intended for extracting publicly surfaced information. Use collected data responsibly and in accordance with applicable privacy, data-protection, platform, and anti-spam requirements.

# 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": [
    "Moderator",
    "gaming"
  ],
  "location": "United States",
  "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": [
        "Moderator",
        "gaming"
    ],
    "location": "United States",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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