# Global Sources Email Scraper (`leads-scraper/global-sources-email-scraper`) Actor

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

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

### Global Sources Email Scraper: export-sales contacts from Asia's verified supplier marketplace

The Global Sources Email Scraper collects the public contact emails that Asian exporters publish on `globalsources.com`, along with the company name and profile URL beside each one.

Global Sources is the Hong Kong marketplace behind the consumer-electronics, mobile-accessory and home-products sourcing shows. Its supplier pages are well indexed, which is what makes the Global Sources Email Scraper effective.

In a measured run the Global Sources Email Scraper read 10 result blocks, resolved company identity on all 10, produced 10 profile URLs and returned 8 unique emails. That is one of the strongest yields in this family.

Everything comes from Google's public index. The Global Sources Email Scraper never logs in, never touches an API, and never opens the marketplace itself.

### What the Global Sources Email Scraper actually does

The Global Sources Email Scraper builds Google queries with the `site:` operator scoped to `globalsources.com`, fetches result pages through the Apify GOOGLE_SERP proxy, and reads emails out of titles and snippets.

There is no browser, no JavaScript rendering, no authentication and no cookies. The Global Sources Email Scraper is a search-index reader, not a crawler that walks the site.

Exporters on Global Sources publish sales inboxes deliberately, because inbound RFQs are the point of paying for a listing. This Actor gathers those published asia supplier contacts into one clean dataset.

