# Basis Email Scraper (`email_scraper/basis-email-scraper`) Actor

Basis Email Scraper extracts publicly available email addresses from Basis using targeted keywords, locations, and custom email domains. Build structured contact datasets for business research, lead discovery, market research, contact collection, and business intelligence.

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

### Basis Email Scraper

Basis Email Scraper is an Apify Actor designed to find publicly available email addresses associated with relevant Basis search results using targeted keywords, optional locations, and configurable email domains.

You provide one or more search keywords, choose optional geographic targeting, specify the email domains you want to find, and optionally exclude results containing particular words or phrases. The Actor searches for relevant Basis pages and extracts matching email addresses from available result descriptions.

The resulting dataset contains the search keyword, result title, description, URL, and extracted email address. This makes the Actor useful for business research, contact discovery, market research, lead research, and structured dataset creation involving Basis-related profiles and organizations.

### What Is a Basis Email Scraper?

A Basis Email Scraper automates the process of discovering publicly available email addresses connected with relevant Basis search results.

Instead of manually searching Basis-related pages and checking individual search results for contact information, you can provide targeted search terms and let the Actor collect matching email addresses into a structured Apify dataset.

The Actor supports multiple keywords and multiple email-domain suffixes. You can also provide a country, state, or city to narrow the search and use exclusion terms to skip descriptions containing unwanted words or phrases.

The output is organized into individual dataset records, making the collected information easier to review, filter, analyze, and use in downstream workflows.

### Key Features

| Feature                  | Description                                                                     | User Benefit                                                 |
| ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| 🔍 Keyword-based search  | Search using one or multiple keywords or queries                                | Target specific professions, services, industries, or topics |
| 📧 Custom email domains  | Specify domains such as `@gmail.com`, `@yahoo.com`, or your own domain suffixes | Focus collection on the email types you need                 |
| 📍 Location targeting    | Optionally provide a country, state, or city                                    | Narrow searches to a geographic area                         |
| 🚫 Exclude words         | Skip result descriptions containing specified words or phrases                  | Reduce unwanted results                                      |
| 📊 Structured dataset    | Results are stored with keyword, title, description, URL, and email             | Makes collected data easier to analyze                       |
| 🔄 Multiple combinations | Keywords and domains are processed as separate combinations                     | Expand coverage across different search intents              |
| ♻️ Progress persistence  | Run progress and discovered email addresses are persisted                       | Helps the Actor continue after an interruption               |
| 🧹 Email deduplication   | Previously discovered email addresses are tracked                               | Reduces duplicate email records                              |

### What Data Can You Extract?

The Basis Email Scraper returns structured contact-discovery data for each matching result.

The main data categories are:

- **Search keyword** — The keyword or query associated with the result.
- **Result title** — The title associated with the discovered search result.
- **Description** — The available result description containing the relevant information.
- **URL** — The URL associated with the result.
- **Email** — The email address matching one of your configured domain suffixes.

The Actor focuses specifically on email addresses found in relevant search-result descriptions. It does not claim that every email address associated with a Basis page will be discovered.

### Why Use This Actor?

Manual contact discovery can involve repeating the same searches with different keywords, locations, and email-domain variations.

Basis Email Scraper provides a configurable workflow for this type of research. Instead of manually collecting individual records, you can define your search strategy and receive structured results in an Apify dataset.

It is particularly useful when your research requires several related search terms. For example, instead of searching only for `IT service`, you can use terms such as `IT consultant`, `software developer`, `web developer`, or `technology company` to explore different search intents.

The optional location field can further refine searches when geographic targeting is important.

### Benefits

Using the Basis Email Scraper can provide several practical benefits:

- **Automated contact discovery** without manually reviewing every search result.
- **Structured data collection** with consistent output fields.
- **Flexible search targeting** through multiple keywords.
- **Email-domain filtering** for targeted contact research.
- **Geographic targeting** through the optional location field.
- **Noise reduction** through configurable exclusion words.
- **Duplicate reduction** through email tracking.
- **Persistent progress** for longer collection tasks.
- **Scalable research workflows** by combining multiple search terms and domains.

