# Edmunds Email Scraper (`email_scraper/edmunds-email-scraper`) Actor

Extract targeted contacts with **Edmunds Email Scraper**. Search Edmunds using multiple keywords, locations, and email domains to discover publicly listed email addresses. Filter unwanted profiles and export structured lead data with keyword, title, description, URL, and email.

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

### 🔎 Edmunds Email Scraper – Overview

**Edmunds Email Scraper** is an Apify Actor designed to find publicly listed email addresses associated with search results from Edmunds.com. It uses your search keywords, optional location, and selected email-domain suffixes to identify relevant Edmunds pages and extract matching email addresses from publicly visible search-result descriptions.

Instead of manually searching Edmunds.com and checking pages one by one, you can provide targeted keywords such as `Electric Cars`, `Used Cars`, `Car Dealer`, or `Automotive`, then let the Actor process the corresponding search combinations.

> **💡 Edmunds Email Scraper at a glance**
>
> - Search Edmunds.com using multiple keywords
> - Filter searches by country, state, or city
> - Target specific email domains such as `@gmail.com`
> - Exclude unwanted words or phrases
> - Collect unique email addresses
> - Return the matching keyword, title, description, URL, and email
> - Process multiple keyword + domain combinations
> - Store results incrementally in the Apify Dataset

The Actor is particularly useful for lead research, contact discovery, market research, prospecting, and building structured Edmunds-related contact datasets from publicly indexed information.

***

### 🔹 Edmunds Email Scraper – Key Features

The Actor combines keyword targeting with email-domain filtering so you can create focused searches instead of relying on one broad query.

#### 🎯 Targeted Keyword Search

Enter one or multiple search terms through the `keywords` input.

- `Electric Cars`
- `Used Cars`
- `Car Dealer`
- `Auto Repair`
- `Automotive`
- `Car Sales`
- `Vehicle Dealer`

Using several closely related keywords can increase search coverage because each keyword is processed separately.

#### 📍 Optional Location Filtering

The `location` field lets you narrow searches to a specific geographic area.

- Country
- State
- City
- Other manually entered regional terms

For example, you could use `New York` with an automotive-related keyword to make the search more geographically focused.

#### 📧 Email Domain Filtering

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

- `@gmail.com`
- `@yahoo.com`
- `@outlook.com`
- `@hotmail.com`
- Business or custom domains

This makes the Edmunds email scraper useful when you want to focus on a particular type of contact address.

#### 🚫 Exclude Unwanted Results

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

For example:

- `crypto`
- `onlyfans`
- Other irrelevant words
- Specific phrases

Single words are matched as whole words without regard to letter case, while phrases are checked as case-insensitive text.

#### ♻️ Unique Email Collection

The Actor keeps track of collected email addresses during the run and avoids pushing the same email address repeatedly.

This helps produce a cleaner dataset when different keyword or domain searches discover the same publicly listed contact.

> **📌 Why this matters**
>
> Multiple search combinations can overlap. Deduplication helps prevent repeated email records from unnecessarily filling your dataset.

***

### 📊 Edmunds Email Scraper – What Data You Can Extract

The Actor produces structured lead records containing the information associated with each discovered email.

The actual dataset record pushed by the Actor contains:

| Field         | Description                                          |
| ------------- | ---------------------------------------------------- |
| `network`     | Source network identifier, `Edmunds.com`             |
| `keyword`     | Keyword that produced the result                     |
| `title`       | Title of the matching search result                  |
| `description` | Public search-result description/snippet             |
| `url`         | URL associated with the search result                |
| `email`       | Extracted email address matching the selected domain |

The default Apify Dataset view displays these fields:

- `keyword`
- `title`
- `description`
- `url`
- `email`

The `network` field is included in the pushed data but is not part of the default table transformation.

#### 📋 Example Output

A simplified example of the structured output is:

```json
{
  "network": "Edmunds.com",
  "keyword": "Used Cars",
  "title": "Example Automotive Profile",
  "description": "Example contact information including contact@example.com",
  "url": "https://www.edmunds.com/example",
  "email": "contact@example.com"
}
```