Pair the Global Sources Email Scraper with the [HKTDC Sourcing Email Scraper](https://apify.com/neuro-scraper/hktdc-sourcing-email-scraper) for fuller coverage of the Hong Kong sourcing ecosystem.

### Global Sources Email Scraper features at a glance

| Feature | What it means for supplier prospecting |
|---|---|
| Google `site:` search | Every query is scoped to `globalsources.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 of the run |
| 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 | Finds the `<h3>` title then the smallest surrounding block, rather than trusting Google CSS class names |
| Whole-page fallback parser | A Google markup change degrades to "emails without account details", not "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, never 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 at the end |
| Resumable state | Run state lives 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. What makes this the Global Sources Email Scraper is the `globalsources.com` domain scope, the `manufacturer` and `exporter` defaults, and export-tuned query modifiers.

### How the Global Sources Email Scraper works, step by step

1. The Global Sources Email Scraper reads your input: keywords, location, email domains and limits.
2. It composes Google queries such as `site:globalsources.com exporter "@gmail.com" "Shenzhen"`.
3. It fetches Google result pages asynchronously through the Apify GOOGLE_SERP proxy using `aiohttp`.
4. It parses each result block structurally to isolate the title, the snippet and the site label.
5. It extracts emails with a domain-filtered regex, normalises them and drops obvious junk.
6. It deduplicates globally and pushes each lead to the Apify dataset immediately.

Because the Global Sources Email Scraper streams rows as it finds them, you can export supplier contacts to CSV, JSON or Excel while the run is still in progress.

Global Sources exposes readable company paths, which is why `username` and `profileUrl` resolved on every row of the measured test. Identity coverage here is unusually clean.

### Global Sources Email Scraper input fields

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["manufacturer", "exporter"]` | 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 Global Sources Email Scraper

```json
{
  "keywords": [
    "bluetooth earbuds manufacturer",
    "power bank exporter",
    "phone case OEM factory"
  ],
  "location": "Shenzhen",
  "customDomains": ["@gmail.com", "@163.com", "@qq.com", "@hotmail.com"],
  "maxEmails": 500,
  "countryCode": "HK",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "export", "wholesale", "sales enquiries"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Consumer electronics is the natural vertical for the Global Sources Email Scraper, but the same input pattern works for houseware, gifts, hardware, auto parts and fashion accessories.

Add a `location` such as `Shenzhen`, `Dongguan`, `Ningbo` or `Hong Kong` when you need a specific manufacturing cluster rather than a whole country.

### Global Sources Email Scraper output fields

Every dataset item the Global Sources Email Scraper pushes carries all fourteen fields below, so your CRM mapping stays identical 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 `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output from the Global Sources Email Scraper

```json
{
  "network": "Global Sources",
  "keyword": "bluetooth earbuds manufacturer",
  "query": "site:globalsources.com bluetooth earbuds manufacturer \"@gmail.com\" \"Shenzhen\"",
  "title": "Shenzhen Auralink Electronics Co., Ltd. - Global Sources",
  "accountName": "Shenzhen Auralink Electronics Co., Ltd.",
  "fullName": "Shenzhen Auralink Electronics Co., Ltd.",
  "username": "auralink-electronics",
  "profileUrl": "https://www.globalsources.com/auralink-electronics",
  "url": "https://www.globalsources.com/auralink-electronics",
  "description": "TWS earbuds and BT speakers, ODM welcome. Export sales: auralink.export@gmail.com",
  "email": "auralink.export@gmail.com",
  "emailDomain": "@gmail.com",
  "possiblyTruncated": false,
  "foundAt": "2026-08-31T10:02:47Z"
}
```

### Who uses the Global Sources Email Scraper

The Global Sources Email Scraper suits people who buy at wholesale volume and need a first-contact list before an RFQ round.

| Buyer type | How the Global Sources Email Scraper fits their workflow |
|---|---|
| Importers and wholesale buyers | Build a shortlist of Asian exporters in one product vertical before requesting quotes |
| Procurement and sourcing agents | Maintain a live roster of alternate vendors per category for price benchmarking |
| Private-label and dropship brands | Find ODM electronics and accessory factories that publish a sales inbox |
| Freight forwarders and customs brokers | Approach shippers on lanes you already service with capacity and rate offers |
| Trade-show organisers | Recruit exhibitors from a category that matches an upcoming Hong Kong sourcing fair |
| Quality-inspection firms | Reach factories in a region your inspectors already cover |
| Sales teams selling to manufacturers | Prospect packaging, certification or logistics services into export-ready suppliers |

### Tuning the Global Sources Email Scraper for better yield

Specific keywords beat broad ones in the Global Sources Email Scraper. `exporter` is noisy; `wireless charger manufacturer` produces a list you can act on the same day.

Run the Global Sources Email Scraper with three to eight tight product-vertical keywords. Each keyword gets its own expanded query set, so specificity multiplies rather than divides your coverage.

Use `countryCode` deliberately. `HK`, `SG`, `US` and `GB` are all useful here, and each locale surfaces a slightly different slice of the index.

Extend `customDomains` with `@163.com`, `@126.com`, `@qq.com`, `@foxmail.com` and `@hotmail.com`. Regional sales staff use those far more than a corporate address.

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

Raise `maxPagesPerQuery` before `maxConcurrency`. Depth usually gains you more than parallelism on a well-indexed marketplace like this one.

### What results to expect from the Global Sources Email Scraper

The measured baseline is 10 result blocks, 10 with company identity, 10 profile URLs and 8 unique emails. Both identity and email coverage are strong.

Practically, that means the Global Sources Email Scraper is one of the few Actors here where you can expect most rows to be usable end to end.

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

If a niche looks thin, widen the domain list before you widen the keyword. Domain breadth is usually the cheaper fix for the Global Sources Email Scraper.

Treat the Global Sources Email Scraper as a supplier-discovery layer that feeds your RFQ process, not as a replacement for factory audits or sample testing.

### Global Sources Email Scraper limitations

- The Global Sources Email Scraper can only find 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 it 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 what the Global Sources Email Scraper returns.

Keep messages relevant to the exporter's own trade, identify your company clearly, and honour unsubscribe requests immediately.

Screen counterparties against your own sanctions and denied-party obligations before transacting. The Global Sources Email Scraper is a discovery tool and performs no screening of its own.

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

### Related Actors

| Actor | What it collects |
|---|---|
| [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 |
| [Global Sources Phone Number Scraper](https://apify.com/leads-scraper/global-sources-phone-number-scraper) | Public phone numbers from Global Sources |
| [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 |
| [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 |
| [Made-in-China Email Scraper](https://apify.com/leads-scraper/made-in-china-email-scraper) | Public contact emails from Made-in-China |
| [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 |
| [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 |
| [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 |
| [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 |
| [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 Phone Number Scraper](https://apify.com/leads-scraper/made-in-china-phone-number-scraper) | Public phone numbers from Made-in-China |

### Global Sources Email Scraper FAQ

#### Does the Global Sources Email Scraper log into Global Sources?

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 Global Sources keeps behind its messaging system?

No. The Global Sources Email Scraper cannot see anything hidden behind the platform's 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, 10 with identity, 10 profile URLs and 8 unique emails. That is a strong ratio, but yield still depends on your keywords and domains.

#### Why is identity coverage so good here?

Global Sources exposes readable company paths that Google prints in the result. The Global Sources Email Scraper turns those into a canonical `profileUrl`.

#### Which email domains should I add?

Start with the defaults, then add `@163.com`, `@126.com`, `@qq.com`, `@foxmail.com` and `@hotmail.com` for regional export-sales staff.

#### Does `countryCode` change the results?

Yes. It steers the search proxy locale, and different locales surface different portions of the marketplace index. `HK` and `SG` are worth testing alongside `US`.

#### What does `possiblyTruncated` mean?

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

#### Can I resume an interrupted run?

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

#### Can I run it on a free Apify plan?

Yes, with a cap of 100 emails per run. Paid plans are uncapped.

#### Is the Global Sources Email Scraper affiliated with Global Sources?

No. It is an independent Actor, not supported, endorsed or affiliated with Global Sources.

#### What if a query returns almost nothing?

Widen `customDomains` first, then loosen the keyword one step, then try a different `countryCode`. Those three moves solve most thin runs.

#### Which Actors pair best with this one?

HKTDC Sourcing and DIYTrade cover the same Hong Kong and South China base and scored highest in testing. Tradewheel adds raw email volume.

### Leave a review

If the Global Sources 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 Global Sources 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 Global Sources.

## `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",
    "exporter"
  ],
  "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 Global Sources 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",
        "exporter"
    ],
    "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/global-sources-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",
        "exporter",
    ],
    "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/global-sources-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",
    "exporter"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "export",
    "wholesale",
    "sales enquiries"
  ]
}' |
apify call leads-scraper/global-sources-email-scraper --silent --output-dataset

```

## MCP server setup

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