# WeChat Email Scraper (`leads-scraper/wechat-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/wechat-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

### WeChat Email Scraper: public email extraction from indexed WeChat pages

The WeChat Email Scraper is an Apify Actor that collects publicly indexed email addresses connected to WeChat content. It runs Google `site:` queries against `wechat.com`, `weixin.qq.com` and `mp.weixin.qq.com`, then parses the returned search results for contact details.

Read this before you run the WeChat Email Scraper. **WeChat has no public user profile pages.** There is no open directory of members, and personal accounts are not crawlable by any tool, including this one.

Everything the WeChat Email Scraper returns therefore comes from indexed article pages, official-account (公众号) content and public help or business pages — typically a supplier, agency, media or partnership address published inside an article. Volume is low compared with open social networks.

If your goal is bulk creator or influencer contact discovery, start with the [Instagram Email Scraper](https://apify.com/leads-scraper/instagram-email-scraper) or the [TikTok Email Scraper](https://apify.com/leads-scraper/tiktok-email-scraper) and treat this WeChat email extractor as a niche supplement for China-facing research.

#### Scope: what this Actor can and cannot do

| It can | It cannot |
|---|---|
| Find emails published in indexed WeChat articles and official-account pages | Read WeChat member profiles — they are not public |
| Filter results to chosen email domains such as `@gmail.com` | Log in, use the WeChat API, or open WeChat itself |
| Return structured data with account metadata and the source query | Access private chats, Moments, groups or contact lists |
| Deduplicate every email across the whole run | Guarantee any particular volume of leads |

The WeChat Email Scraper never authenticates. There is no browser, no JavaScript rendering, no cookies and no session with WeChat. All data collection performed by the WeChat Email Scraper happens against public Google search results, which is also why it is fast and cheap to run.

### Key features of the WeChat Email Scraper

| Feature | What it means in practice |
|---|---|
| Google `site:` targeting | Queries are scoped to `wechat.com`, `weixin.qq.com` and `mp.weixin.qq.com` |
| Query expansion | Base, quoted and `intitle:` variants plus one variant per query modifier |
| Domain filtering | Only emails on your `customDomains` list are kept |
| Global deduplication | An email is written once per run, no matter how many queries surface it |
| Email normalisation | Understands `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` does not match 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 |
| Concurrency | An `asyncio` worker pool runs several queries in parallel with a shared stop signal |
| Retry logic | Up to 3 attempts per page with exponential backoff and a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Resumable state | Progress is stored in the key-value store and saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Fallback parser | If Google's markup changes, the run degrades to "emails without account details" instead of zero results |

Base queries always run first, so the WeChat Email Scraper puts the most direct matches into your dataset before the expanded variants begin. Every feature above is shared engine behaviour, tuned here with WeChat-specific domains and modifiers.

### How the WeChat Email Scraper works

The WeChat Email Scraper pipeline has six stages:

1. It reads your input: keywords, location, email domains and limits.
2. It builds Google queries with the `site:` operator, for example `site:mp.weixin.qq.com supplier "@gmail.com" "Shenzhen"`.
3. It fetches Google result pages through the Apify **GOOGLE\_SERP** proxy using async `aiohttp` requests.
4. It parses each result block structurally — it locates the `<h3>` title, then the smallest surrounding block — rather than relying on Google's CSS class names.
5. It extracts emails from the block text with a domain-filtered regular expression.
6. It deduplicates globally and pushes each lead to the Apify dataset immediately.

Because the WeChat Email Scraper works on search results rather than the site itself, it is not a browser-based crawler. Pagination is handled by walking Google's result pages up to your page cap.

### Input fields

All input for the WeChat Email Scraper is plain JSON. Only `keywords` is required.

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | array (required) | `["business", "supplier"]` | Search terms: niche, job title or industry |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com","@yahoo.com"]` | Only emails on these domains are kept; the `@` is optional |
| `maxEmails` | integer 1-10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, DE, CN...) |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email","contact","business","cooperation"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1-50 | `30` | Pagination cap per query |
| `maxConcurrency` | integer 1-20 | `5` | Parallel queries |

The default modifiers shipped with the WeChat Email Scraper are tuned for WeChat, where `contact` and `cooperation` (商务合作) are the phrases that most often sit next to a published address.

#### JSON input example for the WeChat Email Scraper

