# IndiaMART Scraper 🇮🇳 (B2B supplier leads, contacts, prices) (`tagadanar/indiamart-scraper`) Actor

Turn an IndiaMART category into a ready-to-use supplier list: company name, city and state, contact number, GST status, seller rating and review count, plus the product and price each listing was found under. No login needed; the India residential proxy is already included in the price you see.

- **URL**: https://apify.com/tagadanar/indiamart-scraper.md
- **Developed by:** [Tagada Data](https://apify.com/tagadanar) (community)
- **Categories:** Lead generation, E-commerce, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 supplier listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Supplier Leads, Contacts & Prices

Pull structured supplier data from IndiaMART, India's largest B2B marketplace. Give it a product category and you get back a clean list of sellers: company name, city and state, the public click-to-call contact number, GST status, rating, and the product they were listed under with its price.

It reads IndiaMART's own category pages, which ship the listing data as server-rendered JSON, so it is fast and returns complete records instead of half-loaded page fragments. No browser, no login. IndiaMART only serves supplier listings to India IPs, so the actor runs through Apify Residential pinned to India by default; the proxy and all compute are included in the per-listing price, so the price you see is the full price.

### What you get per listing

| Field | Description |
| --- | --- |
| `companyName`, `companyId` | Seller name and IndiaMART's internal id |
| `contactNumber` | IndiaMART's public click-to-call number for the seller |
| `city`, `state`, `country`, `address` | Where the supplier is based |
| `gstVerified`, `gstRegistered` | GST verification flags |
| `rating`, `reviewCount`, `memberSince` | Seller reputation signals |
| `website`, `sellerHandle` | The seller's own site when listed |
| `productName`, `productFamily`, `productUrl` | The product this listing was found under |
| `price`, `priceLabel` | Disclosed price, numeric and as shown |
| `specs` | Product spec key/values IndiaMART tags on the listing |
| `category`, `categoryId` | The category the listing came from |

### Who uses it

- **B2B sales and lead-gen teams** building supplier or prospect lists for a product category.
- **Procurement and sourcing** comparing suppliers, prices and GST status across a category.
- **Market research** pulling thousands of sellers to map a category by geography, price and reputation.
- **Agents and data pipelines** that need supplier data as clean JSON.

### Input examples

Scrape suppliers for one category (and its related categories):

```json
{
  "categories": ["packaging machine"],
  "maxResults": 300
}
````

Several categories at once, one row per company, exact categories only:

```json
{
  "categories": ["industrial valves", "cnc machines", "ball bearings"],
  "expandRelated": false,
  "dedupeByCompany": true,
  "maxResults": 1000
}
```

Expand every category under an industry hub:

```json
{
  "categories": ["https://dir.indiamart.com/industry/packaging-material.html"],
  "maxResults": 2000
}
```

### Pricing

You pay per supplier listing returned, and that is the whole bill: compute and the India residential proxy are included, with no separate platform usage charges. No subscription, no minimum. Users on higher Apify plans get automatic discounts on these prices.

| Event | Price |
| --- | --- |
| Run started | $0.005 flat per run |
| Supplier listing | $2.00 per 1,000 ($0.002 each, per listing returned) |

### FAQ

**Is the contact number the seller's private mobile?** No. It is IndiaMART's public click-to-call number, which routes to the seller. It is genuinely usable for outreach, but it is a call-tracking proxy, not the seller's personal line. The direct mobile sits behind IndiaMART's login and enquiry wall and is not scraped.

**Why does it need an India proxy?** IndiaMART geo-routes its directory. From outside India the category pages do not return supplier data, so the actor uses Apify Residential pinned to India. The proxy is built in and already covered by the per-listing price, so there is nothing to configure and nothing extra to pay.

**How do category names map to IndiaMART?** A name is turned into IndiaMART's slug, which is singular: `packaging machine` reaches `/impcat/packaging-machine.html`. If a category comes back empty, the slug likely differs; paste the exact `impcat` URL from IndiaMART instead.

**How many suppliers can I pull?** Each category page lists 28 suppliers. To scale beyond that, keep `expandRelated` on: the actor follows the related categories IndiaMART links from your search, so one seed becomes hundreds of relevant suppliers up to your `maxResults`. For broad coverage, pass several categories or an industry-hub URL.

**Can I get one row per company instead of per product?** Yes. Set `dedupeByCompany` to true and each supplier appears once. This pairs well with `expandRelated`, which surfaces the same supplier across related categories.

***

### Something missing?

If you need an extra field, another source, or a different output, open an issue on this Actor and describe it. I read every request and small additions usually ship within days. More data and lead generation Actors are on [my profile](https://apify.com/tagadanar).

*IndiaMART scraper, IndiaMART supplier data, B2B leads India, scrape IndiaMART, supplier contact numbers, India manufacturers directory, GST verified suppliers, procurement data India, wholesale suppliers India.*

# Actor input Schema

## `categories` (type: `array`):

One search per entry. Use a product category name (e.g. <code>packaging machine</code>, <code>industrial valves</code>), an IndiaMART <code>impcat</code> category URL, or an <code>industry</code> hub URL (e.g. <code>https://dir.indiamart.com/industry/packaging-material.html</code>) to expand every category under it. Category names map to IndiaMART's singular slug, so <code>packaging machine</code> reaches <code>/impcat/packaging-machine.html</code>.

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

Total listings to return across all categories.

## `expandRelated` (type: `boolean`):

Each IndiaMART category page lists 28 suppliers. With this on, the actor also follows the related categories IndiaMART links from your category, turning one search into hundreds of relevant suppliers (up to your max). Turn off to stay strictly within the exact categories you named.

## `includeSponsored` (type: `boolean`):

Also return the promoted/ad listings shown at the top of each category.

## `dedupeByCompany` (type: `boolean`):

Collapse multiple product listings from the same supplier into a single row. Off by default (one row per product listing).

## Actor input object example

```json
{
  "categories": [
    "packaging machine"
  ],
  "maxResults": 200,
  "expandRelated": true,
  "includeSponsored": false,
  "dedupeByCompany": false
}
```

# Actor output Schema

## `suppliers` (type: `string`):

One item per supplier listing in the 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 = {
    "categories": [
        "packaging machine"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tagadanar/indiamart-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 = { "categories": ["packaging machine"] }

# Run the Actor and wait for it to finish
run = client.actor("tagadanar/indiamart-scraper").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 '{
  "categories": [
    "packaging machine"
  ]
}' |
apify call tagadanar/indiamart-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "IndiaMART Scraper 🇮🇳 (B2B supplier leads, contacts, prices)",
        "description": "Turn an IndiaMART category into a ready-to-use supplier list: company name, city and state, contact number, GST status, seller rating and review count, plus the product and price each listing was found under. No login needed; the India residential proxy is already included in the price you see.",
        "version": "0.1",
        "x-build-id": "Wmb1h7us4jDRTg6wo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/tagadanar~indiamart-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-tagadanar-indiamart-scraper",
                "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/tagadanar~indiamart-scraper/runs": {
            "post": {
                "operationId": "runs-sync-tagadanar-indiamart-scraper",
                "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/tagadanar~indiamart-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-tagadanar-indiamart-scraper",
                "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",
                "required": [
                    "categories"
                ],
                "properties": {
                    "categories": {
                        "title": "Categories to scrape",
                        "minItems": 1,
                        "type": "array",
                        "description": "One search per entry. Use a product category name (e.g. <code>packaging machine</code>, <code>industrial valves</code>), an IndiaMART <code>impcat</code> category URL, or an <code>industry</code> hub URL (e.g. <code>https://dir.indiamart.com/industry/packaging-material.html</code>) to expand every category under it. Category names map to IndiaMART's singular slug, so <code>packaging machine</code> reaches <code>/impcat/packaging-machine.html</code>.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max supplier listings",
                        "minimum": 1,
                        "maximum": 20000,
                        "type": "integer",
                        "description": "Total listings to return across all categories.",
                        "default": 200
                    },
                    "expandRelated": {
                        "title": "Expand into related categories",
                        "type": "boolean",
                        "description": "Each IndiaMART category page lists 28 suppliers. With this on, the actor also follows the related categories IndiaMART links from your category, turning one search into hundreds of relevant suppliers (up to your max). Turn off to stay strictly within the exact categories you named.",
                        "default": true
                    },
                    "includeSponsored": {
                        "title": "Include sponsored listings",
                        "type": "boolean",
                        "description": "Also return the promoted/ad listings shown at the top of each category.",
                        "default": false
                    },
                    "dedupeByCompany": {
                        "title": "One row per company",
                        "type": "boolean",
                        "description": "Collapse multiple product listings from the same supplier into a single row. Off by default (one row per product listing).",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
