# Semrush Email Scraper (`email_scraper/semrush-email-scraper`) Actor

Semrush Email Scraper extracts publicly available email addresses from Semrush-related search results using custom keywords, locations, and email domains. Build targeted lead lists with keyword, title, description, URL, and email data.

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

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

### 🔍 Semrush Email Scraper – Overview

**Semrush Email Scraper** extracts publicly visible email addresses associated with Semrush search results using your own keywords or search queries. It is designed for lead generation, contact discovery, prospect research, market research, and building targeted business contact lists.

You provide one or more keywords, optionally specify a country, state, or city, choose the email domains you want to find, and optionally exclude profiles whose descriptions contain unwanted words or phrases. The actor then searches relevant Semrush results and collects matching email addresses together with useful contextual information.

> **💡 Semrush Email Scraper at a glance**
>
> - Search Semrush-related results using custom keywords or queries
> - Filter searches by an optional country, state, or city
> - Target specific email domains such as `@gmail.com` or `@yahoo.com`
> - Exclude unwanted descriptions using words or phrases
> - Receive email addresses with title, description, URL, and keyword context
> - Automatically avoid duplicate email addresses across the run
> - Results are added to the Apify dataset incrementally

The easiest way to use this Semrush Email Scraper is to enter several specific keywords rather than relying on one broad term. For example, `ecommerce`, `digital marketer`, `ecommerce manager`, and `online store owner` can provide different search coverage.

### 🔹 Semrush Email Scraper – Key Features

Semrush Email Scraper combines keyword-based discovery with configurable email-domain targeting. This makes it useful when your objective is not simply to find pages, but to identify contact information associated with relevant search results.

#### 🎯 Keyword-based email discovery

Enter multiple search terms or queries in the **Keywords or Queries** field. Each keyword is processed as an individual search target, allowing you to build a more focused prospecting workflow.

Specific phrases can often narrow the type of people, businesses, or profiles you are looking for. Instead of using only `fitness`, for example, you can use terms such as `fitness coach`, `fitness trainer`, `fitness influencer`, or `online fitness coach`.

#### 🌍 Location targeting

The optional **Region / Location** field lets you narrow the search by manually entering a country, state, or city.

Leaving the location empty allows the search to run without a geographic filter. Adding a location is useful when your lead generation campaign focuses on a particular market or territory.

#### ✉️ Custom email-domain targeting

You can specify which email-domain suffixes the actor should look for. The default input is `@gmail.com`, but you can enter multiple domains such as:

- `@gmail.com`
- `@yahoo.com`
- `@outlook.com`
- `@hotmail.com`
- Your own business or organization domain

This allows the Semrush Email Scraper to focus extraction on the email domains most relevant to your campaign.

#### 🚫 Exclude unwanted descriptions

The **Exclude words** filter helps reduce irrelevant results. When a description contains one of your excluded terms, that result is skipped rather than having an email extracted from it.

Single words are matched as complete words without regard to letter case, while multi-word phrases are matched as phrases.

> **⚡ Example**
>
> - Keywords: `digital marketer`, `marketing agency`, `SEO consultant`
> - Location: `United States`
> - Domains: `@gmail.com`, `@yahoo.com`
> - Exclude words: `crypto`, `onlyfans`
>
> This configuration focuses the Semrush Email Scraper on marketing-related prospects while filtering descriptions containing unwanted terms.

### 🔎 Semrush Email Scraper – What Data Can You Extract?

The standard dataset view is structured around five useful fields. These fields combine the discovered email address with the search context and source information.

| Field         | Description                                                 |
| ------------- | ----------------------------------------------------------- |
| `keyword`     | The keyword or query used to discover the result            |
| `title`       | Title associated with the search result                     |
| `description` | Search-result description containing the discovered context |
| `url`         | URL of the source result                                    |
| `email`       | Email address matching the selected domain suffix           |

The result is more useful than an email-only list because each contact remains connected to its keyword, source URL, and descriptive context.

#### 📊 Example output

```json
{
  "keyword": "digital marketer",
  "title": "Example Digital Marketing Profile",
  "description": "Digital marketer helping businesses grow online. Contact: example@gmail.com",
  "url": "https://www.semrush.com/...",
  "email": "example@gmail.com"
}
```

> **📦 Output format**
>
> - Results are stored in an Apify Dataset
> - The dataset provides a structured table view
> - URLs can be viewed as links
> - Email addresses can be exported from the dataset in standard Apify-supported formats

### 🚀 Semrush Email Scraper – How to Use It

Using the Semrush Email Scraper requires only a few input settings.

#### 1. Enter your keywords

Add one or more search terms to the **Keywords or Queries** field.

Examples:

- `ecommerce manager`
- `digital marketer`
- `SEO consultant`
- `marketing agency`
- `online business owner`

