# TradeIndia Email Scraper (`leads-scraper/tradeindia-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/tradeindia-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 95.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

### TradeIndia Email Scraper - public supplier contact emails from tradeindia.com

The TradeIndia Email Scraper collects publicly indexed contact emails that appear in Google search results for `tradeindia.com`. TradeIndia is one of India's largest B2B marketplaces, listing manufacturers, exporters and wholesalers across thousands of product categories.

One thing has to be said before anything else, because it shapes how you should read every dataset row. **TradeIndia indexes product and category pages more than supplier profiles, so most rows carry a supplier email without a resolvable handle.**

That is not a defect and it is not something this README will bury. It means the TradeIndia Email Scraper is an email-rich, identity-poor Actor - you get the contact route, but often without a clean company page link attached to it.

For most sourcing work that trade-off is acceptable, because the email is the thing you actually need from the TradeIndia Email Scraper. Import agents, procurement teams, industrial distributors and trade-show organisers who source from India are exactly who this Actor is built for.

#### A measured live result, stated plainly

A live Google run of the TradeIndia Email Scraper returned **10 result blocks, 4 rows with account identity, 4 resolvable profile URLs and 10 unique emails**. Those figures are observed, not projected.

Ten unique emails from ten blocks is the highest email density in this whole directory family. Indian exporters publish free webmail addresses on product listings far more readily than their European or North American counterparts do.

The other half of that shape is the low identity count. Because the indexed pages are largely product and category pages rather than company profiles, only four of the ten rows carried a `username` and a `profileUrl`.

So the honest summary of the TradeIndia Email Scraper is: buy it for contact volume, not for clean company records. If you need both together, the European directories in this family are a better fit.

### Features of the TradeIndia Email Scraper

Every feature below is genuinely implemented. Nothing here is aspirational.

| Feature | What it means in practice |
|---|---|
| Google SERP parsing | Reads Google result pages through the Apify GOOGLE_SERP proxy. No browser, no JavaScript rendering |
| Structural block detection | Locates the `<h3>` title, then the smallest surrounding block. Does not depend on Google's CSS class names |
| Domain filter | Only emails ending in one of your `customDomains` values are kept |
| Query expansion | Base, quoted, `intitle:` and one variant per query modifier. Base queries run first |
| Global deduplication | An email seen once is never pushed twice, across every query and every page |
| Email normalisation | Understands `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` sign |
| 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 block |
| Concurrency | An `asyncio` worker pool with a shared stop signal on `maxEmails` |
| Retries | Up to 3 attempts per page, exponential backoff, a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Re-queueing | Blocked or failed queries are retried once at the end of the run |
| Resumable run | State is stored in the key-value store, keyed by a hash of the input, and saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Fallback parser | If Google's markup changes, the run degrades to "emails without account details" rather than "no emails" |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |
| Dataset output | Rows push immediately and export to CSV, JSON, Excel or XML from the Apify dataset |

Two of those features do disproportionate work inside the TradeIndia Email Scraper. Global deduplication matters because the same exporter is often listed against dozens of products, and the junk filter matters because product pages carry more template text than profile pages do.

### How the TradeIndia Email Scraper works

The pipeline is six steps and there is nothing hidden inside it.

1. It reads your input: keywords, location, email domains and limits.
2. It builds Google search queries with the `site:` operator against `tradeindia.com`, for example `site:tradeindia.com exporter "@gmail.com" "Surat"`.
3. It fetches Google result pages through the Apify GOOGLE_SERP proxy using `aiohttp`, asynchronously.
4. It parses each result block structurally, finding the `<h3>` title and the smallest block around it.
5. It extracts emails from that block's text with a domain-filtered regex.
6. It deduplicates globally and pushes each lead straight into the Apify dataset.

The TradeIndia Email Scraper does **not** log into TradeIndia, does not use any TradeIndia API, and does not open the marketplace in a browser. Every field comes from publicly indexed Google search results - titles, snippets and site labels, with no authentication and no cookies.

### Who the TradeIndia Email Scraper is built for

This is a B2B sourcing Actor aimed at people who import from, or sell into, the Indian supplier base.

Import agents and buying houses use it to build a shortlist of exporters in a product class before sending enquiries. Procurement teams use it to add Indian alternatives to a supplier panel dominated by one region.

