# CarGurus Email Scraper (`email_scraper/cargurus-email-scraper`) Actor

CarGurus Email Scraper extracts publicly indexed CarGurus email leads using targeted keywords, locations, and email domains. Build focused automotive lead lists with structured contact data, filtering, duplicate protection, and scalable search coverage.

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

### 🔹 CarGurus Email Scraper – Overview

- **CarGurus Email Scraper** is an Apify Actor designed to discover publicly indexed email addresses associated with CarGurus pages by searching with targeted keywords, email domains, and optional geographic terms.

- Instead of manually searching through large numbers of search results, you can provide a list of keywords such as *Car Seller*, *manager*, *dealer*, or *new car*, select the email domains you want to target, and let the Actor collect matching email addresses from publicly available search-result information.

- The **CarGurus Email Scraper** is useful for lead generation, prospect research, automotive business research, dealership discovery, contact-list building, and other workflows where publicly listed CarGurus contact information is relevant.

> **💡 Key idea:** Give the Actor specific search terms and email-domain suffixes, optionally add a location, and it searches publicly indexed CarGurus results for matching email addresses.

- The Actor returns structured records containing the search keyword, result title, description snippet, result URL, and discovered email address.

### 🔍 CarGurus Email Scraper – Key Features

- **Keyword-based email discovery** — Search using one or many targeted keywords.

- **Multiple email domains** — Target domains such as `@gmail.com`, `@yahoo.com`, `@outlook.com`, or other domain suffixes you specify.

- **Location targeting** — Add a country, state, or city to make the search more geographically focused.

- **Exclude-word filtering** — Skip search-result snippets containing words or phrases you do not want to process.

- **Structured lead output** — Each discovered email is saved together with useful search-result context.

- **Duplicate protection** — The Actor tracks already discovered email addresses so the same address is not repeatedly added to the dataset.

- **Incremental dataset storage** — Results are pushed to the Apify dataset as they are discovered.

- **Progress persistence** — Run progress is stored so processing can resume after an interruption.

- **Large search coverage** — The Actor can paginate through many search-result pages for each keyword and email-domain combination.

- **Target-based collection** — The `maxEmails` setting controls the collection target for each keyword + domain combination.

> **📌 Important:** The Actor searches publicly indexed information. It does not guarantee that a particular CarGurus profile will contain an email address, and the requested target may not always be reached.

### 📧 CarGurus Email Scraper – What Data Can You Extract?

- The main purpose of the **CarGurus Email Scraper** is email discovery from publicly available CarGurus search-result information.

- For every qualifying result, the Actor can return:

| Field         | Description                                            |
| ------------- | ------------------------------------------------------ |
| `network`     | Identifies the source network as CarGurus.com          |
| `keyword`     | Keyword used to find the result                        |
| `title`       | Title of the search result                             |
| `description` | Description/snippet associated with the result         |
| `url`         | URL of the discovered search result                    |
| `email`       | Matching email address found in the result description |

> **📦 Output example**
>
> ```json
> {
>   "network": "CarGurus.com",
>   "keyword": "Car Seller",
>   "title": "Example Car Seller",
>   "description": "Contact us at example@gmail.com for more information.",
>   "url": "https://www.cargurus.com/...",
>   "email": "example@gmail.com"
> }
> ```

- The dataset configuration presents the main lead fields as **Keyword, Title, Description, Url, and Email**, making the results convenient to inspect in a table.

- The Actor extracts email addresses matching the domain suffixes you provide. For example, if `@gmail.com` is selected, the search focuses on Gmail addresses.

- Only addresses discovered in the processed search-result descriptions are collected. This means the Actor's output depends on what information is publicly indexed and visible in the search results.

### 🔹 CarGurus Email Scraper – How to Use It

- Using the **CarGurus Email Scraper** is straightforward:

#### 1. 🔎 Add Keywords

- Enter one or more keywords or queries in the **Keywords or Queries** field.

- Use specific terms instead of relying on one very broad keyword.

- Example:

```text
Car Seller
Car Dealer
Dealership Manager
Used Car Dealer
New Car
Automotive Manager
```

#### 2. 🌎 Add an Optional Location

- Enter a country, state, or city when you want to narrow your search geographically.

- For example:

```text
United States
Texas
Dallas
Toronto
Montreal
```

- Leave the location blank when you want broader coverage.

#### 3. 📩 Select Email Domains

- Enter the email suffixes you want to search for.

- Example:

```text
@gmail.com
@yahoo.com
@outlook.com
@hotmail.com
```

- You can also provide business-domain suffixes when they are relevant to your lead-generation workflow.

#### 4. 🎯 Set the Maximum Email Target

- `maxEmails` determines how many addresses the Actor attempts to collect for each keyword + domain combination.

