IndiaMART APIm.indiamart.com ↗
Search IndiaMART Export product listings, fetch product specs and images, and retrieve seller profiles with GST/IEC verification and export history.
What is the IndiaMART API?
The IndiaMART Export API exposes 3 endpoints covering product search, product detail lookup, and seller profile retrieval from m.indiamart.com. search_products returns up to 10 listings per query with pricing and seller info; get_product_details provides specifications, images, and company name for a single product; and get_seller_profile returns verification badges, export history, and business metadata for any seller.
curl -X GET 'https://api.parse.bot/scraper/bdf5deb6-3a65-418d-89f9-f4a22353bb57/search_products?query=textile' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace m-indiamart-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""IndiaMART Export: search products, drill into details, verify sellers."""
from parse_apis.indiamart_export_api import IndiaMart, NotFound
client = IndiaMart()
# Search for textile products — limit caps total items fetched
for product in client.products.search(query="textile", limit=5):
print(product.name, product.price, product.unit, product.rating)
# Drill into the first result's full specifications
product = client.products.search(query="cotton fabric", limit=1).first()
if product:
detail = product.details()
print(detail.title, detail.price)
for spec_key in list(detail.specifications.keys())[:3]:
print(f" {spec_key}: {detail.specifications[spec_key]}")
# Fetch a seller profile by slug
try:
seller = client.sellers.get(company_slug="veer-handircrafts")
print(seller.name, seller.location, seller.verified_exporter, seller.exporting_since)
except NotFound as exc:
print(f"Seller not found: {exc}")
print("Exercised: products.search / product.details / sellers.get")
Full-text search across IndiaMART Export product listings. Returns up to 10 products per query with pricing, seller info, and ratings. No pagination — each call yields one page of results for the given keyword.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword for products (e.g. 'textile', 'steel pipe', 'cotton fabric') |
{
"type": "object",
"fields": {
"count": "integer — number of products returned",
"products": "array of product objects"
},
"sample": {
"data": {
"count": 10,
"products": [
{
"name": "Textile Hand Block Dabu Printed Cotton Fabric (44 Inch)",
"unit": "Meter",
"price": "115",
"rating": "4.6",
"company": "Veer Handircrafts",
"company_id": "63235302",
"exports_to": null,
"product_id": "26019737973"
}
]
},
"status": "success"
}
}About the IndiaMART API
Product Search and Discovery
The search_products endpoint accepts a single query string — such as 'steel pipe', 'cotton fabric', or 'textile' — and returns up to 10 matching product listings. Each result includes a numeric product ID, pricing, seller information, and ratings. There is no pagination parameter; each call returns one page of results for the given keyword. The numeric product_id values in the response are the inputs for the detail endpoint.
Product Details
get_product_details takes a product_id (a numeric string from search results) and returns the full product record: title, price (formatted as a string with unit, e.g. '115 / Meter'), an array of images URLs, the company name, and a specifications object with key-value pairs covering material, grade, dimensions, and other product-specific attributes as listed on the product page.
Seller Profiles
get_seller_profile accepts a company_slug — the slug as it appears in the IndiaMART URL path (e.g. 'veer-handircrafts') — or a numeric company ID that resolves to the slug. The response includes name, about, rating (out of 5), location (city, state, country), trustseal and gst_verified and iec_verified boolean flags, exporting_since, and a business_info object with additional key-value business details. The iec_verified flag specifically indicates Import Export Code verification, which is relevant for cross-border trade evaluation.
The IndiaMART API is a managed, monitored endpoint for m.indiamart.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when m.indiamart.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official m.indiamart.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a B2B supplier discovery tool that filters IndiaMART sellers by GST and IEC verification status.
- Track price fluctuations on specific product categories using repeated
search_productscalls and comparing returned pricing fields. - Enrich a vendor database with seller ratings, location, and export history from
get_seller_profile. - Build a product catalog aggregator that pulls specifications and images via
get_product_detailsfor sourcing comparisons. - Screen export-ready suppliers by checking the
exporting_sincefield andiec_verifiedboolean before outreach. - Feed product listings into a procurement workflow by searching by material keyword and extracting pricing and company data.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does IndiaMART have an official developer API?+
What does `get_seller_profile` return and how do I find the company slug?+
business_info key-value object. The company slug is the path segment in the seller's IndiaMART URL (e.g. 'veer-handircrafts' from m.indiamart.com/veer-handircrafts). You can also pass a numeric company ID, which resolves to the correct slug.Does `search_products` support pagination or returning more than 10 results?+
search_products call returns a single page of up to 10 results for the given keyword. There is no page or offset parameter. The API covers one result page per query. You can fork the API on Parse and revise it to add a pagination parameter if your use case requires deeper result sets.Does the API return buyer reviews or product Q&A for listings?+
get_product_details endpoint returns title, price, images, company name, and specifications, but does not include buyer reviews, ratings per product, or Q&A threads. You can fork the API on Parse and revise it to add an endpoint that surfaces per-product review data.Is seller contact information (phone, email) included in the profile response?+
get_seller_profile returns location, verification flags, ratings, and business metadata, but does not expose phone numbers or email addresses, which IndiaMART gates behind login or paid lead flows. You can fork the API on Parse and revise it to surface any contact fields that are accessible without authentication.