# IndiaMART Scraper - B2B Suppliers, Phone & Leads (`themineworks/indiamart-suppliers`) Actor

Affordable IndiaMART scraper: B2B suppliers, phone, GST & leads. $2/1,000 results, 25 free, pay-per-result, no subscription. Works in Claude, ChatGPT & any MCP-compatible AI agent.

- **URL**: https://apify.com/themineworks/indiamart-suppliers.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Business, Developer tools, MCP servers
- **Stats:** 0 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 suppliers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Scraper — B2B Suppliers, Phone Numbers & Leads

Turn any IndiaMART product category into a clean, structured list of Indian B2B
suppliers — complete with **company name, phone number, city, state, product,
price and verification flags**. No login, no API key, no browser automation. Just
give it a product ("industrial pumps", "ball valves", "leather gloves") and it
returns ready-to-use sales leads.

IndiaMART is India's largest B2B marketplace. This actor is the fastest way to
pull supplier contact data out of it for prospecting, market research, lead
generation, competitor mapping or CRM enrichment.

> Works in **Claude, ChatGPT and any MCP-compatible AI agent**, as well as the
> Apify API, scheduler and integrations.

---

### What you get per supplier

Each result is one supplier record:

| Field | Description |
|---|---|
| `company_name` | Supplier / company name |
| `contact_number` | Phone number, normalised to `+91-XXXXXXXXXX` where possible |
| `city` | Supplier city |
| `state` | Supplier state (when available) |
| `category` | IndiaMART category the supplier was found under |
| `company_url` | Supplier website / IndiaMART storefront URL |
| `glusr_id` | IndiaMART internal user id (stable supplier id, good for dedup) |
| `display_id` | IndiaMART display/listing id |
| `email_verified` | Whether the supplier's email is verified (`true`/`false`) |
| `gst_verified` | Whether the supplier's GST is verified (`true`) |
| `member_since` | How long the supplier has been on IndiaMART (e.g. "14 yrs") |
| `product_title` | The product the supplier listed under this category |
| `price` | Listed price for that product (e.g. "₹ 9,800") |
| `scraped_at` | ISO timestamp of the scrape |

Null/empty fields are dropped from each record so your output stays clean. A
final summary record `{ "_type": "summary", "suppliers": N, ... }` is appended to
every run.

---

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `searchQuery` | string | `industrial pumps` | Product or category to find suppliers for. Free text — it is mapped to the right IndiaMART category automatically. |
| `maxResults` | integer | `100` | Max suppliers to return (1–1000). |
| `city` | string | _(blank)_ | Optional. Restrict to a single Indian city (e.g. `Mumbai`). Blank = suppliers across all of India. |
| `proxyConfiguration` | object | Apify Residential, country `IN` | Strongly recommended. IndiaMART is an Indian site; residential Indian IPs give the most reliable access. |

#### Example input

```json
{
  "searchQuery": "industrial pumps",
  "maxResults": 100,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "IN" }
}
````

***

### How it works (and what it returns)

IndiaMART category pages live at `https://dir.indiamart.com/impcat/<slug>.html`.
The actor:

1. **Resolves your query to a category.** Free text like "industrial pumps" is
   slugified and probed against IndiaMART (with smart plural/singular fallbacks,
   since IndiaMART categories are almost always plural — "ball valve" →
   `ball-valves`). The first slug that returns real supplier data wins.
2. **Extracts the embedded supplier data.** Each category page ships supplier
   records inside `window.__INITIAL_STATE__` — around **28 full supplier records
   per page**, each with company, phone, city, state, price and verification
   flags. This needs **no login** and **no browser**.
3. **Paginates without a login wall.** IndiaMART's on-page "Show More Results"
   button is gated behind an OTP login, so to go beyond 28 the actor fetches the
   **same category across the all-India page plus major Indian city hubs**
   (`https://dir.indiamart.com/<city>/<slug>.html`) — Mumbai, Delhi, Ahmedabad,
   Bengaluru, Chennai, Pune, Hyderabad and ~20 more. Each returns a distinct
   \~28-supplier set; results are **deduplicated by `glusr_id`**. In practice this
   yields **100–250+ unique suppliers** per category before the hub list is
   exhausted.

If you set a `city`, the actor fetches only that city's page for the category
(one ~28-record set).

#### Reliability & caveats (honest)