```json
{
  "keywords": ["electronics supplier", "trading company"],
  "location": "Shenzhen",
  "customDomains": ["@gmail.com", "@163.com"],
  "maxEmails": 50,
  "countryCode": "CN",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "cooperation"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

### Output schema and dataset

Every dataset item produced by the WeChat Email Scraper carries the same 14 fields, so the output schema is stable enough to map straight into a CRM.

| Field | Meaning |
|---|---|
| `network` | Platform name — always `WeChat` |
| `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 article titles |
| `username` | URL-safe handle when exposed; otherwise `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty |
| `url` | Direct WeChat link when exposed, else the profile URL |
| `description` | Snippet text, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain, e.g. `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output record

This is an honest example of what the WeChat Email Scraper really returns: WeChat rarely exposes a handle to Google, so `username` is `null` and `profileUrl` is empty.

```json
{
  "network": "WeChat",
  "keyword": "electronics supplier",
  "query": "site:mp.weixin.qq.com electronics supplier \"@gmail.com\" cooperation \"Shenzhen\"",
  "title": "深圳电子元器件供应 - 商务合作",
  "accountName": "华南电子采购",
  "fullName": "",
  "username": null,
  "profileUrl": "",
  "url": "https://mp.weixin.qq.com/s/8Kq2xR4nT7dVwLmPzYbAcQ",
  "description": "商务合作请联系 sz.parts.sourcing@gmail.com，欢迎供应商洽谈。",
  "email": "sz.parts.sourcing@gmail.com",
  "emailDomain": "@gmail.com",
  "possiblyTruncated": false,
  "foundAt": "2026-08-31T09:14:22.481Z"
}
```

Export the WeChat Email Scraper dataset as JSON, CSV, Excel or XML from the Apify console, or pull the structured data through the Apify API. The WeChat Email Scraper writes each lead the moment it is found, so you can stream results while the run is still going.

### Use cases for the WeChat Email Scraper

| Use case | How the WeChat Email Scraper helps |
|---|---|
| China-facing supplier research | Surfaces sourcing and trading contacts published in official-account articles |
| Cross-border partnership outreach | Finds 商务合作 addresses attached to indexed WeChat content |
| Agency and media prospecting | Collects marketing-agency contacts that publish on WeChat |
| Market research | Builds a structured dataset of who publishes on a topic and how to reach them |
| Enrichment | Adds a WeChat-sourced address to leads found by other Actors in the family |

