# Tradewheel Email Scraper (`leads-scraper/tradewheel-email-scraper`) Actor

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

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

### Tradewheel Email Scraper: the highest email volume of the ten trade portals

The Tradewheel Email Scraper collects the public contact emails that exporters and wholesalers publish on `tradewheel.com`, a global B2B marketplace spanning agriculture, apparel, chemicals, machinery and consumer goods.

In a measured run the Tradewheel Email Scraper read 10 result blocks, resolved company identity on 6, produced 6 profile URLs and returned 10 unique emails. That is the highest email count in this family.

Note the shape of that result. You get more addresses than blocks, because a single listing can publish more than one contact, while company identity resolves on roughly six rows in ten.

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

### What the Tradewheel Email Scraper actually does

The Tradewheel Email Scraper builds Google queries with the `site:` operator scoped to `tradewheel.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 Tradewheel Email Scraper is a search-index reader, not a crawler walking the site.

Sellers on this marketplace publish sales inboxes openly, and its buyer and supplier directories are widely indexed. That combination is why the Tradewheel Email Scraper returns so many addresses.

If you want stronger company identity alongside the addresses, run it beside the [TradeKey Email Scraper](https://apify.com/neuro-scraper/tradekey-email-scraper) or the [HKTDC Sourcing Email Scraper](https://apify.com/neuro-scraper/hktdc-sourcing-email-scraper).

### Tradewheel Email Scraper features at a glance

| Feature | What it means for b2b lead generation |
|---|---|
| Google `site:` search | Every query is scoped to `tradewheel.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 | Locates the `<h3>` title then the smallest surrounding block, not 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 |
| 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 |

Global deduplication earns its keep here more than anywhere else. When a platform yields several addresses per block, the Tradewheel Email Scraper still pushes each unique one exactly once.

### How the Tradewheel Email Scraper works, step by step

1. The Tradewheel Email Scraper reads your keywords, location, email domains and limits.
2. It composes Google queries such as `site:tradewheel.com wholesaler "@gmail.com" "Turkey"`.
3. It fetches result pages asynchronously through the Apify GOOGLE_SERP proxy using `aiohttp`.
4. It parses each result 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 to the Apify dataset immediately.

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

Where Google prints a company handle, the Tradewheel Email Scraper rebuilds a `profileUrl` shaped like `https://www.tradewheel.com/{username}/`. On listing-style results it leaves the handle empty.

### Tradewheel Email Scraper input fields

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

```json
{
  "keywords": [
    "frozen seafood exporter",
    "cotton fabric wholesaler",
    "industrial chemicals trading company"
  ],
  "location": "Istanbul",
  "customDomains": ["@gmail.com", "@yahoo.com", "@hotmail.com", "@outlook.com", "@mail.ru"],
  "maxEmails": 1000,
  "countryCode": "TR",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "export", "wholesale", "sales enquiries"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Because the Tradewheel Email Scraper yields well, a higher `maxEmails` is realistic here. Budget for it rather than under-setting the cap and stopping early.

This marketplace spans many countries, so `countryCode` and `location` do real work in the Tradewheel Email Scraper. Test `TR`, `PK`, `AE`, `US`, `BR` and `VN` on the same keyword set.

### Tradewheel Email Scraper output fields

Every dataset item the Tradewheel 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 `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example output from the Tradewheel Email Scraper

```json
[
  {
    "network": "Tradewheel",
    "keyword": "frozen seafood exporter",
    "query": "site:tradewheel.com frozen seafood exporter \"@gmail.com\" \"Istanbul\"",
    "title": "Deniz Global Foods Ltd - Frozen Seafood Exporter | Tradewheel",
    "accountName": "Deniz Global Foods Ltd",
    "fullName": "Deniz Global Foods Ltd",
    "username": "deniz-global-foods",
    "profileUrl": "https://www.tradewheel.com/deniz-global-foods/",
    "url": "https://www.tradewheel.com/deniz-global-foods/",
    "description": "Frozen anchovy, sea bass and shrimp, HACCP certified. Export: deniz.export@gmail.com",
    "email": "deniz.export@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T18:41:03Z"
  },
  {
    "network": "Tradewheel",
    "keyword": "cotton fabric wholesaler",
    "query": "site:tradewheel.com cotton fabric wholesaler \"@hotmail.com\"",
    "title": "Wholesale Cotton Fabric Suppliers and Buyers | Tradewheel",
    "accountName": "Wholesale Cotton Fabric",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.tradewheel.com/products/cotton-fabric/",
    "description": "Bulk cotton greige and dyed fabric offers. Enquiries: fabric.sales.tr@hotmail.com",
    "email": "fabric.sales.tr@hotmail.com",
    "emailDomain": "@hotmail.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-31T18:41:29Z"
  }
]
```

