# BBB Email Scraper (`email_scraper/bbb-email-scraper`) Actor

Bbb Email Scraper extracts publicly indexed business emails using targeted keywords, locations, and custom email domains. Build structured Bbb leads with titles, descriptions, URLs, and emails for lead generation, prospecting, and business research.

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

### 🔍 Bbb Email Scraper

Bbb Email Scraper is an Apify Actor for discovering publicly indexed email addresses associated with Bbb search results. It uses targeted keywords, optional locations, and configurable email domain suffixes to build a structured collection of contact leads from publicly available search-result information.

You provide one or more keywords such as `Contractor` or `Plumber`, optionally add a country, state, or city, and choose the email domains you want to search for. The Actor then processes the configured keyword and domain combinations and returns discovered email addresses together with the related title, description, keyword, and URL.

The resulting dataset is useful for lead research, business research, prospect discovery, market research, and structured contact-data collection. Because results depend on publicly indexed information, the Actor only returns email addresses that can actually be found in the available search results.

### 🧩 What Is Bbb Email Scraper?

Bbb Email Scraper is designed for users who need structured Bbb contact data without manually reviewing search results one by one.

Instead of entering individual profile URLs, you can provide search-oriented keywords and let the Actor work through the corresponding searches. Multiple keywords can be supplied in a single run, and each keyword can be combined with multiple email domain suffixes.

For example, a user researching service providers could search for `Contractor`, `Plumber`, `Roofing Contractor`, and `Electrical Contractor`, optionally targeting a location such as `New York`.

The Actor returns each newly discovered email together with contextual information from the associated search result. This makes the dataset easier to review, filter, and use for subsequent research workflows.

### ⚡ Key Features

| Feature                      | Description                                                                 | User Benefit                                                      |
| ---------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| Keyword-based search         | Search using one or multiple keywords or queries.                           | Target specific types of Bbb listings or businesses.              |
| Location targeting           | Optionally narrow searches using a country, state, or city.                 | Focus research on a geographic market.                            |
| Custom email domains         | Specify domains such as `@gmail.com`, `@yahoo.com`, or other suffixes.      | Search for the types of email addresses relevant to your project. |
| Per-combination email target | Set `maxEmails` for each keyword + domain combination.                      | Control how deeply each search combination is processed.          |
| Exclusion filtering          | Skip snippets containing selected words or phrases.                         | Reduce unwanted results before email extraction.                  |
| Structured dataset           | Results are pushed into an Apify dataset.                                   | Work with organized lead information instead of raw search pages. |
| Duplicate prevention         | Previously discovered email addresses are not added again during the run.   | Reduce duplicate contact records.                                 |
| Incremental results          | Matching records are added to the dataset as they are found.                | Results can become available during processing.                   |
| Resume support               | Run progress is persisted so processing can continue after an interruption. | Reduce the need to restart a partially completed workflow.        |

### 📊 What Data Can You Extract?

The Actor produces structured contact information based on the search results it processes.

Each generated record contains the email address plus contextual fields that help identify where the email was found:

- **Network** — Identifies the source as `Bbb.com` in the generated dataset record.
- **Keyword** — The keyword or query responsible for the search.
- **Title** — The title associated with the organic search result.
- **Description** — The search-result description or snippet where the email was discovered.
- **URL** — The URL associated with the organic search result.
- **Email** — The publicly indexed email address matching the configured domain suffix.

The email is extracted from the available search-result description rather than being guaranteed to exist on every underlying listing. Consequently, a Bbb result can appear in search results without producing an email address.

### 🎯 Why Use Bbb Email Scraper?

Manually searching for business contacts can involve repeating similar queries, reviewing many search results, and copying information into spreadsheets or datasets. Bbb Email Scraper turns this repetitive search process into a configurable Apify workflow.

You can combine specific search terms with geographic targeting and multiple email domains. This is especially useful when a broad keyword produces too many unrelated results or when a research project focuses on a particular business category.

The structured output also keeps the email connected to its keyword, title, description, and URL, giving users useful context for reviewing discovered contacts.

### 💡 Benefits

Bbb Email Scraper can support several practical data-collection workflows:

- **Automated contact discovery** — Reduce repetitive manual searching for publicly indexed emails.
- **Structured lead research** — Keep contact information together with its search context.
- **Keyword targeting** — Build searches around specific occupations, services, industries, or business types.
- **Geographic research** — Narrow searches to a country, state, or city when appropriate.
- **Domain-specific discovery** — Search for selected email suffixes rather than treating every address as a match.
- **Dataset creation** — Collect results directly into an Apify dataset for further review.
- **Duplicate reduction** — The Actor keeps track of discovered email addresses during processing.
- **Flexible experimentation** — Start with a small target and broaden keywords or domains when results are limited.

### 🔄 How to Use Bbb Email Scraper

The basic workflow is straightforward:

1. Enter one or more keywords or search queries.
2. Optionally enter a country, state, or city in the location field.
3. Add the email domains you want to search for.
4. Set the maximum number of emails for each keyword + domain combination.
5. Optionally add exclusion words or phrases.
6. Start the Actor.
7. Review the structured dataset as results are collected.

For an initial test, use a small number of focused keywords and a modest `maxEmails` value. After reviewing the quality of the results, you can broaden the search with additional terms, domains, or locations.

### 📥 Input

The required input is `keywords`. The other fields are optional and provide additional control over the search.

| Field           | Type             | Required | Default                     | Description                                                                                                            |
| --------------- | ---------------- | -------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `keywords`      | Array of strings | Yes      | `["Contractor", "Plumber"]` | Keywords or queries used to search for relevant Bbb results.                                                           |
| `location`      | String           | No       | `""`                        | Optional country, state, or city used to narrow the search.                                                            |
| `customDomains` | Array of strings | No       | `["@gmail.com"]`            | Email domain suffixes to search for, such as `@gmail.com` or `@yahoo.com`.                                             |
| `maxEmails`     | Integer          | No       | `5`                         | Target number of addresses for each keyword + domain combination. Allowed range is 1–10,000 in the Actor input schema. |
| `excludeWords`  | Array of strings | No       | `[]`                        | Words or phrases that cause matching search-result descriptions to be skipped.                                         |

The `maxEmails` setting is applied independently to each keyword + domain combination. For example, three keywords and two domains create six combinations. With a target of 20, each combination can target up to 20 addresses, subject to available public results and duplicate prevention.

The free tier applies a maximum of 100 emails to the requested per-combination target when a higher value or no value is requested. The Actor itself does not guarantee that the configured target will be reached.

### 🧾 Input Example