- The supported range is **1 to 10,000**, with a default value of **10** in the Actor input configuration.

- A larger target can require more search pages and may take longer when suitable public results are limited.

#### 5. 🚫 Add Exclude Words

- Use `excludeWords` when you want to skip snippets containing specific words or phrases.

- Example:

```text
crypto
onlyfans
```

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

> **⚙️ Recommended workflow:** Start with several highly relevant keywords, use a few appropriate email domains, and add a location only when geographic targeting is important.

### 🔹 How to Scrape CarGurus Emails with Targeted Keywords

- The easiest way to improve **CarGurus Email Scraper** results is to make your search terms specific enough to identify the type of contact you need.

- Instead of using only:

```text
car
```

- Consider related searches such as:

```text
Car Seller
Car Dealer
Dealership
Sales Manager
Used Car Sales
Automotive Sales
Dealer Manager
New Car Dealer
```

- Multiple related keywords give the Actor additional search combinations to process.

- You can also combine keyword targeting with different email domains. For example, a campaign using several automotive keywords and several common email providers can explore a broader range of publicly indexed results.

> **💡 Search tip:** If a run produces fewer emails than expected, try adding related keywords, broadening the location, or adding relevant email domains. Sparse results usually indicate that the available public search data is limited or that the query is too narrow.

### 🔹 Can You Use CarGurus Email Scraper for Local Lead Research?

- Yes. The optional `location` input allows you to include a country, state, or city in the search query.

- This is useful when your lead-generation workflow is focused on a particular market.

- For example, combining:

```text
Keyword: Car Dealer
Location: Texas
Domain: @gmail.com
```

- creates a more focused search than using the keyword alone.

- Geographic targeting does not guarantee that every returned result belongs to the specified area. It simply narrows the search using the location term.

### 🧩 CarGurus Email Scraper – Use Cases

- **🚗 Automotive lead generation** — Discover publicly indexed email contacts associated with relevant CarGurus search results.

- **🏪 Dealership research** — Search for dealerships, sellers, managers, and related automotive terms.

- **📍 Local prospecting** — Focus searches on selected cities, states, countries, or markets.

- **📊 Sales prospect research** — Build structured lists of publicly discoverable automotive contacts.

- **📧 Email-domain research** — Compare results across Gmail, Yahoo, Outlook, Hotmail, or selected business domains.

- **🔎 Market research** — Investigate publicly indexed automotive businesses and contact information.

- **🗂️ Lead database preparation** — Export structured records from the Apify dataset for further processing.

- **🤖 Automated workflows** — Use the Actor as part of an Apify-based data collection process instead of performing repetitive searches manually.

> **🎯 Best fit:** The Actor is particularly useful when your research starts with a *keyword + optional location + email domain* rather than a predefined list of specific CarGurus URLs.

### ⚙️ Input

- The **CarGurus Email Scraper** accepts the following public input fields:

| Input           | Type    | Required | Purpose                                                    |
| --------------- | ------- | -------: | ---------------------------------------------------------- |
| `keywords`      | Array   |      Yes | Search keywords or queries                                 |
| `location`      | String  |       No | Country, state, or city used to narrow searches            |
| `customDomains` | Array   |       No | Email-domain suffixes to target                            |
| `maxEmails`     | Integer |       No | Maximum target per keyword + domain combination            |
| `excludeWords`  | Array   |       No | Words or phrases that cause a result snippet to be skipped |

#### 🔎 Keywords or Queries

- Enter one or more search terms.

- The default configuration includes:

```text
new car
Car Seller
manager
```

- You can replace these with terms appropriate to your research objective.

#### 🌎 Region / Location

- This optional field accepts a manually entered country, state, or city.

- Leave it empty to search without a geographic filter.

#### 📩 E-mail Domain Suffixes

- Specify the email suffixes you want to include.

- The default is:

```text
@gmail.com
```

#### 🎯 Max Emails

- The input supports values from **1 to 10,000**.

- The default is **10**.

- The target applies to each keyword + domain combination. Actual results can be lower because the Actor can only collect addresses that are publicly discoverable and match the search criteria.

#### 🚫 Exclude Words

- Add terms that should cause matching result snippets to be skipped.

- Leave the field empty when no exclusions are required.

> **⚠️ Important:** A result whose description contains an excluded word or phrase is skipped before email extraction. Matching is case-insensitive.

### 📤 Output

- The **CarGurus Email Scraper** stores results in the Apify dataset.

- Each lead contains:

```json
{
  "network": "CarGurus.com",
  "keyword": "new car",
  "title": "Example Result",
  "description": "Publicly indexed result description...",
  "url": "https://www.cargurus.com/...",
  "email": "example@gmail.com"
}
```