- **Ceiling per run.** Because pagination is driven by the city-hub fan-out,
  realistic yield is roughly **150–250 unique suppliers per category** for busy
  categories, fewer for niche ones. It does not return all 17,000+ suppliers a
  category may claim — IndiaMART hides the long tail behind OTP login.
- **Phone numbers** come from IndiaMART's compact `c_ct` field. The vast majority
  are present and valid; a small number of listings may omit a usable number.
- **Use residential IN proxies.** Datacenter IPs work intermittently but
  residential Indian IPs are markedly more reliable. The default is set for you.
- **Category resolution** depends on IndiaMART having a category for your term.
  Very specific or misspelled queries may not resolve — use a broader, plural
  product name (e.g. "submersible pumps" rather than "5hp ss submersible").
- **No login, no scraping of gated detail pages.** This actor returns listing-level
  lead data only, which is what most prospecting workflows need.

***

### Pricing

**Pay-per-result.** The **first 25 suppliers are free** for every Apify account
(lifetime), then **$0.002 per supplier ($2 per 1,000)**. You are charged only for
real supplier records that are delivered — empty searches, failed runs, and the
summary record are never charged. Apify platform usage (compute, proxy) is billed
separately by Apify at their standard rates.

The actor runs on a lightweight **512 MB** HTTP footprint with a 300-second
default timeout, so platform costs stay low.

***

### Tips

- For maximum coverage, leave `city` blank and raise `maxResults`.
- For local prospecting, set `city` to your target market.
- `glusr_id` is a stable supplier identifier — use it to dedupe across runs and
  to merge IndiaMART leads into your CRM.
- Schedule the actor to re-run weekly to catch newly listed suppliers.

***

### Legal

This actor collects business listing information that IndiaMART publishes
publicly without authentication. Use the data in compliance with applicable laws
(including India's DPDP Act and anti-spam / TRAI DND regulations) and IndiaMART's
terms. You are responsible for how you contact the suppliers you collect.

# Actor input Schema

## `searchQuery` (type: `string`):

Product or category to find suppliers for (e.g. "industrial pumps", "ball valves", "leather gloves"). Mapped to an IndiaMART category page.

## `maxResults` (type: `integer`):

Maximum number of suppliers to return.

## `city` (type: `string`):

Restrict results to a single Indian city (e.g. Mumbai, Delhi, Bengaluru). Leave blank to scrape suppliers across all of India.

## `proxyConfiguration` (type: `object`):

IndiaMART is an Indian site; residential IN proxies are strongly recommended for reliable access.

## Actor input object example

```json
{
  "searchQuery": "industrial pumps",
  "maxResults": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# 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 = {
    "searchQuery": "industrial pumps",
    "maxResults": 25,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/indiamart-suppliers").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 = {
    "searchQuery": "industrial pumps",
    "maxResults": 25,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/indiamart-suppliers").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "industrial pumps",
  "maxResults": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call themineworks/indiamart-suppliers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=themineworks/indiamart-suppliers",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "IndiaMART Scraper - B2B Suppliers, Phone & Leads",
        "description": "Affordable IndiaMART scraper: B2B suppliers, phone, GST & leads. $2/1,000 results, 25 free, pay-per-result, no subscription. Works in Claude, ChatGPT & any MCP-compatible AI agent.",
        "version": "0.1",
        "x-build-id": "zDlS3kdI3QM6gxZh6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/themineworks~indiamart-suppliers/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-themineworks-indiamart-suppliers",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/themineworks~indiamart-suppliers/runs": {
            "post": {
                "operationId": "runs-sync-themineworks-indiamart-suppliers",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/themineworks~indiamart-suppliers/run-sync": {
            "post": {
                "operationId": "run-sync-themineworks-indiamart-suppliers",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQuery": {
                        "title": "Search query / product category",
                        "type": "string",
                        "description": "Product or category to find suppliers for (e.g. \"industrial pumps\", \"ball valves\", \"leather gloves\"). Mapped to an IndiaMART category page."
                    },
                    "maxResults": {
                        "title": "Max suppliers",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of suppliers to return.",
                        "default": 100
                    },
                    "city": {
                        "title": "City filter (optional)",
                        "type": "string",
                        "description": "Restrict results to a single Indian city (e.g. Mumbai, Delhi, Bengaluru). Leave blank to scrape suppliers across all of India."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "IndiaMART is an Indian site; residential IN proxies are strongly recommended for reliable access.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "IN"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