The second row is the common case for roughly four rows in ten from the Tradewheel Email Scraper: a good address on a listing page, with `username: null` and an empty `profileUrl`.

### Who uses the Tradewheel Email Scraper

The Tradewheel Email Scraper suits teams that run outreach at volume and enrich company data afterwards.

| Buyer type | How the Tradewheel Email Scraper fits their workflow |
|---|---|
| Importers and wholesale buyers | Build a large first-contact list across several origin countries at once |
| Procurement and sourcing agents | Cast a wide net when a category has no obvious dominant origin |
| Private-label and dropship brands | Reach trading companies willing to consolidate mixed low-MOQ orders |
| Freight forwarders and customs brokers | Prospect shippers across emerging-market lanes with capacity offers |
| Trade-show organisers | Build broad exhibitor prospect lists spanning multiple regions |
| Quality-inspection firms | Reach exporters in origins where you are expanding inspector coverage |
| Sales teams selling to manufacturers | Run volume outreach for trade finance, insurance or documentation services |

### Tuning the Tradewheel Email Scraper for better yield

Set `maxEmails` high. This is the one platform in the family where the cap, not the index, is usually what stops a Tradewheel Email Scraper run.

Run the Tradewheel Email Scraper on three to eight product or commodity terms. Broad terms still work here, but precise ones give you a cleaner list to work.

Rotate `countryCode` across runs rather than trying to cover everything in one. `TR`, `PK`, `AE`, `IN`, `US`, `BR` and `VN` each surface a different slice.

Widen `customDomains` well beyond the defaults. `@hotmail.com`, `@outlook.com`, `@mail.ru` and country-specific Yahoo domains all appear regularly.

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

Filter on `possiblyTruncated` before you send. High volume means more snippet clipping, so verify the flagged rows first.

### What results to expect from the Tradewheel Email Scraper

The measured baseline is 10 result blocks, 6 with company identity, 6 profile URLs and 10 unique emails.

Read that as: the Tradewheel Email Scraper is an email-volume engine with moderate company coverage. Around four rows in ten will need identity enrichment from your side.

That trade-off suits high-volume outreach and suits account-based selling less well. Choose the Tradewheel Email Scraper when address count matters more than a complete company record.

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

### Tradewheel Email Scraper limitations

- The Tradewheel 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. On the measured run only 6 of 10 rows resolved one; the rest carried `accountName` 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 Tradewheel Email Scraper returns.

Volume makes this more important, not less. Keep outreach relevant to the exporter's own trade, identify your company clearly, and honour unsubscribe requests immediately.

Screen counterparties against your own sanctions, export-control and denied-party obligations before transacting. The Tradewheel Email Scraper 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 |
|---|---|
| [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 |
| [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 |
| [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 |
| [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 |
| [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 Phone Number Scraper](https://apify.com/leads-scraper/made-in-china-phone-number-scraper) | Public phone numbers from Made-in-China |

### Tradewheel Email Scraper FAQ

#### Does the Tradewheel Email Scraper log into Tradewheel?

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

No. The Tradewheel Email Scraper cannot see anything 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, 6 with identity, 6 profile URLs and 10 unique emails. Expect high email volume and moderate company coverage.

#### How can there be more emails than blocks?

A single indexed listing sometimes publishes more than one address. Global deduplication keeps each unique one exactly once.

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

Listing and category pages do not expose a company handle, so the Tradewheel Email Scraper leaves `username` as `null` and `profileUrl` empty on those results.

#### Which email domains should I add?

`@hotmail.com`, `@outlook.com`, `@mail.ru` and country Yahoo domains alongside the defaults. Free-mail dominates this marketplace.

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

Yes, substantially. This is a multi-country marketplace, so rotate `TR`, `PK`, `AE`, `IN`, `US`, `BR` and `VN` across separate runs.

#### Should I set a higher `maxEmails` here?

Usually yes. On this platform the cap, rather than the index, is often what ends the run.

#### What does `possiblyTruncated` mean?

Google sometimes clips a snippet mid-address. High volume means more clipping, so filter and verify the flagged 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 Tradewheel?

No. The Tradewheel Email Scraper is an independent Actor, not supported, endorsed or affiliated with Tradewheel.

#### Which Actor should I add for better company records?

TradeKey, HKTDC Sourcing and DIYTrade all resolve identity more reliably than the Tradewheel Email Scraper.

### Leave a review

If the Tradewheel 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 Tradewheel 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 Tradewheel.

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

```

## MCP server setup

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