# IndiaMART Email Scraper (`email_scraper/indiamart-email-scraper`) Actor

IndiaMART Email Scraper extracts publicly listed email addresses from IndiaMART using targeted keywords, locations, and email domains. Build structured B2B leads with emails, titles, descriptions, and URLs for lead generation, market research, and business contact discovery.

- **URL**: https://apify.com/email\_scraper/indiamart-email-scraper.md
- **Developed by:** [Email Scraper](https://apify.com/email_scraper) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### IndiaMART Email Scraper Overview

IndiaMART Email Scraper is designed to discover publicly listed email addresses associated with IndiaMART pages through targeted Google search queries. It combines your keywords, optional location, and selected email-domain suffixes to identify IndiaMART search results whose descriptions contain matching email addresses.

The IndiaMART Email Scraper is useful for lead generation, B2B contact discovery, market research, and building a structured list of publicly visible contact opportunities. It returns the keyword, result title, description, URL, and extracted email so each address retains useful context.

Unlike a simple email finder, the IndiaMART Email Scraper lets you create a search matrix across multiple keywords and email domains. A location can also be added to narrow searches to a country, state, or city.

### IndiaMART Email Scraper Features

For targeted contact discovery, the IndiaMART Email Scraper combines search intent with email-domain filtering.

#### Keyword-driven contact discovery

The IndiaMART Email Scraper works well for product, service, supplier, and business-category searches.

The IndiaMART Email Scraper accepts a list of search keywords or queries. More specific terms can improve targeting because each keyword creates its own search path.

#### Email-domain filtering

With the IndiaMART Email Scraper, you can focus the collection on the address types most relevant to your campaign.

You can provide multiple email suffixes, such as `@gmail.com`, `@yahoo.com`, `@outlook.com`, or a business-domain suffix. The scraper searches for one keyword and one domain combination at a time.

This domain-focused approach makes the IndiaMART Email Scraper useful when your workflow requires a specific type of contact address.

#### Location targeting

Location targeting gives the IndiaMART Email Scraper a practical way to narrow geographically relevant search results.

The optional location field adds a geographic term to the Google query. You can enter a city, state, country, or other location phrase.

Leaving the location empty keeps the search geographically broader. Adding a location is useful when your lead generation campaign focuses on a particular market.

#### Exclude-word filtering

This makes the IndiaMART Email Scraper more controllable when certain categories should be left out.

The `excludeWords` input lets you skip search-result snippets containing words or phrases you do not want to process.

Single words are matched case-insensitively as whole words. Multi-word phrases are matched case-insensitively as phrases. When a snippet matches an exclusion term, the complete snippet is skipped and no email is collected from it.

#### Incremental dataset output

The actor pushes each newly accepted result into the Apify dataset as it is found. This creates structured records containing the search context and the extracted contact information.

### How to Use the IndiaMART Email Scraper

#### 1. Enter keywords

Start the IndiaMART Email Scraper with terms that describe the businesses or contacts you want.

Add one or more keywords to the `Keywords or Queries` field. Use specific phrases when you want focused search intent and broader terms when you want wider discovery.

#### 2. Select a region

For local prospecting, the IndiaMART Email Scraper can add the chosen region directly to each search query.

Enter a location when geography matters. For a general IndiaMART contact search, leave the field blank.

#### 3. Select email domains

The IndiaMART Email Scraper then checks each configured suffix through a separate search combination.

Add the suffixes you want to search for. Every keyword and domain pair is processed independently.

#### 4. Set the maximum email target

Use this control to determine how deeply the IndiaMART Email Scraper should pursue each keyword-domain pair.

`maxEmails` controls the target for each keyword + domain combination. The actor allows values from 1 to 10,000 in the input schema.

The implementation also applies a 100-email ceiling for free users; paid runs are not subject to that internal free-tier ceiling.

#### 5. Add exclusions when needed

Use exclusions when you want the IndiaMART Email Scraper to ignore descriptions containing unwanted terms.

Use `excludeWords` to remove snippets that contain words or phrases you do not want. This filtering occurs before email extraction.

#### 6. Review the dataset

The IndiaMART Email Scraper pushes accepted records into the Apify dataset incrementally. Each row includes the source context needed to review the contact.

### IndiaMART Email Scraper Data Extraction

The IndiaMART Email Scraper searches Google for pages indexed from `indiamart.com`. This search-based design lets the IndiaMART Email Scraper work from indexed public result content.

For every keyword and domain combination, the actor builds a query using the IndiaMART site restriction and the selected email suffix.

Search pages are processed sequentially. The parser reads organic search-result entries and extracts the result title, URL, description, and email addresses found in the result description.

The email pattern is built from the configured domains. This means an address is collected only when its domain suffix matches one of your supplied values.

The extraction is based on what the public search results expose; it does not provide private or hidden contact information.

#### Pagination and stopping behavior

The collector can paginate through many Google result pages. The implementation has a maximum of 1,000 pages for each keyword + domain pair, but it can stop earlier when search yield becomes unproductive.

It stops a pair when the configured cap is reached, when several consecutive pages produce no new emails, when post-page-25 result pages are empty under the implemented condition, when a five-page efficiency window falls below the configured threshold, or when repeated fetch failures trigger an abort for that pair.

These stopping rules reduce time spent on pages that are no longer producing useful contacts.

### IndiaMART Email Scraper Use Cases

#### B2B lead generation

The IndiaMART Email Scraper can support B2B prospecting when relevant business descriptions expose matching email addresses.

#### Market research

Researchers can collect contact records around a defined product category, industry term, location, or market segment and review the surrounding title and description for context.

#### Supplier and business discovery

IndiaMART contains business-oriented listings across many categories. Combining targeted keywords with a selected region can help create focused supplier or prospect datasets.

#### CRM enrichment

Existing research workflows can use the extracted email, IndiaMART URL, title, description, and search keyword as supporting fields for manual or automated enrichment processes.

#### Competitor and category research

The actor can support discovery of businesses appearing for relevant search terms, providing structured records that are easier to analyze than manually copied search results.

### IndiaMART Email Scraper Input

| Input           | Type             | Required | Default                   | Description                                                                          |
| --------------- | ---------------- | -------: | ------------------------- | ------------------------------------------------------------------------------------ |
| `keywords`      | Array of strings |      Yes | `["Laptop", "Furniture"]` | Search keywords or queries used to find IndiaMART pages.                             |
| `location`      | String           |       No | `""`                      | Optional country, state, or city term added to the search query.                     |
| `customDomains` | Array of strings |       No | `["@gmail.com"]`          | Email-domain suffixes to search for.                                                 |
| `maxEmails`     | Integer          |       No | `10`                      | Target number of emails per keyword + domain combination; allowed range is 1–10,000. |
| `excludeWords`  | Array of strings |       No | `[]`                      | Words or phrases that cause a matching search-result snippet to be skipped.          |

The IndiaMART Email Scraper accepts `keywords` as the only required field. The other inputs are optional controls for targeting, email filtering, result depth, and snippet exclusion.

Three keywords and two domains create six combinations. The target applies separately to each, while the global duplicate tracker prevents repeated emails from being emitted again.

### IndiaMART Email Scraper Output Data

| Field         | Type   | Description                                                                          |
| ------------- | ------ | ------------------------------------------------------------------------------------ |
| `network`     | String | Source network value written by the actor: `indiamart.com`.                          |
| `keyword`     | String | Keyword used for the search that produced the result.                                |
| `title`       | String | Title of the Google organic result.                                                  |
| `description` | String | Search-result description/snippet used for email extraction and exclusion filtering. |
| `url`         | String | URL associated with the organic search result.                                       |
| `email`       | String | Newly discovered email address matching the configured domain pattern.               |

The `email` field is the main contact value, while `keyword`, `title`, `description`, and `url` preserve collection context.

The dataset view displays `keyword`, `title`, `description`, `url`, and `email` as the main table columns. The runtime also writes a `network` field into each pushed record.

### Example Input

```json
{
  "keywords": [
    "Laptop Dealer",
    "Laptop Supplier",
    "Computer Hardware"
  ],
  "location": "Delhi",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 10,
  "excludeWords": [
    "crypto",
    "onlyfans"
  ]
}
```

This configuration creates six keyword + domain combinations and applies the Delhi location term to each Google query.

### Example Output

```json
{
  "network": "indiamart.com",
  "keyword": "Laptop Supplier",
  "title": "ABC Computers - Laptop Supplier",
  "description": "Laptop supplier and computer products. Contact abccomputers@gmail.com for details.",
  "url": "https://www.indiamart.com/...",
  "email": "abccomputers@gmail.com"
}
```

The example shows the actual output structure; live values depend on indexed search results returned during the run.

### Data Quality and Reliability

The IndiaMART Email Scraper is designed around repeatable parsing and persisted state rather than one-off manual copying.

The IndiaMART Email Scraper is built around structured parsing of Google search-result HTML rather than arbitrary page text. It looks for organic search-result entries and extracts matching emails from their descriptions.

#### Google SERP proxy

The implementation uses an Apify proxy configuration with the `GOOGLE_SERP` group. The scraper obtains a proxy URL and can rotate it when a request attempt fails.

Each search request uses a 30-second request timeout. Failed requests are retried after proxy rotation, and three consecutive hard failures cause the current keyword-domain pair to stop.

#### Public search-result dependence

Results depend on what is publicly exposed in Google search results for the requested query. A business may exist on IndiaMART without appearing for a particular keyword, location, or email suffix, so the absence of an email does not prove that no contact address exists.

### SEO and Search Intent

The IndiaMART Email Scraper is built for users who want IndiaMART data extraction with email-focused search intent. Typical tasks include finding IndiaMART business contacts, extracting publicly visible email addresses, discovering suppliers by category, and creating targeted B2B research datasets.

The strongest results come from matching the search terms to the intent of the businesses you want to discover. Product names, service categories, supplier terms, job-related phrases, and location-specific queries can produce different result sets.

For broader coverage, combine several related keywords and domains. For narrower research, use a location and tightly focused terms. The `excludeWords` filter can reduce unwanted snippets.

### IndiaMART Email Scraper FAQs

#### What is the IndiaMART Email Scraper?

The IndiaMART Email Scraper is an Apify actor that searches Google for IndiaMART pages and extracts email addresses matching your selected domain suffixes from processed search-result descriptions.

#### How does the IndiaMART Email Scraper find emails?

It builds Google queries using `site:indiamart.com`, your keyword, an exact email-domain suffix, and an optional location. It then parses organic results and extracts matching addresses from their descriptions.

#### Can I search multiple keywords?

Yes. The `keywords` field accepts an array, and each keyword is processed independently.

#### Can I search multiple email domains?

Yes. Add multiple values to `customDomains`. Each domain is paired with each keyword and processed as a separate combination.

#### Can I target a city or country?

Yes. Enter a geographic phrase in `location`. The value is added to the Google query to narrow the search.

#### What happens when I use exclude words?

A matching snippet is skipped before email extraction. Single words use whole-word, case-insensitive matching, while multi-word phrases use case-insensitive phrase matching.

#### Is `maxEmails` a run-wide limit?

No. The implementation treats the configured value as a target for each keyword + domain combination. However, the actor also de-duplicates emails globally within the persisted run state, so repeated addresses are not emitted again.

#### Can the actor return fewer emails than requested?

Yes. The requested target is not a guarantee. The actor can stop when search pages stop producing new addresses, when efficiency falls, when results are empty under its stopping rules, or when repeated fetch failures occur.

#### What data is returned for each email?

The output contains `network`, `keyword`, `title`, `description`, `url`, and `email`. The dataset table view displays the keyword, title, description, URL, and email columns.

#### Does it access private IndiaMART contact information?

No private-data access is implemented. Email extraction is based on publicly exposed information present in the processed Google search-result descriptions.

#### Does the actor use a proxy?

Yes. The implementation initializes the Apify `GOOGLE_SERP` proxy group and rotates the proxy URL when an initial request attempt fails.

#### Can I use the output for lead research?

Yes. The combination of email, source URL, title, description, and keyword provides structured context for B2B prospecting, supplier discovery, and research workflows.

### Why Use the IndiaMART Email Scraper

The IndiaMART Email Scraper turns manual search into a repeatable, keyword-driven collection workflow. Define search terms, geographic scope, domains, exclusions, and the result target in the actor input.

Its structured dataset output also preserves context around each discovered email. This makes the collected information easier to review, filter, export, and use in downstream data workflows.

The combination of keyword matrices, domain targeting, exclusion filtering, duplicate protection, incremental dataset pushes, proxy rotation, pagination, and persisted progress gives the IndiaMART Email Scraper a practical foundation for repeatable public-data research.

### API and Automation

The IndiaMART Email Scraper fits standard Apify Actor execution and dataset-based automation workflows.

The IndiaMART Email Scraper runs as an Apify Actor, so users can execute it from the Apify platform and incorporate its dataset output into broader Apify-based workflows.

For automation, supply the same input object shown above and read the resulting dataset records after the run completes or while records are being pushed incrementally. The actor itself does not define a custom external API; its automation entry point is the standard Apify Actor execution model.

### Support

For questions, bug reports, input adjustments, or bespoke scraper requirements related to this actor, contact **<alphascraper69@gmail.com>**.

# Actor input Schema

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

A list of keywords or queries to search for.

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

Optional country, state or city used to narrow the search. Leave it empty to search without a geographic filter.

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

List of custom email domains

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

How many addresses each search keyword + domain suffix combination may collect before the finder moves on to the next one. This is a per-combination target, not a run-wide total: with 3 keyword and 2 Domains and a limit of 20, the run works through all 6 combinations and aims for up to 20 addresses in each, so up to 120 overall. Lower values finish sooner and cost less; higher values dig deeper but never guarantee a fuller result, since the run can only find what is publicly listed.

## `excludeWords` (type: `array`):

Words or phrases you do not want to see.

## Actor input object example

```json
{
  "keywords": [
    "Laptop",
    "Furniture"
  ],
  "location": "delhi",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 10,
  "excludeWords": []
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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": [
        "Laptop",
        "Furniture"
    ],
    "location": "delhi",
    "customDomains": [
        "@gmail.com"
    ],
    "excludeWords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("email_scraper/indiamart-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": [
        "Laptop",
        "Furniture",
    ],
    "location": "delhi",
    "customDomains": ["@gmail.com"],
    "excludeWords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("email_scraper/indiamart-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": [
    "Laptop",
    "Furniture"
  ],
  "location": "delhi",
  "customDomains": [
    "@gmail.com"
  ],
  "excludeWords": []
}' |
apify call email_scraper/indiamart-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,email_scraper/indiamart-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/7HfPLhBh2U4k3auxg/builds/8e7Ca2IkYWhHl20X9/openapi.json
