# IndiaMART Scraper - Suppliers, Prices & Ratings (`goat255/indiamart-scraper`) Actor

Collect Indian supplier listings by product category and city. One clean row per listing with price, company, location, years in business, ratings and product specs. No login and no API key.

- **URL**: https://apify.com/goat255/indiamart-scraper.md
- **Developed by:** [Goutam Soni](https://apify.com/goat255) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 listing scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

Collect Indian supplier listings by product category and city. One clean row per listing with price, company, location, years in business, ratings and product specs. No login and no API key.

### What it does

- **Price as a number**, with the unit it is sold by, so you can sort and compare instead of reading text.
- **Supplier details on every row**: company name, their own website, city and locality, and how many years they have been in business, plus a flag showing whether the supplier is based in that city or merely serves it.
- **Trust signals passed through as published**: rating, number of ratings, response rate, and whether the supplier carries a verification badge.
- **Product specifications** as a structured field, so attributes like size, material and brand arrive ready to filter.
- **Deduplicated across every category and city**, so a listing that appears in two searches is delivered once and charged once.

Common uses: supplier discovery and sourcing, price benchmarking across cities, building a vendor database, import and export research, and lead lists of manufacturers and distributors.

### Input

| Field | Type | Description |
|---|---|---|
| `categories` | array | Category names as they appear in the site address, for example `industrial-valves`. Plain names like "ball valves" are converted for you. |
| `cities` | array | Cities such as `mumbai` or `delhi`. Leave empty to search all of India. |
| `maxResultsPerCombination` | integer | Cap per category and city pair. Default 50. |
| `proxyConfiguration` | object | Recommended for larger runs. See the note below. |

#### Example input

```json
{
  "categories": ["industrial-valves", "ball-valves"],
  "cities": ["mumbai", "delhi", "chennai"],
  "maxResultsPerCombination": 100
}
````

### Output

Each item is one supplier listing.

```json
{
  "id": "2853262556873",
  "title": "Industrial Butterfly Valve",
  "category": "industrial-valves",
  "price": 600.0,
  "priceLabel": "₹ 600",
  "priceUnit": "Piece",
  "currency": "INR",
  "company": "Acme Valves Private Limited",
  "companyWebsite": "https://example.com",
  "yearsInBusiness": 20,
  "tenureLabel": "20 yrs",
  "city": "Mumbai",
  "locality": "Andheri West",
  "isServiceArea": false,
  "searchCity": "mumbai",
  "rating": 3.7,
  "ratingCount": 85,
  "responseRate": 93,
  "hasTrustSeal": true,
  "isLeadingSupplier": false,
  "specs": { "Size": "25mm to 50mm", "Material": "Cast Iron", "Brand": "Acme" },
  "imageUrl": "https://example.com/photo.jpg",
  "url": "https://www.indiamart.com/proddetail/example-2853262556873.html"
}
```

### Notes

- **More cities is how you get more suppliers, not a bigger cap.** Each category and city pair returns roughly 28 listings and that is all the source publishes for it. City pages barely overlap with each other, so two cities return close to two full sets of different suppliers. To collect a market, list many cities rather than raising the cap.
- **Enable the proxy for larger runs.** Sustained requests from a single address get throttled after roughly a dozen pages. The actor waits and retries automatically, and if a pair still cannot be fetched it is named in the log and counted, so a short run is never presented as a complete one.
- Listings that show "Ask Price" instead of a figure return `null` for `price` and keep every other field.
- `rating`, `responseRate` and the badges are only published for some suppliers. Newer sellers commonly have none, and those rows return `null` rather than a zero, which would read as a bad score rather than no score.
- `locality` is filled only when the listing states a neighbourhood as well as a city. Longer addresses such as "Area, Town, Dist. City" put the city in `city` and everything before it in `locality`.
- **`isServiceArea` marks a different kind of result.** Some listings say a supplier *deals in* a city rather than being based there. Those rows return the city with `isServiceArea` set to true, so you can tell a local supplier from one that merely covers the area. Filter it out if you only want businesses physically in the city.
- Prices are what the supplier advertises, usually a starting price, and are frequently negotiable for bulk orders. Treat them as a benchmark rather than a quote.

**Found this useful?** [Leave a quick review](https://apify.com/goat255/indiamart-scraper/reviews). It takes a few seconds and it genuinely helps other people find the actor.

### Privacy

To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.

# Actor input Schema

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

Category names as they appear in the site address, for example industrial-valves or ball-valves. Plain names such as "ball valves" are converted for you. An unknown category is reported in the log and skipped.

## `cities` (type: `array`):

Cities to search, for example mumbai or delhi. Leave empty to search all of India for each category. Adding cities is how you collect more suppliers, because each city returns its own set.

## `maxResultsPerCombination` (type: `integer`):

Cap for each category and city pair. A page carries roughly 28 listings, so a higher value than that returns everything available for the pair.

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

Residential proxy is required for this source and is enabled by default. Leaving it on is recommended.

## Actor input object example

```json
{
  "categories": [
    "industrial-valves"
  ],
  "cities": [
    "mumbai",
    "delhi"
  ],
  "maxResultsPerCombination": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# Actor output Schema

## `records` (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 = {
    "categories": [
        "industrial-valves"
    ],
    "cities": [
        "mumbai",
        "delhi"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("goat255/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": ["industrial-valves"],
    "cities": [
        "mumbai",
        "delhi",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("goat255/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": [
    "industrial-valves"
  ],
  "cities": [
    "mumbai",
    "delhi"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call goat255/indiamart-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "IndiaMART Scraper - Suppliers, Prices & Ratings",
        "description": "Collect Indian supplier listings by product category and city. One clean row per listing with price, company, location, years in business, ratings and product specs. No login and no API key.",
        "version": "0.0",
        "x-build-id": "z7PaGCcB0r35hQ16P"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/goat255~indiamart-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-goat255-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/goat255~indiamart-scraper/runs": {
            "post": {
                "operationId": "runs-sync-goat255-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/goat255~indiamart-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-goat255-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": "Product categories",
                        "type": "array",
                        "description": "Category names as they appear in the site address, for example industrial-valves or ball-valves. Plain names such as \"ball valves\" are converted for you. An unknown category is reported in the log and skipped.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "cities": {
                        "title": "Cities",
                        "type": "array",
                        "description": "Cities to search, for example mumbai or delhi. Leave empty to search all of India for each category. Adding cities is how you collect more suppliers, because each city returns its own set.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerCombination": {
                        "title": "Max listings per category and city",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap for each category and city pair. A page carries roughly 28 listings, so a higher value than that returns everything available for the pair.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Residential proxy is required for this source and is enabled by default. Leaving it on is recommended.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