For consumer-brand and creator outreach the yield is far better on [Weibo Email Scraper](https://apify.com/leads-scraper/weibo-email-scraper) and [Zhihu Email Scraper](https://apify.com/leads-scraper/zhihu-email-scraper), which both index public pages far more heavily than WeChat does.

### Tips for better results

These four adjustments do the most to lift what the WeChat Email Scraper returns.

Use commercial nouns rather than personal ones. `supplier`, `factory`, `distributor` and `agency` outperform `creator` on this platform.

Add `@163.com`, `@qq.com` or `@126.com` to `customDomains`. Chinese business addresses on WeChat are often not Gmail.

Keep `expandQueries` on. Google caps a single query at roughly 300 results, and query expansion is how the WeChat Email Scraper works around that ceiling.

Set `countryCode` to `CN`, `HK` or `SG` to shift which indexed pages the search proxy hands the WeChat Email Scraper.

### Limitations of the WeChat Email Scraper

Be realistic about the WeChat Email Scraper. These constraints are structural, not bugs.

- **WeChat publishes no public user profiles.** The WeChat Email Scraper therefore reads indexed article and official-account pages only, so volume is low. This is the single most important expectation to set.
- Only emails that are already **publicly visible in Google's index** can be found. Nothing private is accessed.
- Google caps a single query at roughly **300 results**, which is exactly why query expansion exists.
- `username` and `profileUrl` are only populated when a handle appears in Google's result. On WeChat that is uncommon, so most rows have `accountName` but an empty handle. This is a Google limitation, not a bug.
- `possiblyTruncated: true` means Google's snippet ellipsis may have cut the address — verify before sending.
- The WeChat Email Scraper **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.
- Results vary with keywords, domains and location. No volume is guaranteed.

### Related Actors

Every Actor below runs the same engine as the WeChat Email Scraper against a different platform. For higher yield, start with the large open social networks.

| Actor | What it collects |
|---|---|
| [WeChat Email and Phone Number Scraper](https://apify.com/leads-scraper/wechat-email-and-phone-number-scraper) | Emails and phone numbers from WeChat |
| [WeChat Phone Number Scraper](https://apify.com/leads-scraper/wechat-phone-number-scraper) | Public phone numbers from WeChat |
| [Behance Email Scraper](https://apify.com/leads-scraper/behance-email-scraper) | Public contact emails from Behance |
| [Bigo Live Email Scraper](https://apify.com/leads-scraper/bigo-live-email-scraper) | Public contact emails from Bigo Live |
| [Bluesky Email Scraper](https://apify.com/leads-scraper/bluesky-email-scraper) | Public contact emails from Bluesky |
| [Bumble Email Scraper](https://apify.com/leads-scraper/bumble-email-scraper) | Public contact emails from Bumble |
| [Clubhouse Email Scraper](https://apify.com/leads-scraper/clubhouse-email-scraper) | Public contact emails from Clubhouse |
| [Dailymotion Email Scraper](https://apify.com/leads-scraper/dailymotion-email-scraper) | Public contact emails from Dailymotion |
| [DeviantArt Email Scraper](https://apify.com/leads-scraper/deviantart-email-scraper) | Public contact emails from DeviantArt |
| [Discord Email Scraper](https://apify.com/leads-scraper/discord-email-scraper) | Public contact emails from Discord |
| [Dribbble Email Scraper](https://apify.com/leads-scraper/dribbble-email-scraper) | Public contact emails from Dribbble |
| [Facebook Email Scraper](https://apify.com/leads-scraper/facebook-email-scraper) | Public contact emails from Facebook |
| [Goodreads Email Scraper](https://apify.com/leads-scraper/goodreads-email-scraper) | Public contact emails from Goodreads |
| [Hinge Email Scraper](https://apify.com/leads-scraper/hinge-email-scraper) | Public contact emails from Hinge |
| [Instagram Email Scraper](https://apify.com/leads-scraper/instagram-email-scraper) | Public contact emails from Instagram |
| [KakaoTalk Email Scraper](https://apify.com/leads-scraper/kakaotalk-email-scraper) | Public contact emails from KakaoTalk |
| [Kick Email Scraper](https://apify.com/leads-scraper/kick-email-scraper) | Public contact emails from Kick |
| [Lemon8 Email Scraper](https://apify.com/leads-scraper/lemon8-email-scraper) | Public contact emails from Lemon8 |
| [Likee Email Scraper](https://apify.com/leads-scraper/likee-email-scraper) | Public contact emails from Likee |
| [LINE Email Scraper](https://apify.com/leads-scraper/line-email-scraper) | Public contact emails from LINE |
| [LinkedIn Email Scraper](https://apify.com/leads-scraper/linkedin-email-scraper) | Public contact emails from LinkedIn |
| [Mastodon Email Scraper](https://apify.com/leads-scraper/mastodon-email-scraper) | Public contact emails from Mastodon |
| [Medium Email Scraper](https://apify.com/leads-scraper/medium-email-scraper) | Public contact emails from Medium |
| [Mixcloud Email Scraper](https://apify.com/leads-scraper/mixcloud-email-scraper) | Public contact emails from Mixcloud |
| [Patreon Email Scraper](https://apify.com/leads-scraper/patreon-email-scraper) | Public contact emails from Patreon |
| [Pinterest Email Scraper](https://apify.com/leads-scraper/pinterest-email-scraper) | Public contact emails from Pinterest |
| [Quora Email Scraper](https://apify.com/leads-scraper/quora-email-scraper) | Public contact emails from Quora |
| [Reddit Email Scraper](https://apify.com/leads-scraper/reddit-email-scraper) | Public contact emails from Reddit |
| [Rumble Email Scraper](https://apify.com/leads-scraper/rumble-email-scraper) | Public contact emails from Rumble |
| [Snapchat Email Scraper](https://apify.com/leads-scraper/snapchat-email-scraper) | Public contact emails from Snapchat |
| [SoundCloud Email Scraper](https://apify.com/leads-scraper/soundcloud-email-scraper) | Public contact emails from SoundCloud |
| [Substack Email Scraper](https://apify.com/leads-scraper/substack-email-scraper) | Public contact emails from Substack |
| [Telegram Email Scraper](https://apify.com/leads-scraper/telegram-email-scraper) | Public contact emails from Telegram |
| [Threads Email Scraper](https://apify.com/leads-scraper/threads-email-scraper) | Public contact emails from Threads |
| [TikTok Email Scraper](https://apify.com/leads-scraper/tiktok-email-scraper) | Public contact emails from TikTok |
| [Tinder Email Scraper](https://apify.com/leads-scraper/tinder-email-scraper) | Public contact emails from Tinder |
| [Tumblr Email Scraper](https://apify.com/leads-scraper/tumblr-email-scraper) | Public contact emails from Tumblr |
| [Twitch Email Scraper](https://apify.com/leads-scraper/twitch-email-scraper) | Public contact emails from Twitch |
| [Vimeo Email Scraper](https://apify.com/leads-scraper/vimeo-email-scraper) | Public contact emails from Vimeo |
| [VK Email Scraper](https://apify.com/leads-scraper/vk-email-scraper) | Public contact emails from VK |
| [Weibo Email Scraper](https://apify.com/leads-scraper/weibo-email-scraper) | Public contact emails from Weibo |
| [X Email Scraper](https://apify.com/leads-scraper/x-email-scraper) | Public contact emails from X |

### FAQ

#### How many results should I expect from the WeChat Email Scraper?

Few. WeChat has no public profile directory, so the addressable index is small — often single-digit to low-double-digit emails for a broad run, and sometimes zero for a narrow niche. Treat the WeChat Email Scraper as a supplement, not a primary list-building tool.

#### Does the WeChat Email Scraper access private or member-only data?

No. It never logs in, never touches the WeChat API and never opens WeChat. It reads publicly indexed Google search results only. Private chats, Moments and contact lists are entirely out of reach.

#### Why is `username` empty on most rows?

WeChat rarely exposes a URL-safe handle in Google's results, so the WeChat Email Scraper leaves `username` as `null` and `profileUrl` empty. `accountName` still records the label Google prints.

#### Which domains does the WeChat Email Scraper search?

The WeChat Email Scraper is scoped to `wechat.com`, `weixin.qq.com` and `mp.weixin.qq.com`.

#### Can I use the WeChat Email Scraper through the Apify API?

Yes. Start a run with your JSON input and read the dataset back over the API like any other Actor.

#### Can I collect `@qq.com` or `@163.com` addresses?

Yes. Put them in `customDomains`. That single change usually matters more than any other tweak for this WeChat email extractor.

#### Does the WeChat Email Scraper need a proxy?

Yes. The Apify GOOGLE\_SERP proxy is required. Without Apify proxy credentials the WeChat Email Scraper cannot fetch search results at all.

#### What does `possiblyTruncated` mean?

Google shortened the snippet near the address, so the email may be incomplete. Verify those rows before adding them to an outreach sequence.

#### Can I resume an interrupted WeChat Email Scraper run?

Yes. State is stored in the key-value store, keyed by a hash of your input, and survives migrations and aborts.

#### How do I increase WeChat lead generation output?

Widen `keywords`, add more `customDomains`, keep `expandQueries` on, raise `maxPagesPerQuery`, and accept that the ceiling on this platform is genuinely low.

#### Is this affiliated with WeChat or Tencent?

No. The WeChat Email Scraper is an independent Apify Actor with no affiliation, endorsement or official relationship with WeChat or Tencent.

#### Which Actor should I use instead for volume?

[Weibo Email Scraper](https://apify.com/leads-scraper/weibo-email-scraper), [Facebook Email Scraper](https://apify.com/leads-scraper/facebook-email-scraper) or [YouTube Email Scraper](https://apify.com/leads-scraper/youtube-email-scraper) all index far more public pages.

#### Are the emails verified?

No. The WeChat Email Scraper performs contact discovery, not deliverability verification. Run the export through your own verification step before sending.

#### Is the WeChat Email Scraper suitable for compliant outreach?

It surfaces addresses that are already public, but you remain responsible for GDPR, PIPL, CAN-SPAM and any other rules that apply to your outreach.

### Leave a review

If the WeChat 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 about the WeChat Email Scraper, bug reports or a custom build? Email **neurodata.apify@gmail.com**.

# Actor input Schema

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

Search terms describing the WeChat 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 WeChat.

## `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": [
    "business",
    "supplier"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "business",
    "cooperation"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by WeChat 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": [
        "business",
        "supplier"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "business",
        "cooperation"
    ]
};

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

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

```

## MCP server setup

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