# Brownbook Email Scraper (`email_scraper/brownbook-email-scraper`) Actor

Brownbook Email Scraper extracts publicly indexed email addresses from Brownbook.net using targeted keywords, custom email domains, location filters, and exclusion terms. Build structured contact datasets with titles, descriptions, URLs, and emails for lead research and market analysis.

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

### 🔍 Brownbook Email Scraper

Brownbook Email Scraper is an Apify Actor designed to find publicly indexed email addresses associated with Brownbook search results. It uses targeted keywords, email-domain filters, optional locations, and exclusion words to collect structured contact records from publicly available Brownbook-related search results.

You provide one or more keywords such as `Company`, `Supplier`, `Manufacturer`, or another relevant business term. You can optionally specify a country, state, or city to narrow the search and select the email domains you want to find, such as `@gmail.com` or `@yahoo.com`.

The resulting dataset contains the search keyword, result title, description, URL, and extracted email address. This makes the Brownbook Email Scraper useful for lead research, business contact discovery, market research, and structured dataset creation.

### What Is the Brownbook Email Scraper?

The Brownbook Email Scraper is a keyword-driven contact discovery tool for Brownbook-related public search results.

Instead of manually searching for businesses and checking individual results for contact information, you can provide a list of search terms and let the Actor collect matching publicly indexed email addresses into an Apify dataset.

The Actor searches for Brownbook results relevant to each keyword and configured email-domain suffix. When an email address matching the selected domain appears in a result description, the corresponding title, description, URL, keyword, and email are added to the dataset.

This approach is particularly useful when you need structured Brownbook contact data for research or downstream analysis.

### 🚀 Key Features

| Feature                     | Description                                                         | User Benefit                                   |
| --------------------------- | ------------------------------------------------------------------- | ---------------------------------------------- |
| Keyword-based search        | Search using one or multiple keywords or queries                    | Target specific business categories or topics  |
| Email-domain filtering      | Specify domains such as `@gmail.com` or other suffixes              | Focus collection on relevant email types       |
| Location filtering          | Optionally provide a country, state, or city                        | Narrow research to a geographic area           |
| Exclusion words             | Skip descriptions containing unwanted words or phrases              | Reduce irrelevant records                      |
| Structured dataset          | Results are stored with keyword, title, description, URL, and email | Makes collected data easier to review          |
| Multiple keyword processing | Process a list of search terms in one run                           | Expand research coverage                       |
| Duplicate prevention        | Previously collected email addresses are tracked during the run     | Helps avoid duplicate email records            |
| Incremental results         | Matching records are pushed to the dataset as they are collected    | Makes results available during processing      |
| Resume support              | Run progress is retained for continuation after interruptions       | Reduces the need to restart from the beginning |

### 📊 What Data Can You Extract?

The Brownbook Email Scraper returns structured contact records containing five primary dataset fields.

- **Keyword** — The keyword associated with the search that produced the record.
- **Title** — The title of the matching search result.
- **Description** — The publicly indexed description or snippet associated with the result.
- **URL** — The URL associated with the search result.
- **Email** — The email address matching one of your configured email-domain suffixes.

The Actor focuses specifically on email addresses that can be found in the available indexed result descriptions. It does not claim that every Brownbook profile contains an email address or that every available contact detail will be returned.

### 💡 Why Use This Actor?

Manual contact research can require repeatedly searching business terms, reviewing results, identifying relevant pages, and recording email addresses.

The Brownbook Email Scraper turns that repetitive search process into a configurable Apify workflow. You can provide multiple keywords, apply an optional location, choose the email domains that matter to your project, and collect the resulting records in a structured dataset.

This is useful when the goal is to create a searchable Brownbook contact dataset rather than manually copy individual results.

The Actor can also be useful for exploratory research. For example, instead of searching only for `Company`, you can provide more specific terms such as `Supplier`, `Manufacturer`, `Wholesaler`, or `Retailer` to investigate different segments.

### ✅ Benefits

- Automates repetitive Brownbook-related contact research.
- Supports multiple search keywords in a single run.
- Allows geographic narrowing through an optional location.
- Lets you choose the email-domain suffixes to search for.
- Provides exclusion filtering for unwanted words and phrases.
- Produces structured records suitable for dataset analysis.
- Helps reduce duplicate email records within a run.
- Saves progress so collection can continue from the stored position.
- Supports both broad research and more targeted searches.

