# Baidu Email Scraper (`email_scraper/baidu-email-scraper`) Actor

Baidu Email Scraper helps you extract publicly available email addresses from Baidu search results using keywords, locations, and custom email domains. Build targeted lead lists, discover business contacts, and export structured email data for outreach and research.

- **URL**: https://apify.com/email\_scraper/baidu-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **Categories:**
- **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

### 🔹 Baidu Email Scraper – Overview

The **Baidu Email Scraper** is an Apify Actor designed to discover publicly listed email addresses associated with **Baidu-indexed pages** based on the keywords, email domains, and optional locations you provide. It turns targeted search terms into structured contact records that can be reviewed, exported, and used for lead research or market intelligence.

The **Baidu Email Scraper** is useful for marketers, sales teams, researchers, agencies, recruiters, prospecting specialists, and developers who need a repeatable way to discover publicly available email contacts connected to specific topics or professional roles.

Instead of manually searching for combinations such as `manager`, `business owner`, `fitness coach`, or `software developer`, you can provide multiple keywords and let the Actor process the search combinations automatically.

> 💡 **Baidu Email Scraper at a glance**
>
> - Search Baidu-related public pages using targeted keywords
> - Extract publicly displayed email addresses matching your selected domains
> - Narrow searches by country, state, city, or other location text
> - Exclude unwanted snippets using custom words or phrases
> - Set a maximum email target from 1 to 10,000
> - Receive structured records containing keyword, title, description, URL, and email
> - Deduplicate discovered email addresses during the run
> - Free users are limited to 100 collected emails

The easiest way to start is to enter a few specific keywords, select one or more email domains, optionally add a location, and run the Actor.

### 🔍 Baidu Email Scraper – Key Features

The **Baidu Email Scraper** focuses on targeted email discovery rather than collecting unrelated website content. Its inputs are designed to give you practical control over what types of contacts you want to find.

> 🚀 **Key Features**
>
> - **Keyword-based discovery** — Search using one or many professional, commercial, or topical keywords.
> - **Multiple email domains** — Target domains such as `@gmail.com`, `@yahoo.com`, `@outlook.com`, or other suffixes.
> - **Location filtering** — Add a country, state, city, or another geographic term to narrow results.
> - **Email limits** — Define the maximum number of emails to target for each keyword + domain combination.
> - **Exclude-word filtering** — Skip descriptions containing specified words or phrases.
> - **Duplicate protection** — Previously discovered email addresses are not added repeatedly.
> - **Structured output** — Results are stored as clean, tabular dataset records.
> - **Incremental dataset delivery** — Matching records are pushed as they are discovered.

The combination of keyword targeting and domain filtering makes the **Baidu Email Scraper** particularly useful when you already know the audience you want to research.

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

The **Baidu Email Scraper** returns structured lead information from matching publicly indexed search results.

Each discovered contact can include the keyword that produced the match, the result title, a description snippet, the source URL, and the extracted email address.

> 📦 **Available output fields**
>
> - `network` — Identifies the source network as Baidu.com.
> - `keyword` — The keyword associated with the search that produced the result.
> - `title` — The title associated with the matching result.
> - `description` — The available result description or snippet.
> - `url` — The source URL associated with the result.
> - `email` — The email address extracted from the matching result.

The dataset view is optimized around `keyword`, `title`, `description`, `url`, and `email`, making the results easy to scan as a lead list.

#### 🔹 Sample Output

A typical result may look like this:

```json
{
  "network": "Baidu.com",
  "keyword": "fitness coach",
  "title": "Professional Fitness Coach",
  "description": "Online fitness coaching and contact: coach@example.com",
  "url": "https://www.baidu.com/...",
  "email": "coach@example.com"
}
```

The exact records returned depend on what publicly indexed information is available for your selected search terms and email domains.

### 🛠️ Baidu Email Scraper – How to Use It

Using the **Baidu Email Scraper** requires only a few configuration choices. For better targeting, start with several related keywords rather than relying on one broad term.

#### 🔹 1. Add Your Keywords

Enter keywords or queries describing the people, businesses, roles, services, or topics you want to research.

For example:

```json
{
  "keywords": [
    "fitness coach",
    "fitness trainer",
    "personal trainer",
    "online fitness coach"
  ]
}
```

Specific keyword variations can produce more focused search coverage than a single broad term.

#### 🔹 2. Add a Location When Needed

Use the `location` field when you want to narrow the search geographically.

Examples include:

```text
United States
New York
London
Toronto
Bangladesh
California
```

Leaving the location empty allows the search to run without a geographic term.

#### 🔹 3. Select Email Domains

Use `customDomains` to specify the email suffixes you want to discover.

Example:

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

You can also provide business or organization-specific domains when they are relevant to your research.

#### 🔹 4. Set the Email Target

The `maxEmails` field accepts values from `1` through `10000`.

For example:

```json
{
  "maxEmails": 20
}
```

The target is applied independently to each **keyword + email domain combination**. For example, with 3 keywords and 2 domains, a target of 20 can allow the Actor to work through six combinations, subject to what can actually be found.

