IndiaMART Supplier & Product Scraper
Pricing
from $2.00 / 1,000 product scrapeds
IndiaMART Supplier & Product Scraper
AI-ready IndiaMART B2B leads - one rich row per product: company, price (INR + USD), E.164 phone, GST factsheet, numeric turnover, export countries, images. Built for lead-gen, sourcing, KYC & AI/agent pipelines. Fast HTTP, residential proxy, charged per product.
Pricing
from $2.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
William
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
AI-ready B2B leads from India's largest marketplace. Structured, agent-friendly rows you can drop straight into CRM, sourcing, KYC and AI/agent pipelines — with normalised INR + USD prices, E.164 phones, numeric GST turnover, export-destination signals, images and full business factsheets. Ideal for procurement, exporter discovery, market mapping and lead generation.
Surfaces B2B supplier and product catalogue data from IndiaMART (India's largest B2B marketplace) for supplier discovery, catalogue building and due diligence. Returns one dataset row per product detail page, enriched with company name, product title, price, images, category breadcrumb, location, IndiaMART member-since year, a GST/business factsheet, call response rate and supplier contact details.
You are charged per successfully parsed product (pay-per-event). Failed or blocked parses are pushed as free status rows.
Why this actor
- Schema richness. Beyond the basics, every row carries a structured
businessFactsheet(year established, nature of business, GST turnover range, legal status, additional NOB),performance.callResponseRate, a category breadcrumb, and a full image list, drawn from the page's embedded data and JSON-LD. - Reliability without a browser. IndiaMART is fully server-rendered with no anti-bot wall, so the actor uses a fast HTTP CheerioCrawler (no Playwright). That means lower memory and fewer moving parts. Note: IndiaMART blocks Apify datacenter IPs with HTTP 403, so the actor runs on the Apify residential proxy by default (the main running cost).
- Clean output shape. Catalogue fields are top-level; contact is nested under
supplier.contactso it is easy to include or exclude downstream. - Built for non-India buyers too. Indian-market conventions are normalised so international sourcing/procurement teams can use the data directly: prices carry a numeric
priceAmount(INR) and an approximatepriceUsd(thefxRate+fxRateAsOfused are exposed so you can recompute with a live rate); GST turnover ("1.5 - 5 Cr") is parsed into absolutegstTurnoverInr/gstTurnoverUsdranges; phone numbers are normalised to E.164 (+918043862189, ready for Twilio/WhatsApp);location.countryCodeisIN; andsupplier.exportCountriesflags registered export destinations.supplier.businessFactsheet.gstNumberandiecCode(exporter code) are included where the page exposes them.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | string[] | (required) | IndiaMART category URLs (https://dir.indiamart.com/impcat/<slug>.html) and/or product detail URLs (https://www.indiamart.com/proddetail/<slug>-<id>.html). Both may be mixed. |
maxProducts | integer | 200 | Maximum product detail pages to parse. This is the charged unit and is enforced at the crawler level (1–5000). |
maxCategoryPages | integer | 10 | Maximum category pages to paginate per category URL (1–100). |
proxyConfiguration | proxy | { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } | Apify Proxy. Residential required (IndiaMART returns 403 to datacenter IPs). |
{"startUrls": ["https://dir.indiamart.com/impcat/cctv-camera.html"],"maxProducts": 200,"maxCategoryPages": 10,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Output (one row per product)
{"type": "product","query": "https://dir.indiamart.com/impcat/cctv-camera.html","product": {"productId": "26236720097","productCode": "191475680","title": "90d Canon Camera","slug": "90d-canon-camera-26236720097","productUrl": "https://www.indiamart.com/proddetail/90d-canon-camera-26236720097.html","price": "₹125500","priceCurrency": "INR","priceAmount": 125500,"priceUsd": 1493,"fxRate": 0.0119,"fxRateAsOf": "2026-08","minOrderQuantity": null,"minOrderUnit": null,"images": ["https://5.imimg.com/data5/SELLER/Default/2022/7/SH/EU/HQ/4877750/01-1000x1000.jpg"],"category": { "primary": "Camera", "breadcrumb": ["IndiaMART", "Camera & Photography Equipments", "Camera"] }},"supplier": {"companyName": "Ajay Enterprises","companyUrl": "https://www.indiamart.com/ajayenterprises-newdelhi-ind/","memberSince": "Mar 2012","location": { "city": "New Delhi", "state": "Delhi", "country": "India", "countryCode": "IN", "address": "New Delhi, Delhi" },"contact": { "phone": "+918043862189", "phoneRaw": "+91-8043862189", "phoneVerified": true },"businessFactsheet": {"yearEstablished": 2005,"natureOfBusiness": "Trader - Retailer","legalStatus": "Proprietorship","gstNumber": "07**********1Z9","gstTurnover": "1.5 - 5 Cr","gstTurnoverInr": { "min": 15000000, "max": 50000000 },"gstTurnoverUsd": { "min": 178500, "max": 595000 },"iecCode": null,"additionalNob": ["Retail Business", "Warehouse / Depot"]},"exportCountries": [],"performance": { "callResponseRate": 0.84 }},"scrapedAt": "2026-08-02T12:00:00.000Z"}
Any field absent on the source page is null. Rows that fail to parse (or are blocked) are pushed as free { "type": "status", "status": "failed", ... } rows.
How it works
- The actor seeds the request queue with
startUrls(mixing category and product URLs is fine). - On a category page it discovers product-detail links (
a[href*="/proddetail/"]) and enqueues them. It also looks for a static next-page link and follows it up tomaxCategoryPages(see limitations below). - On a product detail page it extracts embedded JSON fields, the
g39-factsheetDT/DD rows, JSON-LD (BreadcrumbList + ImageGallery), the title, the price and the company URL, then pushes one charged row. - Politeness:
maxConcurrency3,maxRequestsPerMinute60 (≈1 request/second), 3 retries. IndiaMART returns HTTP 403 to Apify datacenter IPs, so residential proxy is mandatory.
Pricing
Charged per product (pay-per-event). Set your USD price per result and optional total spend cap in the actor Console before running. A target of ~$0.002/result is competitive with the incumbent.
Responsible use
Contact data is public business listing information intended for supplier discovery and due diligence; comply with applicable laws (including India's DPDP Act 2023) and IndiaMART's Terms. Do not use the data for unsolicited spam. You are responsible for how you use the output.
Known limitations
- Category pagination is JavaScript-driven. Live IndiaMART category pages load additional products via a React "Show More Results" control (an internal XHR) rather than static
?page=Nlinks (verified:?page=Nreturns an identical product set on both desktop and mobile). This HTTP-only actor therefore parses the first page of products for each category URL (a desktopimpcatpage yields ~110–120 products, verified at 118 for a typical category). To reachmaxProducts, supply multiple category URLs (e.g. related subcategories) and/or direct product-detail URLs. Deeper pagination, and the full-GST-factsheet enrichment that lives on company pages, are reserved for a future hop. priceCurrencyisINR(IndiaMART is an India-only marketplace).- Selectors target the current server-rendered markup (
g39-factsheet-row,.priceff, embedded JSON fieldsMOBILE_PNS/PC_ITEM_CODE/MOBILE_VERIFIED, JSON-LD blocks). IndiaMART markup changes will require selector updates; the parser is unit-tested against a real fixture to catch regressions.