### ⚙️ How to Use the Brownbook Email Scraper

1. Open the Actor in Apify.
2. Add one or more values to the `keywords` field.
3. Optionally enter a country, state, or city in `location`.
4. Add the email-domain suffixes you want to search for in `customDomains`.
5. Set `maxEmails` when you want to define a collection target for each keyword and domain combination.
6. Add `excludeWords` if certain words or phrases should be skipped.
7. Start the Actor.
8. Review the resulting Brownbook contact dataset.

For the best research coverage, use several specific keywords instead of relying on one broad term. For example, a business research project could use `Company`, `Supplier`, `Manufacturer`, and `Distributor` as separate keywords.

### 📥 Input

The Actor requires the `keywords` field. All other documented input fields are optional.

| Field           | Type             | Required | Default / Behavior                                                  | Description                                                      |
| --------------- | ---------------- | -------- | ------------------------------------------------------------------- | ---------------------------------------------------------------- |
| `keywords`      | Array of strings | Yes      | `["Company", "Supplier"]`                                           | Keywords or search queries to use for Brownbook-related searches |
| `location`      | String           | No       | Empty                                                               | Optional country, state, or city used to narrow searches         |
| `customDomains` | Array of strings | No       | `["@gmail.com"]`                                                    | Email-domain suffixes to search for                              |
| `maxEmails`     | Integer          | No       | No explicit value in schema; unlimited for paid/local configuration | Collection target applied to each keyword + domain combination   |
| `excludeWords`  | Array of strings | No       | `[]`                                                                | Words or phrases that cause matching descriptions to be skipped  |

`maxEmails` accepts values from **1 to 10,000** when supplied. The Actor applies this as a per-keyword and per-domain target rather than one shared target across the complete keyword/domain matrix.

For example, with three keywords, two domains, and `maxEmails` set to `20`, the Actor processes six keyword-domain combinations, with a target of up to 20 new emails for each combination, subject to available matching results and duplicate filtering.

Free-tier runs are limited by the Actor configuration to a maximum of 100 emails when a higher value or no value is requested.

### 🧾 Input Example