The exact values depend on what publicly indexed information is available for your selected searches.

> **⚠️ Important**
>
> The Actor does not guarantee that every search will produce an email address. Results depend on publicly indexed Edmunds information, the selected keywords, email domains, location filters, and search-result availability.

***

### ⚙️ Edmunds Email Scraper – How to Use It

Getting started requires only a few input settings.

#### 1. Enter Your Keywords

Add one or more relevant search terms in `keywords`.

For example:

```json
{
  "keywords": [
    "Electric Cars",
    "Used Cars",
    "Car Dealer"
  ]
}
```

More specific related keywords can help you target different types of search results.

#### 2. Add a Location

If you want geographically focused results, enter a location.

```json
{
  "location": "New York"
}
```

Leave it empty when you want to search without a geographic filter.

#### 3. Select Email Domains

Use `customDomains` to define which email suffixes should be extracted.

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

#### 4. Set the Email Target

`maxEmails` 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 collected emails for each combination, subject to available results and deduplication.

#### 5. Add Exclusion Terms

If you want to skip irrelevant snippets, use `excludeWords`.

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

#### 6. Run the Actor

Start the Actor from Apify using your configured input. Results are pushed incrementally to the Dataset as they are discovered.

> **🚀 Simple workflow**
>
> - Enter keywords
> - Optionally add a location
> - Select email domains
> - Set the email target
> - Optionally exclude unwanted terms
> - Start the Actor
> - Review structured results in the Dataset

***

### 🔍 How to Scrape Edmunds Email Addresses with Keywords

The most practical approach is to build a keyword list around the type of contact or market you are researching.

Instead of using only a broad term such as `Cars`, create several related searches.

For an automotive lead campaign, you might use:

- `Used Cars`
- `Car Dealer`
- `Auto Dealer`
- `Electric Cars`
- `Luxury Cars`
- `Car Sales`
- `Automotive`
- `Vehicle Dealer`

Then combine those searches with relevant email domains.

For example:

```json
{
  "keywords": [
    "Used Cars",
    "Car Dealer",
    "Electric Cars"
  ],
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "location": "New York",
  "maxEmails": 20
}
```

This creates separate search targets for each keyword/domain combination.

> **💡 Search tip**
>
> If a run produces fewer results than expected, broaden the keywords, add related search terms, try additional email domains, or remove an overly restrictive location filter.

***

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

Yes. The `location` input is specifically designed to narrow searches geographically.

You can enter values such as:

- `United States`
- `New York`
- `Los Angeles`
- `Toronto`
- `London`

The location is added to the search query when provided.

Leaving the field blank allows the Actor to search without a geographic filter.

This makes the Edmunds email scraper suitable for both broad market research and more focused regional prospecting.

***

### 📧 Can You Search Multiple Email Domains?

Yes. The Actor accepts a list of custom email-domain suffixes.

For example:

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

Each keyword and domain combination is processed independently.

This is useful when researching different types of publicly listed contact addresses and can expand coverage compared with searching for only one email provider.

***

### 🚀 Edmunds Email Scraper – Use Cases

The Actor can support several legitimate research and business workflows involving publicly indexed contact information.

#### 💼 Lead Research

Build structured contact datasets around automotive-related searches and publicly visible Edmunds results.

- Automotive prospect research
- Dealer discovery
- Market research
- Contact-list preparation
- Business intelligence

#### 🔎 Market Research

Search multiple automotive-related keywords to understand which types of businesses and profiles appear in publicly indexed results.

#### 📍 Regional Prospecting

Combine keywords with locations to focus research on a particular city, state, country, or market.

#### 📊 Dataset Building

Create structured datasets containing the search keyword, result title, description, URL, and discovered email address.

#### 🤝 Business Outreach Research

Where appropriate and lawful, publicly listed contact information can be organized for business research and outreach workflows that respect applicable laws, platform rules, and recipient preferences.

> **⚠️ Responsible use**
>
> Only use collected information in ways permitted by applicable privacy, marketing, anti-spam, and data-protection laws. Respect Edmunds terms, applicable third-party terms, and recipient opt-out preferences.

***

### 📝 Input