#### 🔹 5. Add Exclusion Terms

Use `excludeWords` to skip results whose description contains unwanted words or phrases.

Example:

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

Single words are matched as whole words without regard to capitalization, while phrases are matched without regard to capitalization as well.

### 🔎 How to Get More Baidu Email Scraper Results

The **Baidu Email Scraper** can only collect email addresses that are publicly discoverable in the indexed information it processes. A low result count does not necessarily mean the Actor is malfunctioning; it can indicate that your search criteria are too restrictive.

> 💡 **Optimization tips**
>
> - Use several closely related keywords rather than one generic keyword.
> - Combine professional titles with service or industry terms.
> - Test multiple common email domains.
> - Remove the location filter when worldwide coverage is acceptable.
> - Broaden a very specific search if the result count is low.
> - Use exclusion terms only when they are genuinely necessary.
> - Start with a modest target and increase it after evaluating result quality.

For example, instead of searching only for `manager`, consider:

```text
marketing manager
sales manager
business development manager
operations manager
marketing director
```

This approach gives the **Baidu Email Scraper** more relevant search variations to process.

### 🎯 Can You Search for Specific Types of Contacts?

Yes. The **Baidu Email Scraper** can be configured around many types of keyword-driven research, provided matching public information exists.

#### 🔹 Business and Sales Research

Useful keyword examples include:

```text
business owner
company founder
sales manager
marketing director
business development
agency owner
```

These searches can help identify publicly listed contact details associated with business-oriented pages.

#### 🔹 Professional and Industry Research

You can target professions and specialties such as:

```text
software developer
graphic designer
real estate agent
fitness coach
photographer
consultant
```

#### 🔹 Location-Based Prospecting

Combining a role with a location can make searches more focused:

```text
real estate agent New York
fitness trainer London
software developer Toronto
```

The location field can also be used separately so that the same keyword set can be tested against different regions.

#### 🔹 Market and Audience Research

Researchers can use topic-based keywords related to industries, services, product categories, or communities to discover publicly indexed contact information.

The quality and quantity of the resulting dataset will depend on the availability of matching public content.

### 📥 Input

The **Baidu Email Scraper** accepts the following configuration fields:

| Field           | Type    | Required | Description                                                      |
| --------------- | ------- | -------- | ---------------------------------------------------------------- |
| `keywords`      | Array   | Yes      | Keywords or search queries to process                            |
| `location`      | String  | No       | Country, state, city, or geographic term used to narrow searches |
| `customDomains` | Array   | No       | Email domain suffixes to target                                  |
| `maxEmails`     | Integer | No       | Target number of emails per keyword + domain combination         |
| `excludeWords`  | Array   | No       | Words or phrases that cause matching descriptions to be skipped  |

> ⚙️ **Example Input**
>
> ```json
> {
>   "keywords": [
>     "fitness coach",
>     "personal trainer",
>     "online fitness coach"
>   ],
>   "location": "New York",
>   "customDomains": [
>     "@gmail.com",
>     "@outlook.com",
>     "@yahoo.com"
>   ],
>   "maxEmails": 20,
>   "excludeWords": [
>     "crypto"
>   ]
> }
> ```

#### 🔹 `keywords`

A list of keywords or queries to search. This is the primary targeting field and is required.

More specific keyword combinations generally make it easier to target the intended audience.

#### 🔹 `location`

An optional geographic filter. It accepts free-form text, allowing entries such as a country, state, city, or region.

#### 🔹 `customDomains`

A list of email suffixes to look for. The default configuration targets `@gmail.com`.

#### 🔹 `maxEmails`

An integer between **1 and 10,000**. It controls how many matching email addresses the Actor targets for each keyword + domain combination.

#### 🔹 `excludeWords`

A list of words or phrases used to filter out unwanted result descriptions before an email is collected.

### 📤 Output

The **Baidu Email Scraper** stores its results in an Apify dataset using structured records.

> 📊 **Output / Data Fields**
>
> | Field         | Description                               |
> | ------------- | ----------------------------------------- |
> | `network`     | Source network identifier                 |
> | `keyword`     | Search keyword responsible for the result |
> | `title`       | Result title                              |
> | `description` | Result description/snippet                |
> | `url`         | Source result URL                         |
> | `email`       | Extracted email address                   |

The dataset can be reviewed in Apify's dataset interface, where the configured view presents the lead-oriented fields in a table.

### 💼 Baidu Email Scraper – Use Cases

The **Baidu Email Scraper** is suitable for several legitimate research and prospecting workflows involving publicly available contact information.

> 🎯 **Common Use Cases**
>
> - **Lead generation** — Discover publicly listed contacts matching professional or business keywords.
> - **Sales prospecting** — Build targeted research lists around roles, industries, or regions.
> - **Market research** — Identify publicly available contact information connected to a market segment.
> - **Agency research** — Find potential businesses, specialists, or service providers.
> - **Recruitment research** — Explore publicly indexed professional pages around specific roles.
> - **B2B research** — Combine job titles, business terms, locations, and company domains.
> - **Audience discovery** — Research publicly listed contacts around niche topics.
> - **Competitive research** — Explore publicly indexed pages associated with specific commercial categories.

