# Made-in-China Email Scraper (`leads-scraper/made-in-china-email-scraper`) Actor

Made-in-China Email Scraper SD - Made-in-China Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Made-in-China results by keyword, location and email domain - Made-in-China email extractor.

- **URL**: https://apify.com/leads-scraper/made-in-china-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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

### Made-in-China Email Scraper: public showroom emails from mainland factories

The Made-in-China Email Scraper collects the contact emails that mainland Chinese factories publish on their public `made-in-china.com` showroom pages, together with the company name and showroom URL.

Be clear about the yield before you run it. Made-in-China routes buyer contact through its own messaging, so this Actor finds only the emails suppliers publish on their public showroom pages - expect few addresses per run.

In a measured run the Made-in-China Email Scraper read 10 result blocks, resolved company identity on 8, produced 7 showroom URLs and returned 2 unique emails. Identity is good; email volume is thin.

If you need volume today, the [Tradewheel Email Scraper](https://apify.com/leads-scraper/tradewheel-email-scraper) and [DIYTrade Email Scraper](https://apify.com/neuro-scraper/diytrade-email-scraper) return far more addresses per run.

### What the Made-in-China Email Scraper actually does

The Made-in-China Email Scraper builds Google queries with the `site:` operator scoped to `made-in-china.com`, fetches result pages through the Apify GOOGLE_SERP proxy, and reads emails from titles and snippets.

The Made-in-China Email Scraper does not log into the platform, use its API, or open the website. No browser, no JavaScript rendering, no authentication, no cookies.

Everything it returns is already public in Google's index. It is a supplier email list assembled from what exporters chose to put on the open web.

Made-in-China leans heavily towards industry: machinery, hardware, building materials, chemicals, pumps, valves and components. That is the terrain where the Made-in-China Email Scraper earns its keep.

Suppliers there publish export-sales addresses on purpose, because inbound enquiries are their business. The Made-in-China Email Scraper simply gathers the published ones into a single dataset.

### Made-in-China Email Scraper features at a glance

| Feature | What it means for china manufacturer contacts |
|---|---|
| Google `site:` search | Every query is scoped to `made-in-china.com`, so results stay on-platform |
| Query expansion | Base, quoted and `intitle:` variants plus one per query modifier; base queries run first |
| Global deduplication | Each email is pushed once across every query and every page |
| Email normalisation | Handles `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` never matches inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Drops a hit that is only the tail of another email in the same result block |
| Structural block parsing | Locates the `<h3>` title then the smallest surrounding block, not Google CSS class names |
| Whole-page fallback parser | A markup change degrades to "emails without account details", never to "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Retries and re-queue | Up to 3 attempts per page with exponential backoff and a fresh proxy session; failed queries re-queued once |
| Resumable state | Kept in the key-value store keyed by an input hash; saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Concurrency | An `asyncio` worker pool with a shared stop signal on `maxEmails` |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

Those are shared engine capabilities. The Made-in-China Email Scraper specialises them with the `made-in-china.com` domain scope, `manufacturer` and `supplier` defaults, and export-tuned modifiers.

### How the Made-in-China Email Scraper works, step by step

1. The Made-in-China Email Scraper reads your keywords, location, email domains and limits.
2. It composes Google queries such as `site:made-in-china.com manufacturer "@163.com" "Zhejiang"`.
3. It fetches result pages asynchronously through the Apify GOOGLE_SERP proxy using `aiohttp`.
4. It parses each block structurally to isolate title, snippet and site label.
5. It extracts emails with a domain-filtered regex, normalises them and drops junk.
6. It deduplicates globally and pushes each lead straight to the Apify dataset.

Made-in-China gives every supplier its own subdomain, in the form `suppliername.en.made-in-china.com`. That subdomain is the handle, which is why the Made-in-China Email Scraper resolves showroom URLs on most rows.

Because the Made-in-China Email Scraper streams rows to the dataset as it finds them, you can export to CSV, JSON or Excel while the run is still going.

### Made-in-China Email Scraper input fields

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["manufacturer", "supplier"]` | Search terms: niche, product vertical, job title, industry |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com", "@yahoo.com"]` | Only emails on these domains are kept; the leading `@` is optional |
| `maxEmails` | integer 1-10000 | `20` | Stop once this many unique emails have been collected |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email", "contact", "export", "wholesale", "sales enquiries"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1-50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1-20 | `5` | How many queries run in parallel |

#### Example input for the Made-in-China Email Scraper

```json
{
  "keywords": [
    "hydraulic press manufacturer",
    "CNC machining center supplier",
    "厂家 液压机",
    "供应商 数控机床"
  ],
  "location": "Jiangsu",
  "customDomains": ["@163.com", "@126.com", "@qq.com", "@gmail.com", "@foxmail.com"],
  "maxEmails": 300,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "export", "wholesale", "sales enquiries"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Simplified Chinese keywords are a genuine lever on the Made-in-China Email Scraper. Terms such as `厂家` (factory), `供应商` (supplier), `出口` (export) and `批发` (wholesale) reach pages the English index misses.

Chinese-hosted mailbox domains matter just as much. Mainland export-sales staff publish `@163.com`, `@126.com`, `@qq.com` and `@foxmail.com` far more often than a corporate address.

### Made-in-China Email Scraper output fields

Every dataset item the Made-in-China Email Scraper pushes carries all fourteen fields below, so your CRM mapping never changes between runs.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints |
| `fullName` | Display name parsed from a profile-style title; empty for listing captions |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Company or listing snippet, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain, for example `@163.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output from the Made-in-China Email Scraper

```json
{
  "network": "Made-in-China",
  "keyword": "hydraulic press manufacturer",
  "query": "site:made-in-china.com hydraulic press manufacturer \"@163.com\" \"Jiangsu\"",
  "title": "Nantong Hongli Machinery Co., Ltd. - Hydraulic Press, Shearing Machine",
  "accountName": "Nantong Hongli Machinery Co., Ltd.",
  "fullName": "Nantong Hongli Machinery Co., Ltd.",
  "username": "nthongli",
  "profileUrl": "https://nthongli.en.made-in-china.com/",
  "url": "https://nthongli.en.made-in-china.com/company-info.html",
  "description": "Hydraulic presses 63T-1000T, CE certified. Export dept: hongli.export@163.com",
  "email": "hongli.export@163.com",
  "emailDomain": "@163.com",
  "possiblyTruncated": false,
  "foundAt": "2026-08-31T11:20:15Z"
}
```

### Who uses the Made-in-China Email Scraper

The Made-in-China Email Scraper suits industrial buyers rather than consumer-goods resellers. Machinery, components and materials are where this marketplace is deepest.

| Buyer type | How the Made-in-China Email Scraper fits their workflow |
|---|---|
| Importers and wholesale buyers | Shortlist machinery and hardware factories before an RFQ round |
| Procurement and sourcing agents | Keep alternate vendors on file per component category for benchmarking |
| Private-label and dropship brands | Locate OEM factories willing to quote low-MOQ industrial or houseware items |
| Freight forwarders and customs brokers | Reach heavy-cargo shippers on lanes you already service |
| Trade-show organisers | Recruit exhibitors for machinery, hardware or building-materials fairs |
| Quality-inspection firms | Approach factories in a province your inspectors already cover |
| Sales teams selling to manufacturers | Offer certification, tooling or logistics services to export-ready plants |

### Tuning the Made-in-China Email Scraper for better yield

Given the low baseline, tuning matters more here than on most platforms. Start by making keywords narrower, not broader.

Run the Made-in-China Email Scraper on three to eight precise product terms such as `plastic injection moulding machine manufacturer` rather than the bare default `manufacturer`.

Mix English and Simplified Chinese keywords in the same run. The two sets reach different indexed pages, and the Made-in-China Email Scraper deduplicates across them for you.

Set `location` to a province or cluster: `Zhejiang`, `Jiangsu`, `Guangdong`, `Shandong`, `Hebei`. Province-level targeting is how Chinese industry actually segments.

Use `countryCode` to shift the proxy locale. `US` and `GB` favour the English showroom pages; leaving it empty sometimes surfaces different mainland-oriented results.

Keep `expandQueries` on. Google caps a single query at roughly 300 results, and expansion is the designed workaround for that ceiling.

### What results to expect from the Made-in-China Email Scraper

The measured baseline is 10 result blocks, 8 with company identity, 7 showroom URLs and 2 unique emails.

That is the honest signature of a marketplace that wants enquiries inside its own inbox. The Made-in-China Email Scraper gives you excellent company identification and only a handful of direct addresses.

Many teams use the Made-in-China Email Scraper that way on purpose: harvest the showroom URLs, then work the shortlist through the platform's own enquiry flow.

Results vary with keywords, domains and location, and no volume is guaranteed. Run a small `maxEmails` first to calibrate.

### Made-in-China Email Scraper limitations

- **Yield.** Made-in-China routes buyer contact through its own messaging, so the Made-in-China Email Scraper finds only the emails suppliers publish on their public showroom pages - expect few addresses per run.
- The Made-in-China Email Scraper only finds accounts whose email is **publicly visible in Google's index**.
- Google caps a single query at roughly 300 results, which is exactly why query expansion exists.
- `possiblyTruncated: true` means Google's snippet ellipsis touched the address; verify before sending.
- The Actor requires the Apify GOOGLE_SERP proxy and cannot run without Apify proxy credentials.
- Free Apify plans are capped at 100 emails per run; paid plans are uncapped.
- `username` and `profileUrl` are populated only when Google exposes a handle. Where Google prints only a display name, those rows carry `accountName` and `fullName` with an empty handle. That is a Google limitation, not a bug.
- Results vary with keywords, domains and location; no volume is guaranteed.

### Responsible use, GDPR and trade compliance

Business contact data is still personal data in many jurisdictions. Under GDPR and comparable regimes you need a lawful basis, a stated purpose and a working opt-out before using anything the Made-in-China Email Scraper returns.

Keep outreach relevant to the factory's own trade, identify your company clearly, and honour unsubscribe requests on the first request.

Screen counterparties against your own sanctions, export-control and denied-party obligations before transacting. The Made-in-China Email Scraper performs no screening of its own.

None of this is legal advice. Take counsel if your sourcing programme touches restricted jurisdictions or controlled goods.

### Related Actors

| Actor | What it collects |
|---|---|
| [Made-in-China Email and Phone Number Scraper](https://apify.com/leads-scraper/made-in-china-email-and-phone-number-scraper) | Emails and phone numbers from Made-in-China |
| [Made-in-China Phone Number Scraper](https://apify.com/leads-scraper/made-in-china-phone-number-scraper) | Public phone numbers from Made-in-China |
| [Alibaba Email Scraper](https://apify.com/leads-scraper/alibaba-email-scraper) | Public contact emails from Alibaba |
| [DirectIndustry Email Scraper](https://apify.com/neuro-scraper/directindustry-email-scraper) | Public contact emails from DirectIndustry |
| [DIYTrade Email Scraper](https://apify.com/neuro-scraper/diytrade-email-scraper) | Public contact emails from DIYTrade |
| [ECPlaza Email Scraper](https://apify.com/neuro-scraper/ecplaza-email-scraper) | Public contact emails from ECPlaza |
| [Fibre2Fashion Email Scraper](https://apify.com/neuro-scraper/fibre2fashion-email-scraper) | Public contact emails from Fibre2Fashion |
| [Global Sources Email Scraper](https://apify.com/leads-scraper/global-sources-email-scraper) | Public contact emails from Global Sources |
| [GlobalSpec Email Scraper](https://apify.com/leads-scraper/globalspec-email-scraper) | Public contact emails from GlobalSpec |
| [HKTDC Sourcing Email Scraper](https://apify.com/neuro-scraper/hktdc-sourcing-email-scraper) | Public contact emails from HKTDC Sourcing |
| [IndiaMART Email Scraper](https://apify.com/leads-scraper/indiamart-email-scraper) | Public contact emails from IndiaMART |
| [IndustryStock Email Scraper](https://apify.com/neuro-scraper/industrystock-email-scraper) | Public contact emails from IndustryStock |
| [IQS Directory Email Scraper](https://apify.com/neuro-scraper/iqs-directory-email-scraper) | Public contact emails from IQS Directory |
| [Taiwantrade Email Scraper](https://apify.com/leads-scraper/taiwantrade-email-scraper) | Public contact emails from Taiwantrade |
| [Textile Infomedia Email Scraper](https://apify.com/leads-scraper/textile-infomedia-email-scraper) | Public contact emails from Textile Infomedia |
| [Textile World Email Scraper](https://apify.com/leads-scraper/textile-world-email-scraper) | Public contact emails from Textile World |
| [Thomas Scientific Email Scraper](https://apify.com/leads-scraper/thomas-scientific-email-scraper) | Public contact emails from Thomas Scientific |
| [TradeKey Email Scraper](https://apify.com/neuro-scraper/tradekey-email-scraper) | Public contact emails from TradeKey |
| [Tradewheel Email Scraper](https://apify.com/leads-scraper/tradewheel-email-scraper) | Public contact emails from Tradewheel |
| [Wer Liefert Was Email Scraper](https://apify.com/leads-scraper/wer-liefert-was-email-scraper) | Public contact emails from wlw |
| [DirectIndustry Email and Phone Number Scraper](https://apify.com/neuro-scraper/directindustry-email-and-phone-number-scraper) | Emails and phone numbers from DirectIndustry |
| [DIYTrade Email and Phone Number Scraper](https://apify.com/neuro-scraper/diytrade-email-and-phone-number-scraper) | Emails and phone numbers from DIYTrade |
| [ECPlaza Email and Phone Number Scraper](https://apify.com/neuro-scraper/ecplaza-email-and-phone-number-scraper) | Emails and phone numbers from ECPlaza |
| [Fibre2Fashion Email and Phone Number Scraper](https://apify.com/neuro-scraper/fibre2fashion-email-and-phone-number-scraper) | Emails and phone numbers from Fibre2Fashion |
| [Global Sources Email and Phone Number Scraper](https://apify.com/leads-scraper/global-sources-email-and-phone-number-scraper) | Emails and phone numbers from Global Sources |
| [GlobalSpec Email and Phone Number Scraper](https://apify.com/neuro-scraper/globalspec-email-and-phone-number-scraper) | Emails and phone numbers from GlobalSpec |
| [HKTDC Sourcing Email and Phone Number Scraper](https://apify.com/neuro-scraper/hktdc-sourcing-email-and-phone-number-scraper) | Emails and phone numbers from HKTDC Sourcing |
| [IndiaMART Email and Phone Number Scraper](https://apify.com/leads-scraper/indiamart-email-and-phone-number-scraper) | Emails and phone numbers from IndiaMART |
| [IndustryStock Email and Phone Number Scraper](https://apify.com/neuro-scraper/industrystock-email-and-phone-number-scraper) | Emails and phone numbers from IndustryStock |
| [IQS Directory Email and Phone Number Scraper](https://apify.com/neuro-scraper/iqs-directory-email-and-phone-number-scraper) | Emails and phone numbers from IQS Directory |
| [TradeKey Email and Phone Number Scraper](https://apify.com/neuro-scraper/tradekey-email-and-phone-number-scraper) | Emails and phone numbers from TradeKey |
| [wlw Email and Phone Number Scraper](https://apify.com/leads-scraper/wer-liefert-was-email-and-phone-number-scraper) | Emails and phone numbers from wlw |
| [DirectIndustry Phone Number Scraper](https://apify.com/neuro-scraper/directindustry-phone-number-scraper) | Public phone numbers from DirectIndustry |
| [DIYTrade Phone Number Scraper](https://apify.com/neuro-scraper/diytrade-phone-number-scraper) | Public phone numbers from DIYTrade |
| [ECPlaza Phone Number Scraper](https://apify.com/neuro-scraper/ecplaza-phone-number-scraper) | Public phone numbers from ECPlaza |
| [Fibre2Fashion Phone Number Scraper](https://apify.com/neuro-scraper/fibre2fashion-phone-number-scraper) | Public phone numbers from Fibre2Fashion |
| [Global Sources Phone Number Scraper](https://apify.com/leads-scraper/global-sources-phone-number-scraper) | Public phone numbers from Global Sources |
| [GlobalSpec Phone Number Scraper](https://apify.com/neuro-scraper/globalspec-phone-number-scraper) | Public phone numbers from GlobalSpec |
| [HKTDC Sourcing Phone Number Scraper](https://apify.com/neuro-scraper/hktdc-sourcing-phone-number-scraper) | Public phone numbers from HKTDC Sourcing |
| [IndiaMART Phone Number Scraper](https://apify.com/leads-scraper/indiamart-phone-number-scraper) | Public phone numbers from IndiaMART |
| [IndustryStock Phone Number Scraper](https://apify.com/neuro-scraper/industrystock-phone-number-scraper) | Public phone numbers from IndustryStock |
| [IQS Directory Phone Number Scraper](https://apify.com/neuro-scraper/iqs-directory-phone-number-scraper) | Public phone numbers from IQS Directory |

### Made-in-China Email Scraper FAQ

#### Does the Made-in-China Email Scraper log into the platform?

No. It reads Google search results through the Apify GOOGLE_SERP proxy. No login, no API key, no browser, no cookies.

#### Does it access contact details the platform keeps behind its messaging system?

No. The Made-in-China Email Scraper cannot see anything behind the enquiry or contact-supplier flow. It only reads addresses already public in Google's index.

#### How many results should I expect?

The measured run gave 10 result blocks, 8 with identity, 7 showroom URLs and 2 unique emails. Plan for strong identity data and a small number of direct addresses.

#### Why are there so few emails?

Made-in-China routes buyer contact through its own messaging. Only suppliers who publish an address on a public showroom page can be found this way.

#### Why do most rows still have a working profile URL?

Each supplier gets a subdomain in the form `suppliername.en.made-in-china.com`. That subdomain is the handle, so the Made-in-China Email Scraper can rebuild a canonical showroom URL.

#### Do Chinese-language keywords help?

Yes, noticeably. Add Simplified Chinese terms such as `厂家`, `供应商`, `出口` and `批发` next to your English keywords in the same run.

#### Which email domains should I add?

`@163.com`, `@126.com`, `@qq.com` and `@foxmail.com` alongside the defaults. Those are the mailboxes mainland sales teams actually publish.

#### Does `countryCode` change what I get?

Yes. It steers the search proxy locale, and different locales surface different slices of the index. Test `US`, `GB` and an empty value.

#### What is `possiblyTruncated` for?

Google sometimes clips a snippet mid-address. When the ellipsis touches the email the flag is `true`, so you can verify those rows before sending.

#### Can I resume an interrupted run?

Yes. State lives in the key-value store keyed by a hash of your input and is saved on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

#### Is this affiliated with Made-in-China?

No. The Made-in-China Email Scraper is an independent Actor, not supported, endorsed or affiliated with the platform.

#### What should I run if I want more emails?

Tradewheel, HKTDC Sourcing and DIYTrade all return substantially more addresses per run than the Made-in-China Email Scraper.

### Leave a review

If the Made-in-China Email Scraper saved you time, please leave a star rating and a short
review on the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, a bug, or a custom build? Email **neurodata.apify@gmail.com**.

# Actor input Schema

## `keywords` (type: `array`):

Search terms describing the Made-in-China accounts you want (niche, job title, industry).

## `location` (type: `string`):

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for Made-in-China.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

## `maxConcurrency` (type: `integer`):

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "manufacturer",
    "supplier"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "export",
    "wholesale",
    "sales enquiries"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Records produced by Made-in-China Email Scraper, stored in the run's default dataset.

# 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": [
        "manufacturer",
        "supplier"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "export",
        "wholesale",
        "sales enquiries"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/made-in-china-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": [
        "manufacturer",
        "supplier",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "export",
        "wholesale",
        "sales enquiries",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/made-in-china-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": [
    "manufacturer",
    "supplier"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "export",
    "wholesale",
    "sales enquiries"
  ]
}' |
apify call leads-scraper/made-in-china-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leads-scraper/made-in-china-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/bIHinmcldKdbK4ZDJ/builds/vdyVkkwhhtu5GYqZ4/openapi.json