Multiple relevant keywords can broaden your discovery coverage while keeping each search intent clearly defined.

#### 2. Add a location when needed

Enter a country, state, or city in **Region / Location**.

For global research, leave this field blank. For regional lead generation, use a specific location such as `United States`, `London`, `Canada`, or another geographic target.

#### 3. Select email domains

Use **E-mail domain suffixes** to control which addresses are extracted.

For example:

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

#### 4. Set the maximum email target

The **Max Emails** value accepts an integer from **1 to 10,000** and defaults to **5**.

The configured target applies to each keyword + domain combination. For example, with 3 keywords, 2 domains, and a target of 20, the actor processes six keyword/domain combinations, with up to 20 matching addresses targeted for each combination when available.

The configured target is not a guarantee. Results depend on what relevant public information is available.

#### 5. Add exclusion terms

Use **Exclude words** to remove unwanted descriptions from consideration.

For example:

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

#### 6. Start the Actor

Run the actor in Apify and monitor the resulting dataset. Contacts are added incrementally as they are discovered.

> **✅ Quick-start recommendation**
>
> - Start with 3–5 highly relevant keywords
> - Use 2–5 email domains when appropriate
> - Leave location blank for broad research
> - Add a location for regional campaigns
> - Increase the email target when deeper discovery is needed
> - Use exclusion terms when irrelevant categories appear frequently

### 🔍 How to Scrape Semrush Emails with Keywords

The most important factor in Semrush Email Scraper results is search intent. Broad keywords can generate a wider range of results, while specific keywords can produce more targeted prospects.

For a B2B lead generation campaign, consider combining professional roles, industries, and business activities.

Examples include:

- `software founder`
- `ecommerce manager`
- `digital marketing agency`
- `SEO specialist`
- `startup founder`
- `online retailer`
- `marketing consultant`

You can also combine related phrases with different email-domain targets. This creates multiple search combinations and can increase coverage when relevant public contact information exists.

However, more inputs do not guarantee more email addresses. The actor can only extract addresses that are present in the searchable result descriptions and match the email-domain filters you specified.

### 🌐 Can You Target a Specific Country or City?

Yes. Semrush Email Scraper supports an optional location input for geographic targeting.

For example, a real-estate research campaign could use:

```json
{
  "keywords": [
    "real estate agent",
    "property manager",
    "real estate broker"
  ],
  "location": "Canada"
}
```

You can use a city, state, or country depending on the market you want to research.

Location targeting can make a lead generation workflow more relevant when your objective is regional prospecting, localized market research, or country-specific business discovery.

### ✉️ Can You Search Multiple Email Domains?

Yes. The actor supports a list of custom email-domain suffixes.

For example:

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

Each keyword and domain combination is processed separately. This is useful when you want to compare different public email-domain types or increase the range of contact addresses considered by the extraction process.

You can also enter a domain relevant to your specific research requirements.

### 🎯 Semrush Email Scraper – Use Cases

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

#### 💼 B2B lead generation

Discover email contacts associated with business-focused searches such as:

- Business owners
- Marketing professionals
- Consultants
- Agency teams
- Ecommerce professionals
- Founders and operators

#### 📈 Sales prospecting

Build targeted prospect lists by combining a role, business activity, or industry with a location and selected email domains.

#### 🔍 Market research

Use keyword combinations to identify contact opportunities connected with specific industries, services, or business categories.

#### 🛍️ Ecommerce research

Search for ecommerce-related profiles and businesses using terms such as `ecommerce`, `online store`, `Shopify consultant`, `retail manager`, or similar queries.

#### 📣 Marketing outreach research

Marketing teams can use relevant keywords to discover publicly listed contact information associated with digital marketing, SEO, advertising, content, and growth-related searches.

#### 🧩 Niche prospecting

Specific long-tail terms can help build specialized contact lists for narrow industries or professional roles.

> **📌 Use-case principle**
>
> The actor is most useful when your search terms clearly describe the audience you want to discover. Better keyword intent generally makes the resulting dataset easier to analyze and qualify.

### 🧾 Input – What Can You Configure?

The required input is **Keywords or Queries**. The remaining fields are optional and provide additional control.

| Input           | Type    | Default                         | Details                                            |
| --------------- | ------- | ------------------------------- | -------------------------------------------------- |
| `keywords`      | Array   | `ecommerce`, `digital marketer` | Search terms or queries                            |
| `location`      | String  | Empty                           | Optional country, state, or city                   |
| `customDomains` | Array   | `@gmail.com`                    | Email-domain suffixes to match                     |
| `maxEmails`     | Integer | `5`                             | Target per keyword + domain combination            |
| `excludeWords`  | Array   | Empty                           | Words or phrases that exclude a result description |

The maximum configured value for `maxEmails` is 10,000. The actual number of extracted emails can be lower because public results may not contain enough matching contact information.

