Guides

How to Scrape IndiaMART Supplier and B2B Lead Data

IndiaMART is India's largest B2B marketplace, which makes it one of the deepest public sources of supplier and lead data: company name, city, product, price, and contact across almost every product category. This guide covers what a supplier listing holds, where that data lives, the challenges of collecting it at scale, and how to turn it into a clean supplier or lead list without babysitting a scraper. The worked example uses a real IndiaMART category, so you are seeing the actual structure.

DADataScrape TeamSeptember 2, 2026Updated September 24, 20265 min read

What data an IndiaMART listing holds

A category page carries a row per supplier, and each row is built for sourcing. On a real category, one listing read: the company name (Universal Exporter), its city (Surat), a per-unit price (130 rupees), a contact number, and the company profile URL, alongside trust signals like a verified or TrustSEAL badge and a response rate. The fields that matter for sourcing or lead work, the company, city, price, and contact, are all present on the category results, so you rarely need to open each profile one by one.

Where the data actually lives

IndiaMART loads its supplier and category data through internal AJAX JSON endpoints, for example the mcatAjaxRequest calls on dir.indiamart.com and the caps_service API, which return supplier records with company name, city, price, and contact rather than printing them only into the page. Each record is keyed to a product category, which IndiaMART calls an mcat. Reading those JSON responses is cleaner than parsing the rendered cards, though the same product often spans several mcats.

Skip the build, get the feed

Send us your IndiaMART target and we will scrape a real sample and send it back, no signup.

Get a free sample

The practical challenges

IndiaMART varies what it shows by whether you are signed in and throttles automated access, so a logged-out scraper sees less and gets limited faster. The same product appears under many suppliers and many mcats, so without deduplication you double-count. Prices are quoted per unit with varying minimum order quantities, so a naive pull mixes units and MOQs into a meaningless average. Contact numbers are partially gated in the interface even though they sit in the response, and a scraper that works today can return blanks after an endpoint or layout change.

Turning it into a supplier or lead list

For sourcing or outreach you want one row per supplier, deduplicated on the company profile URL, captured per category and city, keeping the company, city, price, minimum order quantity, contact, and category. Drop the rest so the sheet stays workable, and store each run with a date so you can watch new suppliers enter a category over time rather than re-pulling everything each cycle.

Build it yourself or have it delivered

For one category and city, a careful script can get you a sample. The trouble starts at scale and over time, where the login-gating, the mcat duplication, the throttling, and the markup changes turn a weekend script into a standing maintenance job. Past a couple of categories, or once you need the list refreshed on a schedule, a done-for-you feed is usually cheaper than the upkeep. You tell us the categories and cities, and we deliver a clean, deduplicated supplier list and keep it running.

Where each field lives in the response

IndiaMART builds its category pages from internal AJAX JSON, so knowing the keys is what makes a parse reliable. The supplier records arrive under a node the response calls RECOMMMENDATON_CATEGORY_BASED, and each supplier object carries COMPANYNAME (the business), CITY_NAME (its city), PRICE (the per-unit quote), CONTACT_NUMBER (the phone, present even where the interface gates it), and COMPANY_URL (the profile link). That COMPANY_URL is the stable key you deduplicate on, because the same supplier surfaces under many product categories, which IndiaMART calls mcats and passes as an mcatid on the request. A companion caps_service endpoint returns the related categories, useful for expanding a search across every mcat a product touches so your coverage is complete rather than a single slice.

Step by step: reading an IndiaMART category

IndiaMART loads its supplier listings through internal AJAX JSON endpoints, so the cleanest read is that response rather than the rendered cards. Here it is on a real category, where the listing returned suppliers in Surat with a company, price, and contact for each. The catch, covered right after, is what the site does to logged-out automated access.

python
import requests

# IndiaMART's category pages fetch suppliers from internal AJAX JSON endpoints.
url = "https://dir.indiamart.com/mcatAjaxRequest/getPlaData"
params = {"mcatid": "12096", "page_city_id": "70490"}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}

data = requests.get(url, params=params, headers=headers).json()
for s in data["RECOMMMENDATON_CATEGORY_BASED"]:
    print(s["COMPANYNAME"], s["CITY_NAME"], s.get("PRICE"), s.get("CONTACT_NUMBER"))
CompanyUniversal Exporter
CitySurat
PriceRs 130 per unit
ContactIn the API response
Company URLindiamart.com/universal-exporter/
Trust signalVerified / TrustSEAL badge

A sample of the clean data we deliver for one product.

The parse is straightforward. The friction is that IndiaMART shows a logged-out scraper less, throttles it faster, and spreads the same product across many category ids, so a real collection means handling the session, deduplicating suppliers across categories, and pacing the requests. Contact numbers are business data, so we include or strip them to match how you plan to use the list, and recommend scrubbing against the local rules before any outreach. We run all of that and hand back a clean supplier list.

Fields worth capturing from IndiaMART

  • Company name
  • City
  • Product / category (mcat)
  • Price per unit
  • Minimum order quantity
  • Contact number
  • Company profile URL
  • Verified / TrustSEAL badge
  • Response rate
  • Member since
  • GST (where shown)
  • Product image

Frequently asked questions

Want a IndiaMART feed without the build?

Send us the products or pages you need, and we will deliver a clean feed and maintain it. Start with a free sample.

Get a Free Sample