IndiaMart APIdir.indiamart.com ↗
Search IndiaMart B2B listings by category and city, fetch product specs and pricing, and retrieve supplier verification data including GST and IEC status.
What is the IndiaMart API?
This API covers 4 endpoints against the IndiaMart export directory, letting you search product listings by category and city via search_listings, fetch structured product detail pages with specifications and pricing via get_product_details, pull supplier factsheets including GST registration and IEC verification via get_supplier_details, and locate specific companies by name with search_suppliers_by_name.
curl -X GET 'https://api.parse.bot/scraper/7ada03a6-ee11-42f9-8c09-14c45da9d229/search_listings?city=ahmedabad&pages=1&category=ss-pipes' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for listings by category on the IndiaMart export directory. Returns product and supplier summary information for the specified product category, optionally scoped to a city. Each page returns up to ~10 listings from verified exporters. Deduplicates across pages by product URL.
| Param | Type | Description |
|---|---|---|
| cityrequired | string | City name slug used to scope the search results (e.g. ahmedabad, coimbatore, mumbai, delhi). |
| pages | integer | Number of pages to fetch. |
| categoryrequired | string | Category slug used as the search term (e.g. ss-pipes, epoxy-flooring-services, steel-pipes). Hyphens are converted to spaces for the search query. |
{
"type": "object",
"fields": {
"items": "array of listing objects with product_name, product_url, price_raw, price_inr, unit, supplier_name, supplier_url, location, supplier_rating, supplier_type, nature_of_business, years_in_business, gst_verified, contact_details"
},
"sample": {
"data": {
"items": [
{
"unit": "Piece",
"location": "USA, Nepal, Sri Lanka, Saudi Arabia, Bangladesh",
"price_inr": 400,
"price_raw": "₹400/Piece",
"product_url": "https://export.indiamart.com/products/?id=2859228478673",
"gst_verified": true,
"product_name": "SS 304 Seamless Pipes India",
"supplier_url": "https://export.indiamart.com/company/180258510",
"supplier_name": "Jayant Rajendra Metal",
"supplier_type": "Verified Exporter",
"contact_details": "Gated (Login Required)",
"supplier_rating": "4.9",
"years_in_business": "2",
"nature_of_business": [
"Retailer"
]
}
]
},
"status": "success"
}
}About the IndiaMart API
Search and Browse Listings
search_listings accepts a required category slug (e.g. ss-pipes, epoxy-flooring-services) and a required city slug (e.g. ahmedabad, mumbai) to scope results to verified exporters in that location. The optional pages parameter controls how many result pages are fetched. Each listing object in the returned items array includes product_name, product_url, price_raw, price_inr, unit, supplier_name, supplier_url, and location. Results are deduplicated across pages, so you can safely paginate without worrying about repeat entries.
Product Detail Extraction
get_product_details takes a full IndiaMart product URL and returns up to nine structured fields: product_name, price, currency, availability, supplier_name, product_images (array of image URLs), specifications (a key-value object of spec table entries), and product_description. The endpoint handles both export.indiamart.com and standard indiamart.com product URLs. Fields may be null when the source page omits them.
Supplier Verification Factsheets
get_supplier_details accepts an IndiaMart company page URL and returns compliance and identity fields: iec (Import Export Code status), gst_number, gst_registration_date, nature_of_business, ships_from (registered address), rating, and supplier_type. This is useful for quickly assessing a supplier's verified status before initiating contact. Works specifically with export.indiamart.com company URLs.
Name-Based Supplier Search
search_suppliers_by_name lets you query by free-text company or brand name. Every word in the name input must appear in the matched supplier's name. The response includes an items array of supplier objects — each with supplier_name, supplier_id, supplier_url, city, and state — plus a query echo and a suppliers_scanned count showing how many distinct suppliers were examined. The supplier_url values returned here are directly usable as inputs to get_supplier_details.
The IndiaMart API is a managed, monitored endpoint for dir.indiamart.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dir.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 dir.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 supplier discovery tool that searches IndiaMart by product category and city, using
supplier_nameandsupplier_urlfromsearch_listings. - Automate procurement research by pulling
specificationsandprice_inrfor a set of product URLs withget_product_details. - Verify exporter compliance by checking
iec,gst_number, andgst_registration_datefromget_supplier_detailsbefore onboarding a vendor. - Identify all IndiaMart suppliers matching a brand or company name using
search_suppliers_by_nameand enrich each result withget_supplier_details. - Track market pricing trends for industrial categories by collecting
price_rawandunitacross multiple cities and categories withsearch_listings. - Aggregate supplier location data by extracting
ships_fromandcityfields across a category for regional sourcing analysis.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does IndiaMart offer an official developer API?+
What does `get_supplier_details` return, and how is it different from what `search_listings` gives you?+
search_listings returns a summary row per supplier — name, URL, price, and location — suitable for browsing. get_supplier_details goes deeper, returning compliance fields: iec (Import Export Code verification), gst_number, gst_registration_date, nature_of_business, and ships_from. You typically use the supplier_url from search_listings as the input to get_supplier_details.Can `search_listings` return results without specifying a city?+
city and category are required parameters for search_listings. The city slug scopes results to verified exporters in that location. Coverage depends on IndiaMart's listing density for that city-category combination, so some pairs may return fewer than 10 items per page.Does the API return supplier contact details like phone numbers or email addresses?+
gst_number, iec, nature_of_business, ships_from) and product data, but does not expose phone numbers or email addresses since IndiaMart gates contact information behind login. You can fork this API on Parse and revise it to add an endpoint targeting contact data if IndiaMart surfaces it in a page context you can access.How does pagination work in `search_listings`, and are duplicate listings a concern?+
pages parameter controls how many result pages are fetched per call. The endpoint deduplicates items across pages by product URL, so increasing pages adds more unique listings rather than repeating the same ones. Actual deduplication scope is per-call; running two separate calls with overlapping page ranges may still return some of the same records.