# IndiaMART Supplier Scraper: Companies, Products & Prices (`doggo/indiamart-supplier-scraper`) Actor

Scrape supplier and product listings from IndiaMART, India's largest B2B marketplace. Search any product or category and export company names, prices, cities, GST numbers, ratings and contact info. Deep search returns hundreds of suppliers per query - no login or API key needed.

- **URL**: https://apify.com/doggo/indiamart-supplier-scraper.md
- **Developed by:** [Doggo](https://apify.com/doggo) (community)
- **Categories:** E-commerce, Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

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 Supplier Scraper

Search [IndiaMART](https://www.indiamart.com/) — India's largest B2B marketplace — and
extract suppliers and products: **company, product, price, city, state, GST number,
rating, response rate, member-since, and product URL** — all by search query. No IndiaMART
account or API key needed, and results export to Excel, CSV, JSON, or Google Sheets.

### Why this scraper actually returns data

IndiaMART's search pages only ship a placeholder skeleton — the real listings are loaded
separately in the background, which is why many scrapers that read the page HTML come back
empty. This actor reads the listing data at its source instead, and automatically switches
to a full stealth browser if the fast path is blocked, so you get real supplier records,
not empty cards.

To go **deep**, it doesn't just grab the first page (IndiaMART only shows page 1 to
anonymous visitors). It automatically re-runs each query across many **cities, business
types, and price ranges**, then merges and de-duplicates the results — so one query can
return **hundreds** of unique suppliers instead of ~10.

### How to run it in the Apify Console

1. Enter one or more **Search queries** (products or categories), e.g. `led lights`,
   `industrial valves`.
2. Optionally set a **City** filter and a **Max suppliers** cap.
3. Click **Start**. When the run finishes, download the results from the **Dataset** tab
   in any format, or send them to Google Sheets via an integration.

You can also start runs via the [Apify API](https://docs.apify.com/api/v2) or on a
schedule.

#### Input options

| Field | Type | Description |
|-------|------|-------------|
| `searchQueries` | array (required) | Products/categories to search, e.g. `["led lights", "industrial valves"]` |
| `city` | string | Optional city filter, e.g. `"Mumbai"`. Leave blank for all India. |
| `maxItems` | integer | Stop after this many supplier listings (default 200). |
| `debug` | boolean | Saves raw API/page snapshots to the run's key-value store (`DEBUG_*`) for troubleshooting. |

Proxies are managed automatically by the actor — there is nothing to configure.

### Output (per supplier)

`company`, `product`, `price`, `unit`, `city`, `state`, `gst`, `rating`, `responseRate`,
`url`, `memberSince` (plus `searchQuery`).

Example:

```json
{
  "company": "M/s. Mahendra Sales Corp",
  "product": "Consumer LED Light",
  "price": "₹ 450",
  "unit": null,
  "city": "Bengaluru",
  "state": "Karnataka",
  "gst": "29ADNPN0762E1ZE",
  "rating": 4.1,
  "responseRate": "78%",
  "url": "https://www.indiamart.com/proddetail/consumer-led-light-21493473473.html",
  "memberSince": "6 yrs",
  "searchQuery": "led lights"
}
````

### Great for

- Sourcing and shortlisting Indian suppliers and manufacturers by product
- Price benchmarking across suppliers, cities, and states
- Building GST-verified vendor lists for procurement
- Market research on India's B2B landscape

### Known limitations

- **Depth depends on the query.** IndiaMART only serves the first page of results per
  filter to anonymous (not-logged-in) sessions, so the actor widens coverage by fanning
  out across cities, business types, and price bands. Popular categories (e.g. `led
  lights`) yield **hundreds** of unique suppliers; niche terms with few suppliers
  naturally return fewer. Raise **Max suppliers** to collect more, or add more specific
  queries for the very long tail.
- **Pinning a city narrows results.** Setting the optional `city` filter restricts the
  run to that city (and fans out only over business type and price there), so it returns
  fewer, more targeted suppliers than an all-India run.
- **Anti-bot pressure varies.** If IndiaMART refuses to serve results for a given
  IP/session, the run **fails loudly** with a clear status message rather than silently
  succeeding with zero items — so you never pay for an empty run that looks successful.
  Re-running usually succeeds with a fresh IP.
- Some listings show "Ask Price" instead of a number; `price`/`unit` are then `null`.

### Use with AI agents (MCP)

This Actor works as a tool for AI agents via the [Apify MCP server](https://mcp.apify.com). Add it to Claude, Cursor, or any MCP-compatible assistant with this server URL:

```text
https://mcp.apify.com?tools=doggo/indiamart-supplier-scraper
```

Then just ask something like *"Find LED bulb suppliers on IndiaMART with prices, cities, and GST numbers"* — the agent fills in the input, runs the Actor, and reads the results from the dataset. Standard pay-per-result pricing applies to the calling account.

# Actor input Schema

## `searchQueries` (type: `array`):

Products/categories to search, e.g. "industrial valves".

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

Restrict results to a city, e.g. "Mumbai". Leave blank for all India.

## `maxItems` (type: `integer`):

Stop after this many supplier listings.

## `debug` (type: `boolean`):

Saves raw HTML snapshots of fetched pages to the run's key-value store (DEBUG\_\* keys) for troubleshooting selectors/blocking.

## Actor input object example

```json
{
  "searchQueries": [
    "industrial valves"
  ],
  "maxItems": 200,
  "debug": false
}
```

# Actor output Schema

## `results` (type: `string`):

Every supplier as JSON, including company, product, price, city, GST, rating, and URL.

## `overview` (type: `string`):

Suppliers in a friendly table view.

# 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 = {
    "searchQueries": [
        "industrial valves"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("doggo/indiamart-supplier-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 = { "searchQueries": ["industrial valves"] }

# Run the Actor and wait for it to finish
run = client.actor("doggo/indiamart-supplier-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 '{
  "searchQueries": [
    "industrial valves"
  ]
}' |
apify call doggo/indiamart-supplier-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "IndiaMART Supplier Scraper: Companies, Products & Prices",
        "description": "Scrape supplier and product listings from IndiaMART, India's largest B2B marketplace. Search any product or category and export company names, prices, cities, GST numbers, ratings and contact info. Deep search returns hundreds of suppliers per query - no login or API key needed.",
        "version": "0.7",
        "x-build-id": "hhLE8R4F9CiABE49U"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/doggo~indiamart-supplier-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-doggo-indiamart-supplier-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/doggo~indiamart-supplier-scraper/runs": {
            "post": {
                "operationId": "runs-sync-doggo-indiamart-supplier-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/doggo~indiamart-supplier-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-doggo-indiamart-supplier-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": [
                    "searchQueries"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Products/categories to search, e.g. \"industrial valves\".",
                        "items": {
                            "type": "string"
                        }
                    },
                    "city": {
                        "title": "City (optional)",
                        "type": "string",
                        "description": "Restrict results to a city, e.g. \"Mumbai\". Leave blank for all India."
                    },
                    "maxItems": {
                        "title": "Max suppliers",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after this many supplier listings.",
                        "default": 200
                    },
                    "debug": {
                        "title": "Debug — save page snapshots",
                        "type": "boolean",
                        "description": "Saves raw HTML snapshots of fetched pages to the run's key-value store (DEBUG_* keys) for troubleshooting selectors/blocking.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
