Scrape public IndiaMART supplier and product listings for B2B sourcing, procurement research, lead generation, and price monitoring. The Actor returns structured rows with product names, supplier names, locations, public URLs, visible price text, ratings, trust signals, descriptions, and specifications when available.
Value proposition
IndiaMART Suppliers Scraper turns public IndiaMART search results into clean supplier and product datasets for sourcing and lead generation. Instead of manually copying supplier names, product URLs, locations, ratings, prices, and descriptions, you can run repeatable keyword/location searches and export structured data.
What does this Actor do?
IndiaMART Suppliers Scraper collects public supplier and product listing data from IndiaMART search results. It is designed for sourcing teams, procurement analysts, lead generation agencies, distributors, exporters, and market researchers who need repeatable structured exports instead of manual copy-paste.
Who is it for and use cases
- Find suppliers by keyword: search IndiaMART for products such as steel pipes, industrial valves, packaging machines, or textile materials.
- Build B2B lead lists: export supplier names, cities, states, product URLs, supplier URLs, ratings, and visible contact snippets.
- Compare sourcing options: collect prices, MOQ text, images, and public product descriptions into CSV, Excel, JSON, or API workflows.
- Automate recurring research: run the same keyword/location inputs on a schedule and compare fresh supplier lists.
Input example
{
"queries": ["steel pipes"],
"city": "Mumbai",
"maxItems": 10,
"maxPagesPerQuery": 1,
"includeDetails": false
}
Input recipes
supplier-keyword-search
{
"queries": ["steel pipes", "industrial valves"],
"city": "Mumbai",
"maxItems": 50,
"maxPagesPerQuery": 2,
"includeDetails": false
}
category-sourcing-shortlist
{
"startUrls": [{ "url": "https://dir.indiamart.com/search.mp?ss=steel%20pipes&cq=Mumbai" }],
"maxItems": 50,
"includeDetails": false
}
supplier-detail-enrichment
{
"queries": ["industrial valves"],
"locations": ["Mumbai", "Ahmedabad"],
"maxItems": 25,
"includeDetails": true
}
Example output
{
"recordType": "listing",
"query": "steel pipes",
"sourceUrl": "https://dir.indiamart.com/search.mp?ss=steel%20pipes&cq=Mumbai",
"pageUrl": "https://dir.indiamart.com/api/search.rp?q=steel+pipes&page=1&source=dir.search&options.filters.city.data=Mumbai",
"productName": "Structural Steel Pipes, Size: 1/2 inch, 3/4 inch, 1 inch, 2 inch",
"productUrl": "https://www.amcometal.net/gi-pipes.html#structural-steel-pipes-size-1-2-inch-3-4-inch-1-inch-2-inch",
"supplierName": "Amco Metals",
"supplierUrl": "https://www.amcometal.net/",
"city": "Mumbai",
"state": "Maharashtra",
"country": "IN",
"priceText": "₹90",
"currency": "INR",
"minimumOrderQuantity": null,
"imageUrl": "https://5.imimg.com/data5/SELLER/Default/2023/8/331022901/DQ/WM/FU/1120403/structural-steel-pipes-250x250.jpeg",
"rating": 4.3,
"trustBadges": ["Email verified", "Mobile verified", "GST verified"],
"description": "Amco Metals is a leading supplier and Exporter of Structural pipes...",
"detailStatus": "not_requested",
"missingFields": []
}
Tips for best results
- Start small: test with
maxItems: 10before running larger sourcing jobs. - Use focused keywords: specific product names usually return cleaner supplier lists than broad categories.
- Add locations: use
cityorlocationsto target local sourcing workflows. - Keep public boundaries: this Actor does not log in, submit inquiries, unlock private contact data, or scrape buyer messages.
- Use
failOnNoResultsfor monitoring: make scheduled runs fail loudly if IndiaMART returns a block page or an empty response.
Limits and troubleshooting
IndiaMART may serve different responses by geography, proxy type, and traffic pattern. If a run returns no rows, try a smaller input, an Indian residential proxy, or a different city/keyword. Detail enrichment is intentionally conservative and only uses data visible on public pages.
API usage
Node.js:
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/indiamart-suppliers-scraper").call({
queries: ["steel pipes"],
city: "Mumbai",
maxItems: 10
});
console.log(run.defaultDatasetId);
Python:
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/indiamart-suppliers-scraper").call(run_input={
"queries": ["steel pipes"],
"city": "Mumbai",
"maxItems": 10,
})
print(run["defaultDatasetId"])
cURL:
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~indiamart-suppliers-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["steel pipes"],"city":"Mumbai","maxItems":10}'
MCP and AI agents
Use this Actor from MCP-compatible tools through the official Apify MCP Server.
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/indiamart-suppliers-scraper"
JSON configuration example:
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/indiamart-suppliers-scraper"
}
}
}
Example prompts:
- "Find IndiaMART steel pipe suppliers in Mumbai and summarize supplier names, prices, and ratings."
- "Create a CSV-ready sourcing shortlist for industrial valve suppliers in Ahmedabad."
Support
If you need help, open an issue on the Actor page and include:
- Input JSON: the exact
queries,startUrls, location, limits, and proxy settings you used. - Expected output: the supplier/product rows or fields you expected to receive.
- Actual output: dataset rows, empty dataset, or error message from the run.
- Reproducible public URL: an IndiaMART search or listing URL that shows the public data in your browser.
- Run ID: the Apify run ID so support can inspect logs and dataset behavior.