Results should always be reviewed and validated according to your own research requirements before being used for business or other purposes.

### How to Use the Basis Email Scraper

Using the Actor is straightforward:

1. Enter one or more keywords in the `keywords` input.
2. Optionally enter a country, state, or city in `location`.
3. Add the email domains you want to search for in `customDomains`.
4. Set `maxEmails` for each keyword and email-domain combination.
5. Optionally add unwanted words or phrases to `excludeWords`.
6. Start the Actor run.
7. Review the resulting records in the Apify dataset.

For initial testing, start with a small number of focused keywords and a modest email limit. You can broaden the configuration after reviewing the quality and relevance of the results.

### Input

The Actor accepts a JSON object containing one required field and four configurable fields.

The required field is `keywords`. The other inputs allow you to control geographic targeting, email-domain matching, collection limits, and result filtering.

### Input Fields

| Field           | Type             | Required | Default                       | Description                                                                |
| --------------- | ---------------- | -------- | ----------------------------- | -------------------------------------------------------------------------- |
| `keywords`      | Array of strings | Yes      | `["IT service", "developer"]` | Search keywords or queries to use for Basis discovery                      |
| `location`      | String           | No       | `""`                          | 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       | `5`                           | Maximum target per keyword + domain combination; allowed range is 1–10,000 |
| `excludeWords`  | Array of strings | No       | `[]`                          | Words or phrases that cause a result description to be skipped             |

The `keywords` field accepts multiple search terms. More specific related terms can help target different search intents.

The `location` field can be left empty when geographic filtering is not needed.

The `customDomains` field can contain multiple email suffixes. Examples include `@gmail.com`, `@yahoo.com`, `@outlook.com`, or a relevant custom domain suffix.

The `maxEmails` value applies independently to each keyword + domain combination. For example, two keywords combined with three domains create six combinations, with the configured target applied to each combination.

The `excludeWords` field accepts words or phrases. Single-word exclusions are matched case-insensitively as whole words, while phrases are matched case-insensitively as phrases.

### Input Example