#### 📝 Complete input example

```json
{
  "keywords": [
    "ecommerce manager",
    "digital marketer",
    "SEO consultant"
  ],
  "location": "United States",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

### 📤 Output – What Does the Dataset Contain?

The Semrush Email Scraper stores discovered records in an Apify Dataset with a structured table view.

Each displayed record contains:

```json
{
  "keyword": "ecommerce manager",
  "title": "Example Ecommerce Professional",
  "description": "Ecommerce professional and consultant. Email: example@gmail.com",
  "url": "https://www.semrush.com/...",
  "email": "example@gmail.com"
}
```

The `keyword` field tells you which search term produced the result. The `title`, `description`, and `url` preserve useful source context, while `email` provides the contact address extracted from that result.

Duplicate email addresses are tracked during the run, helping keep the collected contact set unique.

### 💰 Pricing and Result Limits

No fixed monetary price is specified in the provided actor configuration, so this README does not state a specific per-result price.

The actor configuration does define a result-target input and notes that lower values can finish sooner and cost less. The configured `maxEmails` range is **1–10,000** per keyword + domain combination.

The actor also applies a **100-email ceiling for free-tier runs when the requested limit would exceed that ceiling**. Paid runs do not receive that same actor-imposed free-tier ceiling.

> **💡 Important about results**
>
> - `maxEmails` is a target, not a guarantee
> - Publicly available matching emails determine the actual result count
> - Narrow searches may produce fewer contacts
> - Multiple keywords and domains can increase search coverage
> - A larger target may require broader or deeper search activity

### ⚡ Tips and Best Practices

#### 🔑 Use specific keywords

Specific search phrases can make your lead generation research more focused than a single broad industry word.

#### 🌍 Use location strategically

Leave location blank for broad discovery. Add a geographic term when regional relevance matters.

#### ✉️ Test multiple domains

Starting with `@gmail.com` is simple, while adding other relevant domains can expand the types of public email addresses considered.

#### 🚫 Filter irrelevant categories

Use **Exclude words** when certain topics repeatedly produce contacts that are outside your target audience.

#### 📊 Review the dataset context

Do not rely on the email field alone. The keyword, title, description, and URL provide important context for prospect qualification and downstream research.

#### ⏱️ Allow sufficient run time

Broad keyword/domain combinations can require more searching. The provided input guidance uses a default run timeout of 3600 seconds, and longer or wider searches may require appropriate run-time settings in Apify.

### ❓ Frequently Asked Questions

#### ❓ What is Semrush Email Scraper used for?

Semrush Email Scraper is designed to discover publicly visible email addresses associated with relevant Semrush search results. It can be used for lead generation, contact research, prospect discovery, and market research.

#### ❓ How do I get more emails from Semrush?

Use several specific, closely related keywords instead of relying on a single broad phrase. You can also test additional email domains and broaden or remove the location filter when appropriate.

#### ❓ Can I scrape Semrush emails by country or city?

Yes. Enter a country, state, or city in the `location` field to narrow the search geographically. Leave it empty for searches without a geographic filter.

#### ❓ Can I search for Gmail and Yahoo emails together?

Yes. Add both `@gmail.com` and `@yahoo.com` to `customDomains`. You can provide multiple email-domain suffixes in the same run.

#### ❓ What does maxEmails mean in Semrush Email Scraper?

`maxEmails` controls the target number of matching addresses for each keyword + domain combination. It is not a guaranteed number of results.

#### ❓ Why did I receive fewer emails than my maxEmails value?

The target does not guarantee availability. Search results may contain fewer publicly visible matching addresses, or your keywords, location, and exclusion filters may be restrictive.

#### ❓ Does the actor remove duplicate email addresses?

Yes. Email addresses already discovered during the run are tracked so the same address is not repeatedly added as a new contact.

#### ❓ Can I exclude certain types of profiles?

Yes. Add words or phrases to `excludeWords`. If an excluded term appears in a result description, that result is skipped.

#### ❓ What fields are included in the Semrush email dataset?

The standard dataset view includes `keyword`, `title`, `description`, `url`, and `email`. These fields provide both contact information and source context.

#### ❓ Is Semrush Email Scraper suitable for B2B lead generation?

It can be used for B2B prospect research when your keywords describe relevant business roles, industries, or services. The quality of the resulting leads depends on the search terms and publicly available information.

#### ❓ Does a higher email target guarantee more leads?

No. A higher target allows deeper collection attempts, but the actor cannot create or infer email addresses that are not publicly present in matching search results.

### 🛠️ Support

For questions, customization requests, or actor-related support, you can contact me directly by email.

- 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": [
    "ecommerce",
    "digital marketer"
  ],
  "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": [
        "ecommerce",
        "digital marketer"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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