Use the data responsibly and ensure your outreach activities comply with applicable privacy, anti-spam, and data-protection requirements.

### 💳 Pricing and Result Limits

The Actor configuration does not define a fixed monetary price, so no specific per-run or per-email price is stated here.

However, the Actor code applies a clear result restriction for free users:

> 💰 **Pricing / Usage Behavior**
>
> - **Free users:** Up to **100 emails** can be collected by the Actor.
> - **Paid users:** The Actor does not apply that 100-email free-tier ceiling.
> - `maxEmails` still controls the requested target for each keyword + domain combination.
> - The Actor processes only email addresses that can actually be discovered from matching public indexed results.
> - Repeated email addresses are deduplicated before being added to the dataset.

Your actual Apify billing may depend on the Actor's current Store pricing and usage configuration. The `actor.json` provided for this documentation does not specify a fixed price.

### ⏱️ Tips and Important Notes

The **Baidu Email Scraper** is designed to search broadly across keyword and domain combinations, but no scraper can guarantee a particular number of emails.

> ⚠️ **Important Notes**
>
> - Results depend on publicly indexed pages and the information visible in matching search results.
> - A target of 1,000 does not guarantee 1,000 available emails.
> - Narrow keywords can produce sparse datasets.
> - Adding related keywords can improve search coverage.
> - Adding more email domains can expose additional matching contacts.
> - A restrictive location can reduce the number of matching results.
> - Exclusion terms can intentionally reduce output by removing matching snippets.
> - Free users are capped at 100 collected emails.
> - The Actor can store progress and continue processing from its saved run state after interruptions.

For large searches, using the suggested run timeout settings in Apify can be helpful because wide keyword and domain combinations require more search activity.

### ❓ Frequently Asked Questions

#### 🔹 What is the Baidu Email Scraper?

The **Baidu Email Scraper** is an Apify Actor that searches for publicly available email addresses associated with Baidu-indexed pages using your selected keywords, email domains, and optional location filters.

#### 🔹 How does the Baidu Email Scraper find email addresses?

The Actor processes matching public search results, examines their available result information, and extracts email addresses that match the email-domain suffixes you specify.

#### 🔹 Can I search for Gmail addresses with the Baidu Email Scraper?

Yes. `@gmail.com` is the default email domain, and you can add additional domains such as `@yahoo.com` or `@outlook.com`.

#### 🔹 Can I search for multiple keywords at once?

Yes. The `keywords` input accepts an array, so you can provide multiple professional roles, industries, services, or search phrases in one run.

#### 🔹 Can I target a specific country or city?

Yes. Use the `location` field to add a country, state, city, or other geographic term. You can also leave it empty when geographic filtering is not required.

#### 🔹 What is the maximum number of emails I can request?

The `maxEmails` input accepts values from **1 to 10,000**. The configured target applies to each keyword + domain combination, while free users are additionally limited to 100 collected emails overall by the Actor.

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

A target is a maximum collection goal, not a guarantee. Fewer results can occur when the selected keywords are too narrow, the location is restrictive, the requested email domains are uncommon, or matching public information is limited.

#### 🔹 Can I exclude unwanted topics from the results?

Yes. Add words or phrases to `excludeWords`. When a matching term appears in a result description, that result is skipped.

#### 🔹 Does the Baidu Email Scraper remove duplicate emails?

Yes. The Actor tracks previously discovered email addresses and avoids adding the same email repeatedly during processing.

#### 🔹 What data does the Baidu Email Scraper return?

The main lead fields are `keyword`, `title`, `description`, `url`, and `email`. The produced record also contains a `network` field identifying Baidu.com.

#### 🔹 Is the Baidu Email Scraper useful for B2B lead research?

Yes. You can combine job titles, business roles, industries, locations, and company email domains to create targeted research queries based on publicly available information.

### 🔧 Best Practices for Better Search Coverage

A reliable strategy is to begin with several precise keywords and expand based on the quality of the first results.

For example, a lead-research workflow for the fitness industry could use:

```json
{
  "keywords": [
    "fitness coach",
    "personal trainer",
    "online fitness coach",
    "fitness studio owner",
    "fitness instructor"
  ],
  "customDomains": [
    "@gmail.com",
    "@outlook.com",
    "@yahoo.com"
  ],
  "maxEmails": 25
}
```

For regional research, add a location such as `New York` or `California`. For broader discovery, leave the location empty and let the keyword and domain combinations determine the coverage.

The **Baidu Email Scraper** works best when your inputs reflect the actual audience you want to research rather than using a single extremely broad search term.

### 📞 Support

For questions, improvements, custom scraper requirements, or bespoke Apify Actor development, 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": [
    "manager",
    "cosmeBusiness Ownertics"
  ],
  "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": [
        "manager",
        "cosmeBusiness Ownertics"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

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

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

```

## MCP server setup

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