```json
{
  "keywords": [
    "IT service",
    "software developer",
    "web developer"
  ],
  "location": "Dhaka",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com",
    "@outlook.com"
  ],
  "maxEmails": 10,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

This configuration searches several related technology terms, narrows the search to Dhaka, checks multiple email domains, targets up to 10 addresses for each keyword + domain combination, and skips descriptions containing the specified exclusions.

### Output

The Actor stores results in the **Basis Emails Dataset**.

Each discovered email is associated with the keyword that produced the result and the corresponding result information. The output is designed to provide enough context to understand where an email address was found.

The dataset contains five primary fields.

### Output Fields

| Field         | Description                                            |
| ------------- | ------------------------------------------------------ |
| `keyword`     | The keyword or query used to find the result           |
| `title`       | Title of the matching search result                    |
| `description` | Description or snippet associated with the result      |
| `url`         | URL of the matching result                             |
| `email`       | Extracted email address matching the configured domain |

The `description` field is particularly useful for reviewing the context in which an email address was discovered.

The `url` field provides a reference to the associated result, allowing users to review the source context themselves.

### Output Example

```json
{
  "keyword": "IT service",
  "title": "Example IT Services",
  "description": "Example IT Services provides technology solutions. Contact us at example@gmail.com for more information.",
  "url": "https://basis.org.bd/example-profile",
  "email": "example@gmail.com"
}
```

The example above illustrates the documented output structure. Actual titles, descriptions, URLs, and email addresses depend on the available search results.

### Use Cases

The Basis Email Scraper can support several research and data-collection workflows.

- **Business lead research** — Find publicly available contact information related to specific business terms.
- **B2B research** — Explore contacts associated with technology, professional services, and other targeted searches.
- **Market research** — Collect structured information for analyzing organizations or service categories.
- **Supplier and service research** — Search for businesses using specific service-related keywords.
- **Geographic research** — Use locations to focus discovery on a particular city, state, or country.
- **Contact discovery** — Identify publicly available email addresses matching selected domains.
- **Business intelligence** — Combine keyword, description, URL, and email information for further analysis.
- **Dataset creation** — Build structured datasets from multiple search combinations.
- **Competitive research** — Explore organizations associated with particular business or industry terms.
- **Research automation** — Reduce repetitive manual searching across multiple keyword combinations.

### Advantages

The Actor offers practical configuration options for users who need targeted Basis contact research.

- Multiple keywords can be supplied in a single run.
- Multiple email domains can be configured.
- Location can be used to narrow search intent geographically.
- Exclusion words can remove unwanted descriptions from consideration.
- Results are stored in a structured dataset.
- Email addresses are tracked to reduce duplicate collection.
- Progress is persisted during the run.
- The output includes contextual information rather than only an email address.

### Limitations

There are several important considerations when using the Actor:

- Results depend on publicly available information surfaced in relevant search results.
- An email address is not guaranteed to exist for every matching result.
- The requested `maxEmails` value is a target or cap, not a guarantee that the requested number of emails will be found.
- Narrow keywords can produce few or no relevant results.
- Narrow geographic targeting can reduce the available result pool.
- Exclusion terms may remove otherwise relevant results when their descriptions contain the specified terms.
- Results can vary depending on the information available for the selected search terms and domains.
- The Actor extracts email addresses matching the configured domain suffixes rather than attempting to identify every possible email format.

The Actor's input schema permits `maxEmails` from 1 through 10,000. Free-tier runs can have a 100-email configuration ceiling applied by the Actor; paid runs are not subject to that specific free-tier ceiling.

### Pros and Cons

| Pros                          | Cons                                             |
| ----------------------------- | ------------------------------------------------ |
| Multiple keyword support      | Results depend on publicly available information |
| Custom email-domain targeting | Some searches may return few results             |
| Optional geographic targeting | Narrow searches can reduce coverage              |
| Exclusion filtering           | Requested limits do not guarantee results        |
| Structured dataset output     | Results should be reviewed for relevance         |
| Duplicate email tracking      | Only configured email domains are targeted       |
| Persistent progress           | Availability of contact information varies       |

### Comparison With Alternative Approaches

| Capability                | Basis Email Scraper                     | Manual Search                       |
| ------------------------- | --------------------------------------- | ----------------------------------- |
| Multiple keyword searches | Supported                               | Requires repeated manual searches   |
| Multiple email domains    | Supported                               | Requires separate search variations |
| Location targeting        | Supported                               | Requires manual query refinement    |
| Exclusion filtering       | Supported                               | Usually manual                      |
| Structured dataset        | Supported                               | Requires manual organization        |
| Duplicate tracking        | Supported                               | Requires manual checking            |
| Progress persistence      | Supported                               | Usually manual                      |
| Contextual result fields  | Keyword, title, description, URL, email | Depends on manual collection        |

The Actor is intended to automate structured collection rather than replace human review of important contact information.

### Competitive Advantages

The main strengths of this Basis Email Scraper are its configurable search strategy and structured output.

Users can combine different keyword ideas with different email-domain suffixes, optionally narrow searches geographically, and exclude unwanted terms. This makes the Actor suitable for focused research rather than relying on a single broad search phrase.

The output also preserves the keyword, title, description, and URL alongside each email. This gives users additional context when reviewing collected contacts.

### Best Practices

For better research workflows:

- Use specific keywords that describe the type of organization, professional role, service, or industry you want to research.
- Use several closely related keywords rather than relying on one broad term.
- Add relevant email domains when you need wider coverage.
- Use `location` when geographic targeting is important.
- Leave `location` empty when broader coverage is preferred.
- Start with a small `maxEmails` value to evaluate result quality.
- Use `excludeWords` carefully so useful results are not filtered unnecessarily.
- Review descriptions and URLs before relying on an extracted email.
- Broaden keywords when a run produces sparse results.
- Test your configuration before launching a larger research run.

### Troubleshooting

#### Invalid Input

Check that `keywords` is provided as an array of strings. Verify that numeric settings such as `maxEmails` are within the documented range of 1–10,000.

#### Empty Results

Try broader or more specific related keywords. If a location is configured, temporarily remove it to determine whether geographic targeting is restricting the available results.

You can also add additional email domains if your research requires broader contact discovery.

#### Partial Results

A partial result set does not necessarily indicate an error. The requested number is a collection target or cap, while actual results depend on the available relevant information.

Try additional keywords, broader locations, or additional email domains when appropriate.

#### Missing Fields

Different search results can contain different amounts of publicly available information. Review the corresponding URL and description when a particular record contains limited context.

#### Unwanted Results

Add relevant words or phrases to `excludeWords`. Remember that excluded terms found in a result description cause that entire result description to be skipped for email extraction.

#### Longer Runs

Broad searches using many keyword and domain combinations can take longer. For wider runs, make sure the Apify run timeout is appropriate for the amount of work being requested. The configured default run timeout described by the Actor is 3600 seconds.

### Frequently Asked Questions

#### What does the Basis Email Scraper do?

The Basis Email Scraper searches for relevant Basis results using your keywords and extracts publicly available email addresses matching the configured email domains.

#### What keywords should I use?

Use specific terms related to the people, businesses, services, industries, or topics you want to research. For example, technology research could use `IT service`, `software developer`, and `web developer`.

#### Can I use multiple keywords?

Yes. The `keywords` field accepts an array, allowing you to process multiple search terms in one run.

#### Can I search a specific city or country?

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

#### Which email domains can I search?

You can provide email-domain suffixes through `customDomains`. The default is `@gmail.com`, while additional domains such as `@yahoo.com` and `@outlook.com` can be supplied.

#### Does maxEmails guarantee that many emails?

No. `maxEmails` controls the maximum target for each keyword + domain combination. The Actor can only collect addresses that are actually available in relevant results.

#### Can I exclude unwanted results?

Yes. Use `excludeWords` to specify words or phrases that should cause a result description to be skipped.

#### Does the Actor remove duplicate emails?

The Actor tracks discovered email addresses and avoids collecting the same email address again.

#### What data does the Basis Email Scraper return?

Each dataset record contains `keyword`, `title`, `description`, `url`, and `email`.

#### Can I use this Actor for business research?

Yes. Its keyword, location, domain, and exclusion settings make it suitable for structured business and contact research where publicly available information is relevant.

#### What should I do if I get too few results?

Try adding related keywords, broadening or removing the location filter, and adding additional email domains. Starting with several specific search terms can provide broader research coverage.

### NLP Keywords

- Basis email scraper
- Basis contact extraction
- Basis email extraction
- Basis profile data
- Basis contact data
- Basis business contacts
- Basis email finder
- Basis lead research
- Basis data extraction
- Basis search results
- Basis contact discovery
- public email extraction
- email data collection
- business contact discovery
- keyword-based email search
- location-based contact research
- structured contact dataset
- email domain filtering
- business lead dataset
- contact research automation

### Related Keywords

- Basis email scraper tool
- Basis email extractor
- Basis contact scraper
- Basis business email finder
- Basis profile email finder
- find Basis emails
- scrape Basis contacts
- Basis lead scraper
- Basis contact discovery tool
- Basis business lead research
- Basis email data extraction
- Basis public email search
- Basis company contact search
- Basis email lead generation
- Basis keyword email search
- Basis location email search
- Basis business data scraper
- Basis contact information scraper
- Basis email collection
- Basis research scraper

### Final Overview

Basis Email Scraper provides a configurable way to discover publicly available email addresses associated with relevant Basis search results.

With support for multiple keywords, optional location targeting, custom email domains, exclusion words, per-combination email limits, duplicate tracking, and structured dataset output, the Actor can support focused contact discovery and research workflows.

The most effective approach is to use several relevant and specific search terms, select email domains appropriate to your research, apply location filtering only when necessary, and review the resulting dataset for relevance and accuracy.

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

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

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

```

## MCP server setup

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