```json
{
  "keywords": [
    "Contractor",
    "Plumber",
    "Roofing Contractor"
  ],
  "location": "New York",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

Use specific keywords when possible. For example, `Plumber` is more targeted than a very broad term such as `Business`. Related search terms can also be supplied as separate keyword values.

### 📤 Output

Bbb Email Scraper stores discovered records in the **Bbb Emails Dataset**. The default dataset view presents the main lead fields in a table.

The Actor generates the following fields:

| Field         | Description                                                                                  |
| ------------- | -------------------------------------------------------------------------------------------- |
| `network`     | Source identifier generated as `Bbb.com`.                                                    |
| `keyword`     | Keyword associated with the search that produced the result.                                 |
| `title`       | Title of the organic search result.                                                          |
| `description` | Search-result description or snippet associated with the result.                             |
| `url`         | URL returned for the organic search result.                                                  |
| `email`       | Email address extracted from the result description and matching the selected domain suffix. |

The default Apify dataset view displays `keyword`, `title`, `description`, `url`, and `email`. The generated record also contains the `network` field.

The `url` should be treated as the URL associated with the search result, rather than assuming every returned URL is a direct Bbb profile page.

### 🧾 Output Example

```json
{
  "network": "Bbb.com",
  "keyword": "Contractor",
  "title": "Example Contractor Business",
  "description": "Example Contractor Business serving customers in New York. Contact: example@gmail.com",
  "url": "https://www.bbb.org/example-result",
  "email": "example@gmail.com"
}
```

The values above are illustrative examples of the output structure. Actual titles, descriptions, URLs, and email addresses depend on the publicly indexed search results available for the selected inputs.

### 🎯 Use Cases

Bbb Email Scraper is suitable for research and contact-discovery workflows where publicly indexed Bbb-related information is useful.

**Lead research:** Build a structured list of potential business contacts based on specific service or business keywords.

**Local business research:** Use the location field to investigate businesses or service providers within a selected geographic area.

**Market research:** Search multiple business categories to collect contact information for market analysis.

**Agency prospecting:** Agencies can research categories such as contractors, plumbers, consultants, or other service-related businesses.

**B2B research:** Combine industry-specific keywords with company or public email domains to identify potentially relevant contacts.

**Business directory research:** Use targeted terms to discover publicly indexed business listings and associated contact information.

**Dataset creation:** Build structured datasets for manual review, analysis, segmentation, or downstream workflows.

**Geographic prospecting:** Compare search coverage across cities, states, or countries by changing the location input.

### 🏆 Advantages

The main strengths of Bbb Email Scraper come from its configurable search structure and organized output.

Users can provide multiple keywords rather than relying on a single search phrase. Multiple email suffixes can also be configured, allowing a broader or more specific contact search.

The optional location field provides another layer of targeting. Combined with focused keywords, this can make a large research task more manageable.

Results are stored as structured records rather than requiring users to manually copy information from individual search pages. The dataset also preserves contextual fields such as the search keyword and result description.

### ⚖️ Comparison With Alternative Approaches

| Capability                  | Bbb Email Scraper                 | Manual / Typical Alternative                        |
| --------------------------- | --------------------------------- | --------------------------------------------------- |
| Keyword-based discovery     | Supported                         | User performs searches manually                     |
| Multiple keywords           | Supported                         | Requires repeated searches                          |
| Location filtering          | Supported                         | Location must usually be added manually to searches |
| Email-domain targeting      | Configurable                      | Often handled manually                              |
| Exclusion filtering         | Supported                         | Manual review may be required                       |
| Structured dataset          | Supported                         | May require spreadsheet formatting                  |
| Duplicate prevention        | Built into the collection process | Often requires manual cleanup                       |
| Incremental dataset records | Supported                         | Manual copying is typically slower to organize      |

This comparison describes workflow differences rather than claiming that one approach is universally better.

### 📈 Pros and Cons

| Pros                                         | Cons                                                         |
| -------------------------------------------- | ------------------------------------------------------------ |
| Supports multiple targeted keywords          | Results depend on publicly indexed search information        |
| Optional geographic targeting                | Not every search result contains an extractable email        |
| Configurable email domains                   | Narrow searches may produce sparse results                   |
| Exclusion words can filter unwanted snippets | Configured email targets are not guaranteed                  |
| Structured Apify dataset output              | Search-result URLs may not always be direct Bbb profile URLs |
| Duplicate email prevention                   | Free-tier limits apply                                       |
| Progress can be resumed after interruption   | Wider searches may require more processing time              |

### ⚠️ Limitations

The Actor can only collect email addresses that are publicly available in the search information it processes. It does not guarantee that every Bbb listing will contain an email address.

Search coverage also depends on the keywords, email domains, and optional location supplied by the user. Very narrow combinations can return few or no matching addresses.

The `maxEmails` value is a target for each keyword + domain combination, not a guarantee. If suitable public results are unavailable, the Actor may finish below the requested target.

Email addresses are deduplicated during the run. Therefore, the theoretical number of results from multiple combinations may be higher than the number of unique records ultimately produced.

The default free-tier ceiling can also limit the requested per-combination target to 100 emails.

### ✅ Best Practices

For better research coverage and more useful datasets:

- Use specific keywords rather than relying only on broad categories.
- Add several closely related search terms when researching a niche.
- Use a location when the project requires geographic targeting.
- Add multiple relevant email domains when broader contact coverage is needed.
- Start with a small `maxEmails` value and review the resulting data.
- Use `excludeWords` when certain types of descriptions should be ignored.
- Broaden the location if a local search produces very few results.
- Broaden or refine keywords when results are sparse.
- Review important contact information before using it for business outreach.
- For larger runs, allow sufficient run time for the configured search scope.

### 🛠️ Troubleshooting

**Invalid input:** Check that `keywords` is provided as an array of strings and that the other fields use the documented formats.

**Few or empty results:** Try broader or more specific related keywords. You can also remove the location filter or test a broader geographic area.

**Not enough emails:** Add relevant email domains, expand the keyword set, or increase the target within the supported limits. The Actor can only return addresses that are publicly discoverable.

**Unexpectedly filtered results:** Review `excludeWords`. If a selected word or phrase appears in a result description, the entire matching snippet is skipped.

**Duplicate-looking results:** The Actor prevents the same email address from being registered again during the run. Different search combinations can therefore produce fewer unique records than their individual targets suggest.

**Partial results:** Partial output can occur when suitable public results are limited or when processing does not produce additional useful email matches. Review the dataset and adjust the search configuration for a subsequent run.

### ❓ Frequently Asked Questions

**What does Bbb Email Scraper do?**

Bbb Email Scraper searches for publicly indexed Bbb-related results using your keywords and configured email domains, then creates structured records containing discovered email addresses and search-result context.

**What keywords can I use?**

You can use business categories, services, occupations, industries, or other relevant search queries. Specific terms such as `Contractor`, `Plumber`, or `Roofing Contractor` can provide more targeted searches than broad terms.

**Can I use multiple keywords?**

Yes. The `keywords` field accepts multiple values, allowing you to research several related categories within the same run.

**Can I target a specific city or country?**

Yes. Enter a country, state, or city in `location` to narrow the search geographically. Leave it empty when geographic targeting is not required.

**Which email domains can I search?**

The `customDomains` field lets you specify email suffixes such as `@gmail.com`, `@yahoo.com`, and `@outlook.com`, as well as other domain suffixes you want to search for.

**How does `maxEmails` work?**

The target applies independently to each keyword + domain combination. It is not a single shared run-wide target.

**Does the Actor guarantee the requested number of emails?**

No. The requested number is a target. The Actor can only collect emails that are publicly available in matching search results, so actual results may be lower.

**What does `excludeWords` do?**

If an exclusion word or phrase appears in a search-result description, that complete snippet is skipped and no email is extracted from it. Matching is case-insensitive.

**What data does the output contain?**

Each generated record contains `network`, `keyword`, `title`, `description`, `url`, and `email`. The default dataset view displays the main lead fields.

**Can I use Bbb Email Scraper for lead research?**

Yes. The structured keyword, result context, URL, and email fields make it suitable for business contact research, prospect discovery, market research, and dataset-building workflows.

### 🧠 NLP Keywords

- Bbb email scraper
- Bbb email extraction
- Bbb contact data
- Bbb leads
- Bbb business listings
- Bbb email addresses
- public business emails
- business email extraction
- keyword-based email search
- Bbb search results
- email domain targeting
- location-based lead search
- business contact discovery
- structured lead data
- email lead generation
- Bbb contact discovery
- search-result email extraction
- business prospect research
- email deduplication
- Bbb data collection

### 🔗 Related Keywords

- Bbb business email scraper
- Bbb leads scraper
- Bbb contact scraper
- Bbb email finder
- Bbb business contacts
- Bbb email extractor
- Bbb lead generation
- Bbb company research
- Bbb local business leads
- Bbb contractor leads
- Bbb plumber leads
- Bbb service provider leads
- business email lead scraper
- public email lead generation
- business directory email extraction
- local business prospecting
- keyword email scraper
- geographic lead research
- B2B contact discovery
- structured business lead data

### 🚀 Final Overview

Bbb Email Scraper provides a configurable way to discover publicly indexed email addresses associated with Bbb search results. Users can combine multiple keywords, optional geographic targeting, custom email domains, and exclusion filters to create structured contact datasets.

The Actor is designed around a simple workflow: define the search terms, configure optional targeting, run the Actor, and review the resulting dataset. Each record preserves the email together with its keyword, title, description, and associated URL, making the collected information easier to understand and evaluate.

For the most useful results, start with focused keywords and a small test run. If the dataset is too small, broaden the keyword set, add relevant email domains, or adjust the location. Always remember that results depend on publicly indexed information and that configured email targets are not guarantees.

*Contact me:* <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": [
    "Contractor",
    "Plumber"
  ],
  "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": [
        "Contractor",
        "Plumber"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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