Industrial distributors use it to find manufacturers with no representation in their market. Trade-show organisers use it to recruit Indian exhibitors, and freight forwarders use it to reach exporters already shipping the lanes they serve.

If your targets are consumer-facing local businesses rather than exporters, the TradeIndia Email Scraper is the wrong Actor and [Fyple Email Scraper](https://apify.com/neuro-scraper/fyple-email-scraper) or [Cybo Email Scraper](https://apify.com/neuro-scraper/cybo-email-scraper) will fit better.

### Input fields for the TradeIndia Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["manufacturer", "exporter"]` | Search terms - niche, 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 `@` 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...) |
| `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` | Parallel queries |

#### How the TradeIndia Email Scraper input fields actually behave

`keywords` should be product terms, not company words. Because the indexed pages are largely product and category pages, terms like `cotton bed sheets`, `industrial valves` or `basmati rice` match the index far better than `manufacturer` alone.

`queryModifiers` only fire when `expandQueries` is `true`. The defaults `export`, `wholesale` and `sales enquiries` are well matched to TradeIndia, where those exact words appear beside published contact routes.

`customDomains` is less of a bottleneck in the TradeIndia Email Scraper than on Western directories. Gmail and Yahoo are genuinely common among Indian exporters, which is a large part of why the TradeIndia Email Scraper reached ten unique emails from ten blocks.

`maxEmails` is a hard stop shared across the worker pool, and because this Actor is email-dense it is often the limit you hit first. Raise it when you want volume.

`maxConcurrency` and `maxPagesPerQuery` trade speed against politeness, and the defaults of 5 and 30 are sensible for a marketplace of this size.

### JSON input example for the TradeIndia Email Scraper

```json
{
  "keywords": ["industrial valves", "cotton bed sheets", "basmati rice"],
  "location": "Gujarat",
  "customDomains": ["@gmail.com", "@yahoo.com", "@rediffmail.com", "@yahoo.co.in"],
  "maxEmails": 300,
  "countryCode": "IN",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "export", "wholesale", "sales enquiries"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

`@rediffmail.com` and `@yahoo.co.in` are worth adding on this platform specifically. Both remain common among long-established Indian trading firms and neither is in the default filter.

That is a realistic configuration for the TradeIndia Email Scraper: three product classes, a state-level location, an Indian country code and a domain filter extended with regional webmail providers.

### Output fields of the TradeIndia Email Scraper

Every dataset item carries all fourteen fields.

| 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 product and category results |
| `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` | Bio or snippet text, 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 - verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

#### Reading TradeIndia Email Scraper output honestly

Expect a majority of rows to arrive with `username: null` and an empty `profileUrl`. That is the direct consequence of TradeIndia indexing product and category pages more than supplier profiles.

When that happens, use `url`, `title` and `description` for context instead. The product page URL still tells you what the supplier sells, which is usually enough to qualify the lead.

Check `possiblyTruncated` before sending anything. When it is `true`, Google's snippet ellipsis may have clipped the address and you should confirm it on the source page.

### JSON output example from the TradeIndia Email Scraper

```json
[
  {
    "network": "TradeIndia",
    "keyword": "industrial valves",
    "query": "site:tradeindia.com industrial valves export \"@gmail.com\" \"Gujarat\"",
    "title": "Industrial Ball Valves - Manufacturers, Suppliers and Exporters",
    "accountName": "Industrial Ball Valves",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.tradeindia.com/products/industrial-ball-valves.html",
    "description": "Stainless steel ball valves for process industries. Wholesale and export enquiries welcome.",
    "email": "valvesexport.ahmedabad@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-29T12:04:18Z"
  },
  {
    "network": "TradeIndia",
    "keyword": "cotton bed sheets",
    "query": "site:tradeindia.com cotton bed sheets \"sales enquiries\" \"@rediffmail.com\"",
    "title": "Shreeji Textiles - Cotton Bed Sheets Exporter - TradeIndia",
    "accountName": "Shreeji Textiles",
    "fullName": "Shreeji Textiles",
    "username": "shreeji-textiles-1234567",
    "profileUrl": "https://www.tradeindia.com/shreeji-textiles-1234567/",
    "url": "https://www.tradeindia.com/shreeji-textiles-1234567/",
    "description": "Cotton bed sheets and home furnishing exporter based in Ahmedabad. Bulk orders accepted.",
    "email": "shreeji.textiles@rediffmail.com",
    "emailDomain": "@rediffmail.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-29T12:05:41Z"
  }
]
```

The first row is the common case on this platform and the second is the less common one. Any tool that showed you only the second shape would be misrepresenting how TradeIndia is indexed.

### Use cases for the TradeIndia Email Scraper

| Audience | What they do with the data |
|---|---|
| Import agents and buying houses | Build an exporter shortlist in a product class before sending enquiries |
| Procurement and category buyers | Add Indian alternatives to a supplier panel concentrated in one region |
| Industrial distributors | Find manufacturers with no representation in the target market |
| Trade-show and expo organisers | Recruit Indian exhibitors from specific product categories |
| Freight forwarders and customs brokers | Reach exporters already shipping the lanes they serve |
| Private-label and retail brands | Source manufacturers for textiles, homeware, food or hardware lines |
| B2B marketing agencies | Assemble an exporter prospect list for an account-based campaign |
| Trade researchers | Map which Indian product categories publish contact routes and where |

Every one of those jobs targets a company inbox that a supplier published on a trade marketplace to attract buyers. That is the honest boundary of what the TradeIndia Email Scraper is for.

### Targeting tips for the TradeIndia Email Scraper

`location` and `countryCode` are both real levers on the TradeIndia Email Scraper, and Indian manufacturing is intensely regional, which makes `location` unusually productive.

Set `location` to an industrial cluster rather than a country - `"Surat"` for textiles, `"Ludhiana"` for hosiery and cycle parts, `"Rajkot"` for castings, `"Tiruppur"` for knitwear. That single change reshapes what the TradeIndia Email Scraper returns.

`countryCode` changes the search proxy's country. Setting `IN` prefers the domestic view of the index, while leaving it empty or setting a destination market can surface the export-facing pages instead.

Because product terms match the index better than company terms, invest your effort in vocabulary. In the TradeIndia Email Scraper a list of fifteen precise product names will always outperform two generic words like `manufacturer` and `exporter`.

Keep `expandQueries` on so the modifiers reach listing pages where addresses appear. For neighbouring Asian export supply, run [EC21 Email Scraper](https://apify.com/neuro-scraper/ec21-email-scraper) or [ExportHub Email Scraper](https://apify.com/neuro-scraper/exporthub-email-scraper) with the same product keywords.

### Limitations of the TradeIndia Email Scraper

Read all of these before your first run.

- **TradeIndia indexes product and category pages more than supplier profiles, so most rows carry a supplier email without a resolvable handle.** Expect `username: null` and an empty `profileUrl` on the majority of rows.
- The TradeIndia Email Scraper only finds addresses that are **publicly visible in Google's index**. Anything Google has not indexed is invisible to it.
- Google caps a single query at roughly 300 results, which is exactly why query expansion exists and defaults to on.
- `possiblyTruncated: true` means Google's snippet ellipsis may have cut the email short. Verify it before sending.
- It 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. On this email-dense Actor you will reach that cap quickly.
- `username` and `profileUrl` are only populated when Google exposes a handle, which on TradeIndia is the minority case. That is a Google limitation, not a bug.
- Results vary with keywords, domains and location. No volume is guaranteed by the TradeIndia Email Scraper or by any Actor in this family.

### Responsible use of TradeIndia Email Scraper output

The addresses the TradeIndia Email Scraper surfaces are trade contacts that suppliers published on a public B2B marketplace so that buyers could reach them. Treat them as exactly that.

If you are contacting from or into the EU or UK, a named person's work address is personal data under GDPR even when it is publicly listed. Record your lawful basis, identify yourself and your company in the first line, and keep the message obviously relevant.

Honour opt-outs immediately and permanently, keep your list current, and follow the marketing rules of every jurisdiction involved. Do not use this output for bulk unsolicited mail.

### FAQ about the TradeIndia Email Scraper

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

A live Google run returned 10 result blocks, 4 identified accounts, 4 profile URLs and 10 unique emails on default settings. Email density is the strength here; identity coverage is the weakness. Volume scales with how many product keywords and domains you supply, but no specific number is guaranteed because it depends entirely on what Google has indexed.

#### Why do so many rows have `username: null` and an empty `profileUrl`?

Because TradeIndia indexes product and category pages more than supplier profiles, so most rows carry a supplier email without a resolvable handle. Google prints no company slug on those pages, so the TradeIndia Email Scraper reports the gap honestly instead of inventing a link.

#### Is that a bug I should report?

No. It is a Google indexing characteristic of this specific platform. If you need consistently resolvable company pages, [Kompass Email Scraper](https://apify.com/leads-scraper/kompass-email-scraper) and [Europages Email Scraper](https://apify.com/leads-scraper/europages-email-scraper) resolve handles on nearly every row.

#### Does the TradeIndia Email Scraper log into TradeIndia or use its API?

No. It builds Google `site:tradeindia.com` queries, fetches result pages through the Apify GOOGLE_SERP proxy and parses them. There is no browser, no login, no API and no cookies.

#### What is the fastest way to increase TradeIndia Email Scraper yield?

Use precise product keywords rather than generic company words, and add `@rediffmail.com` and `@yahoo.co.in` to `customDomains`. Both are common among Indian trading firms and neither is in the defaults.

#### Should I use non-English keywords with the TradeIndia Email Scraper?

Generally no. TradeIndia's listings are predominantly in English, so English product terminology is what matches the index.

#### How do I qualify a TradeIndia Email Scraper lead when there is no profile URL?

Use `url`, `title` and `description`. The product page tells you what the supplier sells and often where they are based, which is usually enough to decide whether to write.

#### Why does the TradeIndia Email Scraper turn `expandQueries` on by default?

Google caps one query at roughly 300 results. Expansion runs base, quoted and `intitle:` variants plus one per modifier, reaching listing pages a single query cannot. Base queries always run first.

#### Can I run the TradeIndia Email Scraper on a free Apify plan?

Yes, but the 100-email cap on free plans binds sooner here than on most Actors in this family, precisely because email density is high. Paid plans are uncapped.

#### What happens if a TradeIndia Email Scraper run is interrupted?

State is saved in the key-value store, keyed by a hash of your input, and written on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events. Restarting with the same input resumes rather than starting over.

#### Which export formats does the TradeIndia Email Scraper support?

Anything the Apify dataset supports - CSV, JSON, Excel and XML - plus the API for pushing rows straight into a CRM.

#### Is the TradeIndia Email Scraper affiliated with TradeIndia?

No. It is an independent Actor that reads publicly indexed Google results, with no relationship to or endorsement from the platform.

### Related Actors

More email scrapers from the same Business & Professional Directories family, built on the same Google SERP pipeline.

| Actor | What it collects |
|---|---|
| [Angi Email Scraper](https://apify.com/leads-scraper/angi-email-scraper) | Public contact emails from Angi |
| [Bark Email Scraper](https://apify.com/leads-scraper/bark-email-scraper) | Public contact emails from Bark |
| [Better Business Bureau Email Scraper](https://apify.com/leads-scraper/better-business-bureau-email-scraper) | Public contact emails from Better Business Bureau |
| [Bizapedia Email Scraper](https://apify.com/neuro-scraper/bizapedia-email-scraper) | Public contact emails from Bizapedia |
| [Brownbook Email Scraper](https://apify.com/neuro-scraper/brownbook-email-scraper) | Public contact emails from Brownbook |
| [Callupcontact Email Scraper](https://apify.com/neuro-scraper/callupcontact-email-scraper) | Public contact emails from CallUpContact |
| [Capterra Email Scraper](https://apify.com/leads-scraper/capterra-email-scraper) | Public contact emails from Capterra |
| [Clutch Email Scraper](https://apify.com/leads-scraper/clutch-email-scraper) | Public contact emails from Clutch |
| [Crunchbase Email Scraper](https://apify.com/leads-scraper/crunchbase-email-scraper) | Public contact emails from Crunchbase |
| [Cybo Email Scraper](https://apify.com/neuro-scraper/cybo-email-scraper) | Public contact emails from Cybo |
| [Cylex Email Scraper](https://apify.com/neuro-scraper/cylex-email-scraper) | Public contact emails from Cylex |
| [EC21 Email Scraper](https://apify.com/neuro-scraper/ec21-email-scraper) | Public contact emails from EC21 |
| [Europages Email Scraper](https://apify.com/leads-scraper/europages-email-scraper) | Public contact emails from Europages |
| [ExportHub Email Scraper](https://apify.com/neuro-scraper/exporthub-email-scraper) | Public contact emails from ExportHub |
| [FindUsLocal Email Scraper](https://apify.com/neuro-scraper/finduslocal-email-scraper) | Public contact emails from FindUsLocal |
| [Foursquare Email Scraper](https://apify.com/neuro-scraper/foursquare-email-scraper) | Public contact emails from Foursquare |
| [Fyple Email Scraper](https://apify.com/neuro-scraper/fyple-email-scraper) | Public contact emails from Fyple |
| [G2 Email Scraper](https://apify.com/neuro-scraper/g2-email-scraper) | Public contact emails from G2 |
| [Hotfrog Email Scraper](https://apify.com/leads-scraper/hotfrog-email-scraper) | Public contact emails from Hotfrog |
| [Houzz Email Scraper](https://apify.com/leads-scraper/houzz-email-scraper) | Public contact emails from Houzz |
| [Infobel Email Scraper](https://apify.com/neuro-scraper/infobel-email-scraper) | Public contact emails from Infobel |
| [Kompass Email Scraper](https://apify.com/leads-scraper/kompass-email-scraper) | Public contact emails from Kompass |
| [Lacartes Email Scraper](https://apify.com/neuro-scraper/lacartes-email-scraper) | Public contact emails from Lacartes |
| [Manta Email Scraper](https://apify.com/leads-scraper/manta-email-scraper) | Public contact emails from Manta |
| [MapQuest Email Scraper](https://apify.com/neuro-scraper/mapquest-email-scraper) | Public contact emails from MapQuest |
| [N49 Email Scraper](https://apify.com/neuro-scraper/n49-email-scraper) | Public contact emails from N49 |
| [Porch Email Scraper](https://apify.com/neuro-scraper/porch-email-scraper) | Public contact emails from Porch |
| [Scoot Email Scraper](https://apify.com/neuro-scraper/scoot-email-scraper) | Public contact emails from Scoot |
| [Thomasnet Email Scraper](https://apify.com/leads-scraper/thomasnet-email-scraper) | Public contact emails from Thomasnet |
| [Thumbtack Email Scraper](https://apify.com/leads-scraper/thumbtack-email-scraper) | Public contact emails from Thumbtack |
| [Touch Local Email Scraper](https://apify.com/leads-scraper/touch-local-email-scraper) | Public contact emails from Touch Local |
| [Trustpilot Email Scraper](https://apify.com/leads-scraper/trustpilot-email-scraper) | Public contact emails from Trustpilot |
| [Tupalo Email Scraper](https://apify.com/leads-scraper/tupalo-email-scraper) | Public contact emails from Tupalo |
| [Yalwa Email Scraper](https://apify.com/leads-scraper/yalwa-email-scraper) | Public contact emails from Yalwa |
| [Yellow Pages Email Scraper](https://apify.com/leads-scraper/yellow-pages-email-scraper) | Public contact emails from Yellow Pages |
| [Angi Email and Phone Number Scraper](https://apify.com/neuro-scraper/angi-email-and-phone-number-scraper) | Emails and phone numbers from Angi |
| [Bark Email and Phone Number Scraper](https://apify.com/neuro-scraper/bark-email-and-phone-number-scraper) | Emails and phone numbers from Bark |
| [Better Business Bureau Email and Phone Number Scraper](https://apify.com/leads-scraper/better-business-bureau-email-and-phone-number-scraper) | Emails and phone numbers from Better Business Bureau |
| [Bizapedia Email and Phone Number Scraper](https://apify.com/neuro-scraper/bizapedia-email-and-phone-number-scraper) | Emails and phone numbers from Bizapedia |
| [Brownbook Email and Phone Number Scraper](https://apify.com/neuro-scraper/brownbook-email-and-phone-number-scraper) | Emails and phone numbers from Brownbook |
| [CallUpContact Email and Phone Number Scraper](https://apify.com/neuro-scraper/callupcontact-email-and-phone-number-scraper) | Emails and phone numbers from CallUpContact |
| [Capterra Email and Phone Number Scraper](https://apify.com/leads-scraper/capterra-email-and-phone-number-scraper) | Emails and phone numbers from Capterra |

### Leave a review

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

# Actor input Schema

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

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

## `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 TradeIndia 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/tradeindia-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/tradeindia-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/tradeindia-email-scraper --silent --output-dataset

```

## MCP server setup

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