The Actor supports the following inputs.

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

#### `keywords`

A list of search terms.

Default:

```json
[
  "Electric Cars",
  "Used Cars"
]
```

#### `location`

Optional geographic filter. The default is an empty value.

#### `customDomains`

Email suffixes to include. The default is:

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

#### `maxEmails`

Accepts values from **1 to 10,000** in the Actor input configuration.

The code applies the configured target independently to each keyword/domain pair.

#### `excludeWords`

Optional list of words or phrases. Matching is case-insensitive.

***

### 📦 Output

The Actor stores discovered records in the Apify Dataset.

Each pushed record includes:

```json
{
  "network": "Edmunds.com",
  "keyword": "Electric Cars",
  "title": "Example Result",
  "description": "Public search-result description",
  "url": "https://www.edmunds.com/example",
  "email": "example@gmail.com"
}
```

The default Dataset table focuses on:

- Keyword
- Title
- Description
- URL
- Email

This structure makes the results easy to review and process as a lead or research dataset.

***

### 💰 Pricing and Result Limits

The Actor configuration does not define a monetary price, so no specific dollar amount is stated here.

However, the Actor code contains a plan-based result limitation:

- Free users are limited to a maximum of **100 emails**
- Paid users do not have this Actor-level 100-email restriction
- `maxEmails` can still control the requested collection target
- Results depend on what can actually be found publicly

The configured `maxEmails` value is applied per keyword + domain combination, while the Actor also deduplicates already discovered email addresses.

> **💡 Example**
>
> If you use 2 keywords, 3 domains, and `maxEmails = 10`, the Actor processes six combinations, targeting up to 10 addresses per combination, subject to available search results and duplicate removal.

***

### 💡 Tips and Best Practices

- Use several closely related keywords instead of relying on one broad term.
- Combine job, business, service, and product-related search phrases where relevant.
- Add a location when regional targeting is important.
- Remove the location filter when you need broader coverage.
- Try multiple email domains when one domain produces limited results.
- Use `excludeWords` to reduce irrelevant snippets.
- Start with a moderate `maxEmails` value before increasing it.
- Remember that a higher target does not guarantee more results.
- Review the Dataset for duplicate or overlapping research targets.
- Use only publicly available information and follow applicable legal and platform requirements.

***

### ❓ Frequently Asked Questions

#### What is Edmunds Email Scraper?

Edmunds Email Scraper is an Apify Actor that searches publicly indexed Edmunds.com results using specified keywords and extracts email addresses matching selected email-domain suffixes.

#### How do I scrape Edmunds emails?

Enter keywords in the `keywords` field, optionally specify a location, select email domains, set `maxEmails`, and run the Actor. Matching public search-result information is processed and email addresses are added to the Dataset.

#### Can I search Edmunds emails by city?

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

#### Can I use multiple keywords?

Yes. The Actor accepts a list of keywords and processes each keyword separately.

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

Yes. Add multiple domain suffixes to `customDomains`, such as `@gmail.com` and `@yahoo.com`.

#### Why did my run return fewer emails than my target?

The target is not a guarantee. The Actor can only collect email addresses available in the publicly indexed search results matching your criteria. Narrow keywords, restrictive locations, limited domains, or insufficient indexed results can reduce the final count.

#### Does the Actor remove duplicate emails?

Yes. The Actor tracks previously collected email addresses and does not push an already registered email again.

#### What happens when I use exclude words?

If an excluded word or phrase appears in a result description, that snippet is skipped and no email is collected from that snippet.

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

No. The Actor code applies the target independently to each keyword + domain combination. Duplicate emails can still reduce the final number of unique records.

#### What format are the results returned in?

Results are stored as structured Dataset records. The default Dataset view displays keyword, title, description, URL, and email, while the pushed record also contains the `network` field.

***

### 🛠️ Support

If you need help with the Actor, have questions about its configuration, or want to discuss a customization, you can contact me directly.

- **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": [
    "Electric Cars",
    "Used Cars"
  ],
  "location": "New york",
  "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": [
        "Electric Cars",
        "Used Cars"
    ],
    "location": "New york",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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