IndiaMART APIindiamart.com ↗
Access IndiaMART product listings, MOQ, pricing, and seller details via 4 endpoints. Search by keyword, category, or find cheapest listings programmatically.
What is the IndiaMART API?
The IndiaMART API gives programmatic access to India's B2B export marketplace across 4 endpoints, returning product listings with fields like price, currency, moq, moq_unit, formatted_price, and seller details. The search_products endpoint accepts a keyword query and optional location filter, returning paginated results with a total_results count. get_cheapest_listings aggregates up to 3 pages of results and sorts price-bearing items ascending, surfacing the 20 lowest-priced offers for any product query.
curl -X GET 'https://api.parse.bot/scraper/7085cf57-6b58-41ad-9148-1eef1007fbcf/search_products?page=1&query=leather+wallet&location=Mumbai' \ -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 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.
from parse_apis.indiamart_api import IndiaMART, Product, ProductReference
client = IndiaMART()
# Search for products with a location filter
for product in client.products.search(query="leather wallet", location="Kanpur"):
print(product.name, product.price, product.currency)
print(product.seller.name, product.seller.city, product.seller.is_verified_exporter)
break
# Browse products by category
for item in client.products.by_category(category_name="Cotton Fabric"):
print(item.name, item.formatted_price, item.moq, item.moq_unit)
print(item.category_name, item.product_url)
break
# Find cheapest listings for price benchmarking
for listing in client.products.cheapest(query="cotton fabric"):
print(listing.name, listing.price, listing.seller.city, listing.seller.rating)
break
# Get a product reference URL from a constructible Product
product = client.product(id="2853333107462")
ref = product.get_reference()
print(ref.url, ref.note)
Full-text search across IndiaMART's export product catalog. query matches product titles and descriptions. location narrows results to sellers in a specific city or region. Paginates via page number. Each product includes pricing (MOQ-based), seller details, and key specifications. Returns an empty products array when no matches exist.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search keyword (e.g. 'leather wallet', 'cotton fabric'). |
| location | string | City or region to filter results by (e.g. 'Kanpur', 'Mumbai'). Appended to search query. |
{
"type": "object",
"fields": {
"products": "array of Product objects with id, name, price, currency, formatted_price, moq, moq_unit, description_html, image, product_url, specifications, seller, and category_name",
"next_page": "boolean indicating whether more pages are available",
"total_results": "integer total number of matching products"
},
"sample": {
"data": {
"products": [
{
"id": "2853333107462",
"moq": "100",
"name": "Leather Wallet for Corporate Gifting",
"image": "http://5.imimg.com/data5/SELLER/Default/2024/1/381691127/RZ/ZS/BJ/119001399/16-125x125.jpg",
"price": "30",
"seller": {
"city": "Varanasi",
"name": "Liviya International",
"state": "Uttar Pradesh",
"rating": 4.3,
"address": "Post Bhullanpur, Village Lakhanpur",
"profile_url": "https://www.liviyainternational.in/",
"rating_count": 347,
"is_verified_exporter": true
},
"currency": "INR",
"moq_unit": "Piece",
"product_url": "https://www.indiamart.com/proddetail/leather-wallet-for-corporate-gifting-2853333107462.html",
"category_name": "Leather Wallet",
"specifications": [
"Material==Genuine Leather",
"Wallet Type==Bifold"
],
"formatted_price": "₹ 30/Piece",
"description_html": "Introducing our Promotional Customizable Leather Wallet..."
}
],
"next_page": true,
"total_results": 568
},
"status": "success"
}
}About the IndiaMART API
Endpoints and Response Shape
The search_products endpoint is the core entry point. It accepts a query string (e.g. 'cotton fabric') and an optional location parameter to narrow results to a city or region like 'Kanpur' or 'Mumbai'. Responses include an array of product objects carrying id, name, price, currency, formatted_price, moq, moq_unit, description_html, image, and product_url, along with a next_page boolean and total_results integer for pagination control.
Category and Price-Sorted Browsing
get_category_listings works similarly but takes a category_name parameter (e.g. 'Fresh Vegetables') and echoes it back in the response as the category field alongside the same product array shape. For price research, get_cheapest_listings takes a single query string, internally fetches multiple pages of results, filters to only items that carry a listed price, and returns up to 20 results sorted ascending by price. This is useful for establishing floor prices on commodities or sourcing inputs.
Product Detail Lookup
get_product_detail accepts a product_id — the display ID returned by search_products — and returns the canonical IndiaMART export page URL for that listing alongside a note field guiding you toward search_products for structured data. This endpoint is best used to construct direct links for human review rather than for data extraction, since structured fields live on the search endpoints.
Pagination and Coverage
All listing endpoints expose a next_page boolean to signal additional pages. The page parameter on search_products and get_category_listings controls which page is returned. get_cheapest_listings does not accept a page input — it aggregates internally up to 3 pages before filtering and sorting, so results are bounded to what those pages surface.
The IndiaMART API is a managed, monitored endpoint for indiamart.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when 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 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?+
- Monitor floor prices for B2B commodities by running get_cheapest_listings on recurring queries and tracking the price field over time.
- Build a supplier comparison tool by searching a product with search_products and displaying moq, moq_unit, and formatted_price side by side.
- Filter Indian textile suppliers by region using the location parameter in search_products to scope results to cities like Surat or Ludhiana.
- Aggregate category-level product inventory snapshots using get_category_listings with total_results to gauge listing volume per category.
- Generate deep-link directories to IndiaMART listings by mapping product_id values through get_product_detail to retrieve canonical product_url strings.
- Cross-reference MOQ requirements across sellers by extracting the moq and moq_unit fields from search results to identify suppliers meeting order thresholds.
- Feed a price-alert system by polling get_cheapest_listings on a schedule and triggering notifications when the lowest price field changes.
| 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.