India's B2B marketplace as JSON, with the supplier record attached
IndiaMART API returns live IndiaMART data as clean JSON for indiamart The primary endpoint, search, returns product results including supplier id, product id, title, is indiamart url and price.
3 active endpoints. Every call is 1 credit.
- POST/indiamart/v1/search
- POST/indiamart/v1/category/listing
- POST/indiamart/v1/product/detail
What IndiaMART endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
IndiaMART API
3 of 3 endpoints, ready to run
Search indiamart.com by keyword and get supplier product offers. Every row carries the title, price in INR with its unit, the minimum order quantity, the supplier's company name, city, state, rating and member-since date, the product spec table (ISQ) and images. The response also returns the category IndiaMART resolved the keyword to as matched_category, related_categories carrying the exact slugs category/listing takes (feed one in for a deeper, city-filterable supplier list), and IndiaMART's own facet catalogue: cities, brands, categories, annual-turnover bands, GST-registration-year bands, IndiaMART's own price buckets for the matched category and the spec keys that category uses. Measured ceiling: indiamart.com serves 10 rows per request on this surface and pages the rest by client-side infinite scroll, so there is no page parameter — total_results is its own count of the whole set.
{ "ok": true, "data": { "products": [ { "supplier_id": "13261298", "product_id": "2853975845591", "title": "12W PHILIPS TYPE LED BULB PH2 65MM READY WITH BOX", "url": "https://www.bhagwatilightingindustries.com/led-dob-bulb.html#12w-philips-type-led-bulb-ph2-65mm-ready-with-box", "is_indiamart_url": false, "price": 59, "currency": "INR", "price_unit": "Piece", "min_order_quantity": 100, "min_order_unit": "Piece", "supplier_name": "Bhagwati Lighting Industries", "supplier_rating": 3.9, "supplier_member_since": "2015-01-02T22:37:53Z", "supplier_tier": "ARTL2", "email_verified": true, "city": "New Delhi", "state": "Delhi", "country_iso": "IN", "category": "LED Bulb", "category_id": "30613", "supplier_page_slug": "led-dob-bulb", "description": null, "specs": { "Base Type": "B22", "Light Color": "Natural White", "Brand": "OEM", "Warranty": "OEM", "Frequency": "50/60HZ", "Lumens": "130LM/WATT", "Voltage": "240V", "Wattage": "12 W", "Bulb Type": "LED BULB" }, "image": "https://5.imimg.com/data5/SELLER/Default/2024/7/435036693/VI/WJ/BP/13261298/12w-philips-type-led-bulb-ph2-65mm-ready-with-box-250x250.jpeg", "image_zoom": "https://5.imimg.com/data5/SELLER/Default/2024/7/435036693/VI/WJ/BP/13261298/12w-philips-type-led-bulb-ph2-65mm-ready-with-box-500x500.jpeg", "datasheet_url": "https://5.imimg.com/data5/SELLER/Doc/2024/7/434104189/EV/VZ/DK/13261298/12w-philips-type-led-bulb-ph2-65mm-ready-with-box.pdf", "has_photo": true }, { "supplier_id": "115687489", "product_id": "22957450991", "title": "5W Eco Ready Led Bulb", "url": "https://www.indiamart.com/lightoindustries/", "is_indiamart_url": true, "price": 12, "currency": "INR", "price_unit": "Piece", "min_order_quantity": 200, "min_order_unit": "Piece", "supplier_name": "Prakash Lighting Industries", "supplier_rating": 3.9, "supplier_member_since": "2020-10-13T19:38:39Z", "supplier_tier": "ARTL2", "email_verified": true, "city": "Kalyan", "state": "Maharashtra", "country_iso": "IN", "category": "LED Bulb", "category_id": "30613", "supplier_page_slug": null, "description": null, "specs": { "Lighting Color": "Cool daylight", "Body Material": "Ceramic", "Color Temperature": "5000-6500 K", "Shape": "Round", "Voltage": "220 Volts", "Wattage": "5W", "Bulb Type": "LED" }, "image": "https://5.imimg.com/data5/ANDROID/Default/2025/9/545057510/ZO/ZA/CM/115687489/product-jpeg-250x250.jpg", "image_zoom": "https://5.imimg.com/data5/ANDROID/Default/2025/9/545057510/ZO/ZA/CM/115687489/product-jpeg-500x500.jpg", "datasheet_url": "https://5.imimg.com/data5/SELLER/Doc/2022/9/HT/ME/OS/115687489/5w-eco-ready-led-bulb.pdf", "has_photo": true }, { "supplier_id": "8996574", "product_id": "23484631197", "title": "9w Led Bulb Raw Material", "url": "https://www.ledlightsatytrue.com/led-lamps.html#9w-led-bulb-raw-material", "is_indiamart_url": false, "price": 28, "currency": "INR", "price_unit": "Piece", "min_order_quantity": null, "min_order_unit": "Piece", "supplier_name": "Ytrue Electronic Solutions", "supplier_rating": 3.9, "supplier_member_since": "2013-12-17T17:30:01Z", "supplier_tier": "ARTL2", "email_verified": true, "city": "Jaipur", "state": "Rajasthan", "country_iso": "IN", "category": "LED Bulb", "category_id": "30613", "supplier_page_slug": "led-lamps", "description": null, "specs": { "Base Type": "B22", "Lighting Color": "Cool daylight", "Light Color": "Cool daylight", "Shape": "Round", "Type": "Aluminum LED Bulb", "Brand": "Y-TRUE", "Usage/Application": "home / office", "Body Material": "Aluminum", "Wattage": "9 W" }, "image": "https://5.imimg.com/data5/GLADMIN/Default/2023/1/MN/HQ/UT/8996574/9w-led-bulb-raw-material-250x250.jpg", "image_zoom": "https://5.imimg.com/data5/GLADMIN/Default/2023/1/MN/HQ/UT/8996574/9w-led-bulb-raw-material-500x500.jpg", "datasheet_url": "https://5.imimg.com/data5/SELLER/Doc/2023/1/RP/PN/EU/8996574/9w-philips-type-led-bulb-raw-material.pdf", "has_photo": true } ], "count": 10, "total_results": 4457, "query": "led bulb", "city": null, "matched_category": { "id": "30613", "name": "LED Bulb", "group_id": "13", "parent_category_id": "826", "parent_category_name": "Light Bulb, Tubelight, Downlight, Rechargeable Light and Lighting Accessories" }, "related_categories": [ { "name": "LED Bulb", "slug": "led-bulb", "category_id": null }, { "name": "LED Replacement Bulb", "slug": "led-replacement-bulb", "category_id": null }, { "name": "LED Base Bulb", "slug": "led-base-bulb", "category_id": null } ], "facets": { "cities": [ { "name": "Delhi", "count": 8383 }, { "name": "Bengaluru", "count": 3414 }, { "name": "Pune", "count": 3360 } ], "brands": [ { "name": "Philips LED Bulb", "slug": "philips-led-bulb", "category_id": null }, { "name": "Eveready LED Bulb", "slug": "eveready-led-bulb", "category_id": null }, { "name": "Bajaj LED Bulb", "slug": "bajaj-led-bulb", "category_id": null } ], "categories": [ { "name": "LED Bulb", "slug": "led-bulb", "category_id": "30613" }, { "name": "LED Replacement Bulb", "slug": "led-replacement-bulb", "category_id": "95580" }, { "name": "LED Base Bulb", "slug": "led-base-bulb", "category_id": "95542" } ], "annual_turnover": [ { "label": "Under 1.5 Crore", "value": "bucket1" }, { "label": "1.5 - 5 Crore", "value": "bucket2" }, { "label": "Above 5 Crore", "value": "bucket3" } ], "gst_registration_years": [ { "label": "Under 1 year", "value": null, "min": 0, "max": 1 }, { "label": "1 - 3 years", "value": null, "min": 1, "max": 3 }, { "label": "Above 3 years", "value": null, "min": 3, "max": null } ], "price_bands": [ { "label": "Below ₹50", "min_price": 0, "max_price": 50, "unit": "Piece", "currency": "INR" }, { "label": "₹51 - ₹90", "min_price": 51, "max_price": 90, "unit": "Piece", "currency": "INR" }, { "label": "₹91 - ₹200", "min_price": 91, "max_price": 200, "unit": "Piece", "currency": "INR" } ], "spec_filters": [ { "name": "Brand", "options": [ "Philips", "Havells", "Syska" ] }, { "name": "Wattage", "options": [ "9W", "7W", "5W" ] }, { "name": "Warranty", "options": [ "1 Year", "2 Years", "6 Months" ] } ] }, "page_size_note": "indiamart.com serves at most 10 search rows per request and pages the rest by client-side infinite scroll, so there is no page parameter. total_results is its own count of the whole set; use category/listing with matched_category for a deeper, city-filterable supplier list." } }
How the IndiaMART API works
IndiaMART is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 321 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Search once to find the category, then work the category, because that is where the supplier record lives
A keyword search answers with ten offers and, more usefully, with IndiaMART's own category for that keyword. The category listing is the surface that carries the GST number and the deeper supplier fields, and it is the one you can slice by city.
{"query": "industrial valve"}1 credit. Ten supplier offers, plus IndiaMART's facet catalogue: cities with counts, brands, business types, annual-turnover bands, GST-registration-year bands and the spec keys that category uses. related_categories carries the slugs the next call takes.
{"category": "<a slug from related_categories>"}1 credit for 28 supplier cards. This is the surface with gst_number on every row, plus the supplier's rating, city and a sample of their other products.
{"category": "<same slug>", "city": "mumbai"}1 credit. The same shape, scoped to one city. This is the lever that actually narrows a result set, because the source publishes no page parameter.
{"product_id": "<from any listing row>"}1 credit. The full offer plus the complete supplier record: registered address, year established, employee count, annual turnover, legal status, GST verification, the rating histogram and the countries they export to.
A category you did not have to guess, supplier cards with a GST number you can verify independently, and a full company record for the handful worth contacting.
curl -X POST https://api.reefapi.com/indiamart/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"led bulb"}'{
"ok": true,
"data": { … },
"meta": {
"api": "indiamart",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}India only, ten rows a call, and no pagination anywhere on this source
Measured 2026-09-30 against the live gateway across six keyword searches, six categories and three product records. Three of these lines go against us.
Prices come back in INR with the unit IndiaMART publishes them in, which for a B2B source is usually per piece, per kilogram, per metre or per set rather than a flat figure. Reading the site from outside India serves a different storefront entirely - IndiaMART's export front - so the engine is pinned to an Indian vantage point and the catalogue you get is the domestic one buyers actually transact on.
Search returns ten rows and a category listing returns twenty-eight, and that is the end of it. Page, offset, start and several other parameter spellings were each tried against both surfaces, along with numbered URL variants; every one returned the same first rows or a 404. IndiaMART pages its own results with client-side infinite scroll. So the engine publishes no page parameter it cannot honour, and total_results is IndiaMART's own count of the whole set rather than something you can walk. The way to reach the rest of a market is to narrow it: led-bulb reports 73,697 suppliers across India and 1,819 in Mumbai.
Take it from related_categories[].slug, which both search and listing return. A category name is accepted too and slugified for you, but IndiaMART's own slugs are not always the slugified name: 'Ball Bearings' is ballbearing and 'Corrugated Packaging Boxes' is packingboxes. Measured over six categories, the name resolved four times and the slug six.
Eighty-four of eighty-four category rows carried gst_number, along with the supplier's name, city, rating and a sample of their other products. That is the field that makes a supplier independently checkable against India's own GST registry, and it is the reason the category listing is worth more than the search surface for procurement work.
Nineteen of forty search rows published a minimum order quantity. The rest leave it blank at the source and it is returned null, never filled in from a sibling offer and never defaulted to one. Price is better but not complete either: thirty-eight of forty on search and eighty of eighty-four on category listings, because 'Ask Price' is a normal thing for a B2B seller to publish instead of a number.
IndiaMART's search cards link to the seller's own microsite rather than to a product page, on every row measured. The product id that product/detail needs travels in a separate parallel array on the page, and the engine pairs it positionally only when the two arrays are the same length, so a mismatch produces a null id rather than a wrong one. Category rows carry the product id directly, which is another reason to work the category surface.
A nonsense keyword returns ok with zero rows and a total of zero, not an error and not a block. The same call shape that finds 4,457 industrial valve offers finds none for a typo, and the response says so plainly.
Read from a datacentre, indiamart.com answers with a 134-byte refusal on every attempt - eight of eight, identical across seven different client profiles, which is what a network-level rule looks like rather than a fingerprint one. That cost is ours and it is priced in, but it is why this engine cannot be the cheapest one in the catalogue.
One credit for a search, one for a category listing and one for a product record. A listing page returns twenty-eight supplier cards for that single credit, which makes it the cheapest way to build a supplier shortlist here.
What people build with IndiaMART
The jobs this data is most often used for.
endpoints
credit per call
Pricing and assortment teams use IndiaMART to search indiamart.com by keyword and get supplier product offers.
Brand-protection teams use IndiaMART to list the suppliers and offers in one IndiaMART category ('mcat'), optionally in one Indian city.
Retail analysts use IndiaMART to get one IndiaMART product in full, by its numeric display id or its URL.
What IndiaMART data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 321 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/indiamart/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"led bulb"}'import requests
r = requests.post(
"https://api.reefapi.com/indiamart/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "led bulb"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up IndiaMART.
Get a free key →What is the IndiaMART API?▾
IndiaMART API is a ReefAPI endpoint group for indiamart It returns live JSON through POST requests under /indiamart/v1.
Is the IndiaMART API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. IndiaMART calls use the same shared credit balance as every other ReefAPI engine.
Do I need an IndiaMART login or account?▾
No login to IndiaMART is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the IndiaMART data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the IndiaMART API use?▾
IndiaMART actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call IndiaMART from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call indiamart actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the IndiaMART API an IndiaMART scraper?▾
It is the managed alternative to a DIY IndiaMART scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same indiamart back as clean JSON.
Why does my IndiaMART scraper keep getting blocked?▾
Most IndiaMART scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.
26 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling IndiaMART, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 320 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-30.