- The dataset view is designed as a table with the following columns:

- `keyword`

- `title`

- `description`

- `url`

- `email`

> **📦 Structured output:** The resulting dataset is organized so that you can review discovered contacts together with their search context rather than receiving only a raw list of email addresses.

### 💰 Pricing and Limits

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

- The code distinguishes between free and paid Apify usage.

- Free usage applies a maximum collection limit of **100 emails** to the configured target when the requested limit exceeds that threshold.

- Paid usage does not apply that free-tier ceiling.

> **💡 Cost-control tip:** Lower `maxEmails`, use focused keywords, and avoid unnecessarily broad combinations when you want shorter runs and more controlled resource usage.

- Actual Apify platform charges, if applicable, depend on your Apify account, plan, and usage environment rather than a fixed price defined in this Actor documentation.

### 🛠️ Tips and Best Practices

- **Use specific keywords.** Terms such as *Car Seller*, *Dealer Manager*, and *Used Car Dealer* can provide more targeted searches than very broad terms.

- **Use several related keywords.** Different job titles and business descriptions can expose different publicly indexed results.

- **Add relevant email domains.** If your objective is broader contact discovery, consider multiple common email providers or appropriate business domains.

- **Use location strategically.** Add a location for regional campaigns, but remove it when broader coverage is more important.

- **Keep exclusions focused.** Too many exclusion terms can remove potentially useful results.

- **Increase the run timeout for wide searches.** Large keyword and domain combinations can take longer to process.

- **Monitor result quality.** A higher email target does not guarantee more contacts. The Actor depends on publicly indexed information.

- **Start small.** Test a few keywords and domains first, review the output, and then expand the search strategy.

> **📌 Remember:** More combinations can increase coverage, but they can also increase runtime. A focused search strategy is usually easier to evaluate and refine.

### ❓ Frequently Asked Questions

#### 🔹 What is CarGurus Email Scraper?

- **CarGurus Email Scraper** is an Apify Actor that searches publicly indexed CarGurus results using keywords and email-domain filters and extracts matching email addresses from available result descriptions.

#### 🔹 How does CarGurus Email Scraper find emails?

- The Actor searches publicly indexed CarGurus information for each keyword and selected email-domain suffix, processes the returned search-result descriptions, and extracts matching email addresses.

#### 🔹 Can I search CarGurus emails by city or country?

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

#### 🔹 Can I use multiple keywords in CarGurus Email Scraper?

- Yes. `keywords` accepts an array, allowing you to run several related searches during one Actor run.

#### 🔹 Can I search multiple email domains?

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

#### 🔹 Can I exclude unwanted results?

- Yes. Use `excludeWords` to skip result descriptions containing specified words or phrases.

#### 🔹 Why did CarGurus Email Scraper return fewer emails than my target?

- The target is not a guarantee. Results depend on publicly indexed CarGurus information, the selected keywords, locations, domains, available search results, duplicate addresses, and the Actor's stopping conditions.

#### 🔹 Does CarGurus Email Scraper collect private email addresses?

- The Actor is designed to extract email addresses that appear in publicly available, indexed search-result information. It does not provide a mechanism for accessing private account information.

#### 🔹 What happens when the same email appears multiple times?

- The Actor maintains a set of previously discovered email addresses and avoids adding the same email repeatedly.

#### 🔹 Is the output structured?

- Yes. Results are pushed into an Apify dataset with keyword, title, description, URL, email, and source-network information.

#### 🔹 Can I use CarGurus Email Scraper for lead generation?

- Yes. The structured output can support automotive prospect research, dealership research, sales research, and other workflows based on publicly discoverable contact information.

### 📌 Important Notes

- **CarGurus Email Scraper does not guarantee a specific number of leads.** Search availability and public indexing determine how many matching addresses can actually be discovered.

- Search-result content can change over time. A result available during one run may not appear during another run.

- Extremely narrow keywords can produce sparse results.

- Broad searches can require substantially more processing.

- The Actor has internal stopping conditions to avoid continuing indefinitely when pages stop producing useful new email results.

- Search processing for an individual keyword + domain combination can examine many pages, but available results can still end earlier.

> **🔐 Privacy note:** Use collected contact information responsibly and comply with applicable privacy, marketing, data-protection, and anti-spam requirements.

### 🚀 Support

- If you need help using the **CarGurus Email Scraper**, start by checking your keywords, email domains, location, exclusions, and maximum target.

- For best results, test a small configuration first and expand it after reviewing the returned dataset.

- For customization, improvements, or a bespoke build related to this Actor, contact:

**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": [
    "Business",
    "BMW X3",
    "Car dealar"
  ],
  "location": "",
  "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": [
        "Business",
        "BMW X3",
        "Car dealar"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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