```json
{
  "keywords": [
    "Company",
    "Supplier",
    "Manufacturer"
  ],
  "location": "United Kingdom",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 20,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

The `keywords` array can contain different business terms according to your research objective. The `location` field can be left empty when geographic filtering is not required.

### 📤 Output

Results are stored in the **Brownbook Emails Dataset** and presented through a structured table.

Each record represents a matching email address together with the search context and associated result information.

| Field         | Description                                               |
| ------------- | --------------------------------------------------------- |
| `keyword`     | Keyword that produced the matching result                 |
| `title`       | Title of the corresponding search result                  |
| `description` | Description or indexed snippet associated with the result |
| `url`         | URL of the matching result                                |
| `email`       | Extracted email address matching the configured domain    |

The dataset is useful for reviewing Brownbook contact information, filtering records, performing research, and building structured datasets.

### 🧪 Output Example

```json
{
  "keyword": "Supplier",
  "title": "Example Supplier - Brownbook",
  "description": "Example Supplier provides products and services for businesses. Contact example.supplier@gmail.com for more information.",
  "url": "https://www.brownbook.net/business/123456/example-supplier/",
  "email": "example.supplier@gmail.com"
}
```

The example illustrates the documented output structure. Actual titles, descriptions, URLs, and email addresses depend on the publicly indexed results available for the selected search terms and domains.

### 🎯 Use Cases

#### Business Lead Research

Use targeted business keywords to identify publicly indexed contact opportunities associated with relevant Brownbook results.

#### Supplier Discovery

Search terms such as `Supplier`, `Manufacturer`, `Distributor`, or industry-specific terms can help organize supplier-related research.

#### Market Research

Researchers can combine keywords and locations to investigate business categories across different geographic areas.

#### Contact Discovery

The Actor can identify email addresses appearing in matching indexed descriptions, providing a structured starting point for contact research.

#### Business Intelligence

Collected records can be analyzed by keyword, domain, location strategy, or result source to support broader business research.

#### Dataset Creation

The structured output can serve as a foundation for contact datasets, research lists, and internal analysis workflows.

#### Competitive Research

Specific business categories or market segments can be searched to collect publicly indexed contact information for research purposes.

### 🔎 Search Strategy

The Actor is designed around combinations of keywords and email-domain suffixes.

For example, a search using:

- `Supplier`
- `@gmail.com`
- `Canada`

is more targeted than a generic business search because the keyword, domain, and geographic context are all specified.

Using several closely related keywords can increase coverage. Examples include `Supplier`, `Wholesale Supplier`, `Manufacturer`, and `Distributor`.

Likewise, adding several relevant email domains can expand the types of email addresses considered during collection.

Results still depend on what is publicly indexed and available for the selected search criteria.

### 🏆 Advantages

The Brownbook Email Scraper combines configurable search targeting with structured output.

Its main practical strengths are:

- Multiple keyword support for broader research.
- Optional geographic targeting.
- Configurable email-domain suffixes.
- Exclusion filtering for unwanted descriptions.
- Structured dataset fields.
- Incremental result storage.
- Duplicate email tracking.
- Persistent progress for interrupted runs.

These capabilities make it suitable for users who want a configurable Brownbook contact research workflow rather than a single manually performed search.

### ⚠️ Limitations

The Actor can only return email addresses that are available in the publicly indexed result information it processes.

A keyword may produce fewer results than expected when the selected search terms are highly specific or when relevant pages do not expose matching email addresses.

The `maxEmails` value is a target or cap for each keyword-domain combination; it is not a guarantee that that number of unique emails will be found.

Duplicate email addresses are tracked, so repeated appearances of the same address do not necessarily produce additional dataset records.

Results can also vary depending on the selected keywords, email domains, location, and availability of relevant indexed results.

### ⚖️ Pros and Cons

| Pros                                             | Cons                                                  |
| ------------------------------------------------ | ----------------------------------------------------- |
| Supports multiple keywords                       | Results depend on publicly indexed information        |
| Optional location targeting                      | Narrow searches may produce fewer results             |
| Custom email-domain filtering                    | Not every matching result contains an email           |
| Exclusion words can remove unwanted descriptions | Requested targets are not guaranteed                  |
| Structured dataset output                        | Search coverage depends on the selected terms         |
| Duplicate email tracking                         | Duplicate appearances are not treated as new contacts |
| Incremental dataset collection                   | Some searches may return partial results              |

### 🔄 Comparison With Alternative Approaches

| Capability                  | Brownbook Email Scraper     | Manual Research                      |
| --------------------------- | --------------------------- | ------------------------------------ |
| Keyword-based collection    | Supported                   | Requires repeated searches           |
| Multiple keywords           | Supported                   | Usually handled individually         |
| Email-domain targeting      | Supported                   | Requires manual filtering            |
| Location targeting          | Supported                   | Requires manual search refinement    |
| Exclusion filtering         | Supported                   | Manual review required               |
| Structured output           | Dataset with defined fields | Usually requires manual organization |
| Duplicate tracking          | Supported during collection | Usually manual                       |
| Incremental dataset storage | Supported                   | Manual recording required            |

The Actor is intended to automate repetitive search and organization work while leaving users in control of their search terms and filters.

### 💡 Best Practices

- Use several specific keywords instead of only one broad keyword.
- Combine business categories with relevant role or industry terms.
- Add multiple email domains when broader email coverage is useful.
- Use `location` when your research is geographically focused.
- Leave `location` empty when you want broader geographic coverage.
- Start with a smaller `maxEmails` value to test your search strategy.
- Use `excludeWords` to remove descriptions containing terms that are irrelevant to your research.
- Review initial results before launching a larger collection.
- If results are sparse, broaden the keywords or location.
- Validate important contact information before using it in downstream workflows.

### 🛠️ Troubleshooting

**Invalid or incomplete input:** Make sure `keywords` is supplied as an array of strings. Review the spelling and formatting of each value before starting the run.

**Few or no results:** Try broader keywords, add related search terms, remove an overly restrictive location, or include additional email domains.

**Results below the requested target:** A target does not guarantee that the requested number of unique emails exists. The available indexed results may contain fewer matching addresses.

**Unexpectedly skipped results:** Review `excludeWords`. A matching exclusion word or phrase causes the associated description to be skipped.

**Repeated emails are not appearing:** Email addresses already collected during the run are tracked to reduce duplicate records.

**Partial collection:** Publicly indexed results may be limited or temporarily unavailable. Review the collected dataset and consider adjusting the search terms before running again.

**Need broader coverage:** Combine multiple specific keywords with several relevant email domains instead of relying on one search combination.

### ❓ Frequently Asked Questions

**What does the Brownbook Email Scraper do?**

It searches publicly indexed Brownbook-related results using your keywords and configured email domains, then creates structured records containing the keyword, title, description, URL, and matching email.

**What data does the Brownbook Email Scraper return?**

The primary dataset contains `keyword`, `title`, `description`, `url`, and `email`.

**Are the email addresses guaranteed to exist for every result?**

No. The Actor only returns matching email addresses when they are present in the indexed result information and match a configured email-domain suffix.

**Can I use multiple keywords?**

Yes. The `keywords` input is an array, allowing you to search multiple terms within one run.

**Can I target a specific location?**

Yes. The optional `location` field accepts a country, state, or city and is used to narrow the search.

**Can I search multiple email domains?**

Yes. `customDomains` accepts an array of email-domain suffixes, such as `@gmail.com`, `@yahoo.com`, and `@outlook.com`.

**What does `maxEmails` control?**

It defines the collection target for each keyword and email-domain combination. The actual number of unique results can be lower when suitable indexed emails are unavailable.

**What are exclude words used for?**

They allow you to skip descriptions containing unwanted words or phrases. Matching is case-insensitive, and single words are matched as whole words.

**Can I use the Actor for lead research?**

Yes. Its structured keyword, title, description, URL, and email fields can support business contact research and lead-oriented datasets.

**Why did my run return fewer emails than expected?**

The selected keywords, location, email domains, and publicly indexed information all affect availability. A narrow search may produce fewer matching addresses than the requested target.

**Can the Actor avoid duplicate email addresses?**

Yes. Email addresses already registered during collection are tracked so the same address is not repeatedly added as a new result.

**Should I start with a large run?**

A small test run is recommended. Review the returned records and refine your keywords, location, domains, and exclusions before expanding the collection.

### 🧠 NLP Keywords

- Brownbook Email Scraper
- Brownbook email extraction
- Brownbook contact scraper
- Brownbook email finder
- Brownbook.net email scraper
- Brownbook lead scraper
- Brownbook contact extraction
- Brownbook business leads
- Brownbook professional contacts
- Brownbook email addresses
- Brownbook lead generation
- Brownbook contact discovery
- Brownbook search scraper
- Brownbook data extraction
- Brownbook public contact data
- Brownbook keyword search
- Brownbook location search
- Brownbook business contact data
- Brownbook structured dataset
- Brownbook research data

### 🔗 Related Keywords

- scrape emails from Brownbook
- extract emails from Brownbook.net
- find Brownbook email addresses
- Brownbook contact data scraper
- Brownbook.net contact finder
- Brownbook lead generation scraper
- Brownbook business email finder
- Brownbook professional email finder
- Brownbook keyword email extractor
- Brownbook email lead scraper
- Brownbook contact research tool
- Brownbook email data extraction
- Brownbook public email discovery
- Brownbook business contact extraction
- Brownbook location-based email search
- Brownbook email search by keyword
- Brownbook email search by domain
- Brownbook contact dataset
- Brownbook lead research tool
- Brownbook email collection

### 📌 Final Overview

Brownbook Email Scraper provides a configurable way to collect publicly indexed email addresses associated with Brownbook-related search results.

Users can control the search through multiple keywords, optional locations, custom email-domain suffixes, and exclusion words. The resulting records are organized into a structured Apify dataset containing the keyword, title, description, URL, and email.

For broader coverage, use several relevant keywords and email domains. For focused research, combine specific business terms with a location. If results are limited, broaden the search criteria or review the configured filters.

Because collection depends on publicly indexed information, the number of available emails can vary. The Actor is therefore best used as a structured research and contact-discovery workflow rather than as a guarantee of a specific number of contacts.

*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": [
    "Company",
    "Supplier"
  ],
  "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": [
        "Company",
        "Supplier"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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