IndiaMART Scraper: B2B Products, Prices, Suppliers avatar

IndiaMART Scraper: B2B Products, Prices, Suppliers

Pricing

from $0.95 / 1,000 products

Go to Apify Store
IndiaMART Scraper: B2B Products, Prices, Suppliers

IndiaMART Scraper: B2B Products, Prices, Suppliers

Scrape IndiaMART, no login: keywords, search, category, product or supplier links, read city by city through IndiaMART's own filters. Price and unit, MOQ, specs, GSTIN, TrustSEAL, rating, response rate, call number, lead score; add company profiles, reviews. JSON, CSV, Excel, API; pay per product.

Pricing

from $0.95 / 1,000 products

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

IndiaMART Scraper: B2B Products, Prices, Suppliers

IndiaMART scraper for indiamart.com: B2B products and Indian suppliers from keywords, IndiaMART search links, category pages, product links or supplier catalogues, with price and unit, minimum order (MOQ), specifications, the supplier's GST number (GSTIN) and GST verification, city, district and state, years on IndiaMART, rating, response rate, business type, TrustSEAL, IndiaMART's call number for the supplier and a lead score. No login and no IndiaMART account: nothing from you but the input. Deep search goes past IndiaMART's first page through its own city, business type and price filters. Add the supplier's company profile, the product page details, buyer reviews, or a monitor that delivers only new rows.

Quick start

  1. Open the Actor's Input tab. The prefilled input reads the first 20 products of an "ms pipe" search.
  2. Replace the words in Keywords, or paste IndiaMART links (a search page, a category page, a category page of one city, a product page or a supplier catalogue), or write IndiaMART categories by name (ms-pipe, led-bulb).
  3. Narrow it if you like: Cities, States, Business types, a price range, Minimum supplier rating, Minimum response rate, Minimum years on IndiaMART, GST verified suppliers only, Verified exporters only, TrustSEAL suppliers only, Only rows with a call number, Minimum lead score, Keyword in the product title.
  4. Choose the Search depth (Deep by default, or First page only) and set Max products per keyword (100 when left out, up to 5,000).
  5. Turn on the add-ons you need: Supplier profile, Product details, Buyer reviews, and Personal data if you need the names of people. Click Start.
  6. Download the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API. The Products, Supplier profiles, Reviews and Coverage of each input views show the columns of each kind of row; to export one kind only, filter on type.

What you get

Every product row (type: "product") is one IndiaMART product offer with its supplier, charged as one Product event. A supplier link gives one supplier row (type: "supplier") with the company profile, charged as one Supplier profile. Review rows (type: "review") come only with Buyer reviews. Each keyword, search link and category input also gets one free coverage row (IndiaMART's result count, answers read, distinct products and suppliers seen, products delivered, repeats, filtered rows, cities where IndiaMART lists no supplier of the keyword, every filter answer read, and why the walk stopped), misses and input problems get free status rows, and every run ends with a free summary row, also stored as RUN-SUMMARY in the run's key-value store. The summary's complete is true only when every input was read to its end and every link, file and add-on you asked for was read; a run the platform restarted counts the whole run's rows and is never reported complete. When IndiaMART itself fails (it refuses or does not answer), the run still succeeds, nothing is charged for what was not read, and its status message says IndiaMART was failing and to try again later. An input given twice (a keyword and its pasted search link, a category twice) is read once.

Main fields and measured fill rates

Measured by running the Actor's own parsers and row builder over IndiaMART answers saved on 2026-10-15: 17,453 search rows and 12,468 category page rows, as IndiaMART served them (repeats included). Field names are exactly what the dataset holds.

FieldWhat it holdsSearch rowsCategory rows
productId, productNameIndiaMART's product id and the product name100 percent100 percent
productUrlThe product page link100 percent92.8 percent
price, priceTextPrice in rupees and IndiaMART's own price text ("₹ 60/Kg")95.1 percent91.3 percent
priceUnitThe unit the price is for (Kg, Piece, Meter)95.0 percent72.6 percent
currencyINR98.9 percent91.3 percent
minOrderQuantity, minOrderUnitMinimum order (MOQ) and its unit53.0 and 52.7 percentnot on category pages
specificationsName and value pairs ("Thickness": "5 mm")98.2 percent91.0 percent
descriptionThe product's short description99.9 percent11.5 percent
imageUrl, imagesThe product photo100 percent98.7 percent
videoUrl, brochureUrlVideo and PDF brochure links20.4 and 41.0 percentnot shown and 10.6 percent
categoryName, categoryId, categoryNamesIndiaMART's category of the product100 percent100 percent
supplierId, supplierNameIndiaMART's supplier id and the company name100 percent100 percent
supplierCatalogUrl, supplierAliasThe supplier's IndiaMART catalogue and its name in the link100 and 99.6 percent99.8 and 44.8 percent
supplierWebsiteThe supplier's own domain where IndiaMART hosts its catalogue there61.4 percent54.8 percent
city, countryThe supplier's city and country100 percent100 and 99.9 percent
district, stateDistrict and state100 percentnot on category pages
localityArea within the city9.7 percent34.8 percent
gstNumberThe supplier's full GSTIN100 percentnot on category pages (they show only whether the supplier is GST registered)
gstVerified, gstRegisteredIndiaMART's GST verified mark and whether a GST registration is shown100 percent (true on 100)100 percent (true on 97.0 and 97.6)
memberSince, yearsOnIndiaMartMembership date and years on IndiaMART100 percentyears only, 100 percent
supplierRating, ratingCountThe supplier's stars and number of ratings92.0 percent91.9 and 100 percent
responseRateThe supplier's response rate in percent96.0 percent87.1 percent
phone, phoneTypeIndiaMART's call routing number (PNS) for the supplier: a virtual number that connects to the supplier, never the supplier's own mobile; phoneType says so on every row100 percent100 percent (12,466 of 12,468)
emailVerified, mobileVerifiedIndiaMART's verified e-mail and verified mobile marks (the address and the mobile are not shown)99.8 percent100 percent
businessTypesManufacturer, Wholesaler, Retailer, Service Provider, and Exporter for IndiaMART's verified exporters99.5 percent11.7 percent (Exporter only)
verifiedExporter, iecRegisteredIndiaMART's verified exporter mark and whether the supplier holds an import export code100 percent (true on 19.5) and 13.6 percent100 percent (true on 11.7) and not shown
trustSealIndiaMART's TrustSEAL100 percent (true on 88.7)100 percent (true on 79.4)
membershipCode, membershipNameIndiaMART's own customer type of the listing, as a number and as IndiaMART's name for it (LEADER, STAR, TSCATALOG, CATALOG)100 and 98.9 percent100 percent
supplierBadgeIndiaMART's "Leading Supplier" or "Star Supplier" banner22.0 percent36.6 percent
premiumListingIndiaMART's own listing code (KWPL, KWILP)3.9 percentnot on category pages
leadScore0 to 100, see below100 percent (median 84)100 percent (median 80)
keywordInTitleWhether the product name holds every word of the keywordevery row of a keyword or search linkrows of a keyword's category pages (empty for a category input)
matchedWords, matchesAllWordsIndiaMART's own match of the search words on the row: how many words it matched, and whether it matched all of them (rows matching none are never delivered)every search rownot on category rows (null there, and on product and supplier rows)
searchKeyword, searchCity, searchBusinessType, searchPriceBand, foundBy, position, isMoreResult, input, sourceWhich input and which IndiaMART filter answer found the row, and its place in that answerevery rowevery row

The category row figures are of IndiaMART's all India category pages. Deep city by city category walks fill less: on 1,152 category rows of three runs on the platform (2026-10-21) productUrl 66.9, price 75.1, specifications 67.8, supplierRating 71.3 and responseRate 59.7 percent.

Also on every product row: supplierProfile, supplierProfileStatus, supplierReviewSummary, reviewsDelivered, productDetails, productDetailsStatus (filled by the add-ons, else not_requested) and scrapedAt. IndiaMART shows up to three more products of each supplier under its first one; with Include more products of each supplier on (the default) they are rows of their own, and they were 71.6 percent of the search rows and 66.1 percent of the category rows measured.

Lead score

leadScore adds up what IndiaMART shows on the row, from 0 to 100:

  • GST verified: 20 points.
  • Years on IndiaMART: 2 points a year, up to 20.
  • Supplier rating: 4 points per star, up to 20, only with 5 ratings or more.
  • Response rate: 0.15 points per percent, up to 15.
  • Verified exporter: 5 points.
  • Price shown, specifications shown, minimum order shown, photo shown: 5 points each.

The total is rounded to a whole number. Use Minimum lead score to keep only rows at or above a score.

Example row (real, trimmed)

A product of the "ms pipe" search, built by the Actor's own row builder from IndiaMART's answer saved on 2026-10-15 (description shortened; the add-on, search and bookkeeping fields left out):

{
"type": "product",
"productId": "2857588221288",
"productName": "6 inches 8 Inch Ms Pipe",
"productUrl": "https://www.indiamart.com/proddetail/8-inch-ms-pipe-2857588221288.html",
"price": 60,
"priceText": "₹ 60/Kg",
"currency": "INR",
"priceUnit": "Kg",
"minOrderQuantity": 100,
"minOrderUnit": "Kg",
"specifications": [
{ "name": "Unit Pipe Length", "value": "6 m" },
{ "name": "Surface Treatment", "value": "Galvanized" },
{ "name": "Thickness", "value": "5 mm" },
{ "name": "Size", "value": "6 inches" }
],
"description": "Mild Steel Round Pipes are cylindrical hollow sections made from low carbon steel...",
"imageUrl": "http://5.imimg.com/data5/ANDROID/Default/2025/6/515806581/KP/TP/WE/180670593/product-jpeg-500x500.jpg",
"categoryName": "MS Pipe",
"categoryId": "33646",
"supplierId": "180670593",
"supplierName": "Shri Mahadev Enterprises",
"supplierCatalogUrl": "https://www.indiamart.com/shrimahadev-enterprises/",
"city": "Raigad",
"district": "Raigad",
"state": "Maharashtra",
"country": "India",
"gstNumber": "27AYMPD1620M1ZE",
"gstVerified": true,
"gstRegistered": true,
"memberSince": "2022-12-04",
"yearsOnIndiaMart": 3,
"supplierRating": 4,
"ratingCount": 13,
"responseRate": 64,
"phone": "+91-8047840826",
"phoneType": "IndiaMART call routing number (PNS)",
"emailVerified": true,
"mobileVerified": true,
"businessTypes": ["Service Provider"],
"verifiedExporter": false,
"trustSeal": true,
"membershipCode": 179,
"membershipName": "STAR",
"supplierBadge": "Star Supplier",
"keywordInTitle": true,
"leadScore": 72,
"foundBy": "search",
"position": 9,
"isMoreResult": false
}

Search depth and speed

IndiaMART shows a visitor without a login the first page of any search only (about 35 to 40 products). Deep mode (the default) reads that first answer and then one answer per business type, per price band of the answer, per city (IndiaMART's own city list for the keyword first, then up to 60 more Indian cities) and per city and business type, each of which IndiaMART answers with its own first page. A search whose words already name a city is not split by city. A walk stops at Max products per keyword, at Max answers per keyword (120 when left out), or after 12 answers in a row without a new product.

Measured on the platform on 2026-10-15 with 60 filter answers per keyword:

KeywordDistinct products from search answersWith category pages too
ms pipe9762,079
led bulb7921,962
cotton fabric9491,925
solar panel8501,899
hydraulic press machine7761,814

IndiaMART answers about one search every 6 seconds per address, so the Actor asks for one search answer about every 6.5 seconds on one proxy session and waits out a refusal on that session rather than switching addresses to go faster. The first answer of a keyword comes back in seconds; a deep keyword of 1,000 products takes about 5 to 8 minutes (282 seconds for 1,000 products of "ms pipe" on the platform). Category pages are not under that limit and are read faster. First page only reads IndiaMART's first answer per keyword (about 35 to 40 products) and no filter answers.

Also read category pages goes on, after the search, through IndiaMART's category page of the keyword, all India and then city by city, which added about as many products again in the table above. Categories per keyword (1 when left out, up to 20) reads more of the categories IndiaMART lists for the words, its main category first; rows from those related categories say so in foundBy (related_category_page) and often do not carry the keyword (see keywordInTitle). Category rows carry the GST registration as a yes or no, not the GSTIN, and no minimum order.

Supplier profile (add-on)

Turn on Supplier profile and the Actor reads each supplier's company page and its catalogue home page (for its HSN codes) once per run and nests it as supplierProfile in that supplier's first delivered row (one Supplier profile event per supplier). A pasted supplier link gives the same profile as a supplier row of its own. Measured on 25 saved company pages (18 on www.indiamart.com, 7 on suppliers' own IndiaMART hosted domains):

FieldFilled
natureOfBusiness, additionalBusiness, legalStatus, employees, gstNumber, gstRegistrationYear, pincode, rating, ratingCount, responseRate, phone, companyDescription, productCategories25 of 25
banker, logoUrl24 of 25
registeredAddress (city, district and state on www pages; the full street address with PIN on suppliers' own domains)23 of 25
contactTitle19 of 25
yearEstablished, yearsOnIndiaMart, paymentModes, shipmentModes, membershipCode, membershipName, businessType18 of 25 (www pages)
udyamNumber (masked as IndiaMART shows it)13 of 25
iecCode9 of 25
gstRegistrationDate, annualTurnover, exportPercentage, latitude, longitude7 of 25 (suppliers' own domains; www pages show the GST year and no turnover)
exportCountries4 of 25
tanNumber, cinNumber3 and 1 of 25
hsnCodes (code and description, IndiaMART's "Deals in HSN Code" table of the supplier's catalogue home page; hsnCodesStatus says included, not_found, failed, left_out_allowance, not_read_run_stopped, page_shows_another_supplier, or not_on_own_domain for suppliers on their own domains, whose IndiaMART template shows no HSN table; the Supplier profile event is charged as usual when only the HSN read did not succeed, and the run is then not reported complete)2 of 2 saved www home pages (2 and 5 codes); 5 of 6 www suppliers read live on 2026-10-21; an empty list when the supplier lists none
ceoName, contactPerson, promoter, gstPartnerNamenames of people: filled only with Personal data on

Also where IndiaMART shows them: premises (size, location type, building, space around), qualityMeasures, customizedPackaging, industry, primaryCompetitiveAdvantage, estimatedDeliveryTime, trustSeal, gstVerified, verifiedExporter. A company page that could not be read is not charged (supplierProfileStatus says why); the supplier's later rows in the same run say on_earlier_row.

Product details (add-on)

Turn on Product details and the Actor reads each delivered product's own page and nests it as productDetails (one Product detail event per row that carries it): descriptionFull (14 of 15 saved product pages), images (every image, 15 of 15), specifications (15 of 15), categoryPath (15 of 15), brand (4 of 15), videoUrl (3 of 15), brochureUrl (5 of 15), minOrderQuantity and minOrderUnit (0 of 15: empty on every saved product page; search rows carry the minimum order instead), and a supplier block: yearEstablished, employees, legalStatus, banker, gstNumber, gstRegistrationYear, rating, ratingCount, satisfaction (IndiaMART's response, quality and delivery scores), responseRate, phone, memberSince and the verified marks 15 of 15, annualTurnover 14 of 15, iecCode 11 of 15, exportCountries 10 of 15, and contactFirstName with Personal data on. A pasted product link is read from its page and delivered with these details included in its Product charge. A page that could not be read is not charged (productDetailsStatus says why).

Buyer reviews (add-on)

Turn on Buyer reviews and the Actor reads each supplier's reviews page once per run. The supplier's first row gets supplierReviewSummary (its rating, number of ratings, the 1 to 5 star breakdown in percent and IndiaMART's response, quality and delivery scores), and its first reviews, up to 20 (IndiaMART's own first reviews page), become review rows (one Review event each): reviewId, supplierId, supplierName, supplierCatalogUrl, rating, date, productName, text, sellerReply, aspects, photos, reviewerName, reviewerLocation, reviewerCountry, position. Measured on 140 reviews of 7 saved review pages: rating and date 140, reviewerLocation 134, productName 132, reviewerCountry 80, aspects 49, text 7 (most IndiaMART reviews are stars without words), photos 2, sellerReply 0; the summary 7 of 7 pages.

Monitor: new rows only

Set Monitor name and schedule the run. The Actor remembers what it delivered under that name in a key-value store it creates itself. Products, supplier profiles and reviews delivered by an earlier run with the same name are skipped and free: a known product is skipped before anything more is read for it, so a scheduled run delivers and charges only new ones. Reset the monitor forgets the memory and starts again.

How much does it cost to scrape IndiaMART?

You pay per event, per 1,000 events, by your Apify plan:

EventWhat it isFREEBRONZESILVERGOLD
Product (primary)One IndiaMART product row with its supplier$1.33$1.22$1.10$0.95
Supplier profileOne supplier's company page (add-on, or a supplier link)$2.80$2.60$2.40$2.20
Product detailOne product's own page (add-on)$2.50$2.30$2.10$1.90
ReviewOne buyer review row (add-on)$0.80$0.70$0.60$0.50

Platinum and Diamond plans pay the Gold price. The Actor start is $0.01 per run, one flat fee on every plan with no discount; it is charged per GB of run memory, and this Actor runs at 256 MB, so a run pays it once.

The Store pricing card shows these same prices per 1,000 events: "$0.95 / 1,000" on the Product row means one product costs $0.00095, less than a tenth of a cent.

Worked examples (GOLD)

  • The prefilled run, 20 products: 20 x $0.00095 = $0.019, plus the $0.01 start = $0.029 (on the FREE plan: $0.0266 + $0.01 = $0.0366).
  • 1,000 products of one deep keyword: 1,000 x $0.00095 = $0.95, plus the $0.01 start = $0.96.
  • 100 products from 30 suppliers with Supplier profile: $0.095, plus 30 x $0.0022 = $0.066, plus the $0.01 start = $0.171.
  • One supplier link with 20 reviews: $0.0022 for the profile, plus 20 x $0.0005 = $0.01 for the reviews, plus the $0.01 start = $0.0222.

What is free

Searches IndiaMART did not find as typed (it shows results for a respelling, and a free row names it), searches whose answer matches none of the words on any product (search_not_recognised), rows on which IndiaMART matched none of the search words, product and supplier links IndiaMART does not have, with a city filter, answers in which IndiaMART shows other cities instead, products left out by your filters, products found twice in a run, products, supplier profiles and reviews a monitor delivered before, failed calls, company, product and reviews pages that could not be read, pages read for suppliers that do not pass an export country filter, product and supplier links that do not pass your filters, and every status, coverage and summary row. If you set a maximum charge for the run, add-on events are cut first and the run stops before it passes the limit. A run whose inputs keep delivering nothing stops itself with a free row once its allowance of unpaid work is spent; an add-on page that the add-ons' own allowance cannot pay is left out of its row (left_out_allowance, free) while the row is delivered.

Input

An input that names nothing to read runs the sample: the first 20 products of an "ms pipe" search.

What to read

  • keywords: search words, one search per entry (up to 200), each up to 100 characters.
  • startUrls: IndiaMART links (up to 1,000): a search page (https://dir.indiamart.com/search.mp?ss=ms+pipe, its city cq=, business type biz= and price range kept unless you set your own; a search link with any other IndiaMART filter is refused, since the run cannot check it), a category page (https://dir.indiamart.com/impcat/ms-pipe.html) or the same category in one city (https://dir.indiamart.com/mumbai/ms-pipe.html), a product page (https://www.indiamart.com/proddetail/...-12345678.html) or a supplier catalogue (https://www.indiamart.com/<supplier>/). A link to a .txt or .csv file, a Google Sheet or a Google Drive file that lists such links is read too (up to 2,000 links and 2 MB a file).
  • categories: IndiaMART category names as its category links write them (ms-pipe, led-bulb, cotton-fabric), up to 200, read all India and then city by city in deep mode.
  • industry: an industry group (industrial-machinery, building-construction, electronics-electrical, chemicals-dyes, medical-pharma, agriculture-food, automotive-parts, apparel-textiles, metals-alloys, packaging-supplies, office-supplies, safety-gear, home-supplies, gifts-crafts, services-it; all by default) whose words go in front of every keyword; with no keyword, the words alone are searched. requireKeywordInTitle still asks only your own keyword's words of the title. IndiaMART has no such groups of its own, so this narrows the search by words, not by an IndiaMART filter.

Filters

cities (up to 100; IndiaMART's own exact city filter, with its spellings matched as one city: Delhi and New Delhi, Gurgaon and Gurugram, Bombay and Mumbai), states (up to 40, as IndiaMART writes them; the search goes city by city through the state's cities), businessTypes (manufacturer, exporter for IndiaMART's verified exporters, wholesaler, retailer with IndiaMART's own filter; service_provider checked on the row), membershipNames (IndiaMART's customer type names: LEADER, STAR, TSCATALOG, CATALOG, PORTAL, FREE-VERIFIED, OLDCATALOG, FREECATALOG, FREELIST, TEMPBLOCK, Catalog Email Defaulter, Catalog PNS Defaulter, BL Paid VFCP, OthersPAID VFCP, BL Paid FCP, OthersPAID FCP, Qualified FCP, Travel FCP, Demoted FCP, BL Paid NoFCP, OthersPAID NoFCP, BL Paid PNS Defaulter, BL Paid Email Defaulter, OthersPAID PNS Defaulter, FCP PNS Defaulter, Disable Company), exportCountries (needs Supplier profile or Product details; only suppliers IndiaMART marks as verified exporters or import export code holders are read for it), minPrice and maxPrice (rupees, in the unit IndiaMART shows for the product; a product without a price does not pass), onlyWithPrice, minRating (0 to 5), minResponseRate (0 to 100), minYearsOnIndiaMart (0 to 40), gstVerifiedOnly, verifiedExporterOnly, trustSealOnly, withPhoneOnly, minLeadScore (0 to 100), requireKeywordInTitle and requireAllWords (only rows on which IndiaMART matched every word). Every filter is checked on every row before it is delivered, rows of product and supplier links included; rows that do not pass are free, and a walk stops after 6 answers in a row without a match. A supplier link is judged by the fields of its company page. A filter a kind of input cannot be judged by refuses the run with a free row, before anything is read: requireKeywordInTitle and requireAllWords beside product links, supplier links or category pages (they carry no search words), requireAllWords beside includeCategoryPages (category rows carry no word match), a search link whose business type (biz=) is not exporter beside includeCategoryPages, businessTypes other than exporter beside category pages or includeCategoryPages (category rows carry no business type), and price, onlyWithPrice, minLeadScore or the word filters beside supplier links (a supplier row has no price); in a file of links, the links of such a kind are skipped with one free row.

How much to read

searchMode (deep or first_page), includeCategoryPages, categoriesPerKeyword (1 to 20, 1 when left out), maxItemsPerKeyword (1 to 5,000, 100 when left out), maxPagesPerKeyword (IndiaMART answers per keyword or category, 1 to 300, 120 when left out), maxItems (the whole run, 1 to 100,000), includeMoreProducts (on when left out) and oneRowPerSupplier (only the first product of each supplier in the run: a supplier list).

Add-ons and personal data

includeSupplierProfile, includeProductDetails, includeReviews (a supplier IndiaMART shows no rating for has no reviews and its reviews page is not read), maxReviewsPerSupplier (1 to 20, 20 when left out) and includePersonalData. Personal data is off by default. On, rows also carry the names of private persons IndiaMART shows publicly: a company page's CEO, contact person, promoter and GST partner, and a product page's contact first name. Off, those fields are empty. Texts are delivered as IndiaMART serves them, switch on or off: a plain text exactly, a text IndiaMART serves as HTML as its page shows it (tags removed, line breaks kept, no character changed), descriptions cut at 5,000 characters. A review's author is the content's author and is always delivered. A supplier's business data (its company name, IndiaMART call number, address and GST number) is always delivered. You are responsible for using personal data lawfully (GDPR and India's DPDP Act included).

Monitor

monitorName and resetMonitor.

Run settings

maxRequestRetries (1 to 5, 3 when left out), requestTimeoutSecs (5 to 60, 20 when left out), maxConcurrency (how many products have their add-on pages read at the same time, 1 to 3, 3 when left out; search answers are always read one at a time) and proxyConfiguration (leave it as it is: Apify datacenter sessions for IndiaMART's search and category pages, Apify residential sessions in India for its company, product and reviews pages, a refused session replaced by itself; your own proxy links are used as given; a run with every proxy turned off is refused, because IndiaMART refuses the platform's own addresses on category and product pages).

Examples

Manufacturers in two cities, GST verified, with a price:

{ "keywords": ["led bulb"], "cities": ["Delhi", "Mumbai"], "businessTypes": ["manufacturer"], "gstVerifiedOnly": true, "onlyWithPrice": true, "maxItemsPerKeyword": 300 }

A supplier list with company profiles:

{ "keywords": ["solar panel"], "states": ["Gujarat"], "oneRowPerSupplier": true, "includeSupplierProfile": true, "maxItemsPerKeyword": 100 }

Supplier catalogues with their reviews:

{ "startUrls": [{ "url": "https://www.indiamart.com/shrimahadev-enterprises/" }], "includeReviews": true }

New suppliers of a category every week (schedule it):

{ "categories": ["ms-pipe"], "monitorName": "ms-pipe-weekly", "maxItemsPerKeyword": 1000 }

Use it from the API

The Actor id is automation_craft/indiamart-scraper (automation_craft~indiamart-scraper in REST paths). Each call runs the Actor and returns its dataset: product rows plus the free coverage and summary rows, so filter on type. Replace <YOUR_APIFY_TOKEN> with your Apify API token.

The input also accepts other names for the same settings: queries, searchQueries, searchTerms (lists) and searchQuery, query, keyword (one text) for keywords, read when keywords itself is left out; categoryUrls, productUrls and supplierUrls for startUrls, merged into it; maxResultsPerQuery and maxItemsPerQuery for maxItemsPerKeyword; maxResults for maxItems. A free note row says which names were read.

curl

The synchronous endpoint waits up to 300 seconds, so keep these runs small (First page only answers fastest) or start a normal run for deep ones.

curl -X POST "https://api.apify.com/v2/acts/automation_craft~indiamart-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keywords": ["ms pipe"], "searchMode": "first_page", "maxItemsPerKeyword": 40}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('automation_craft/indiamart-scraper').call({
keywords: ['cotton fabric'],
cities: ['Surat'],
maxItemsPerKeyword: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const products = items.filter((row) => row.type === 'product');
console.log(products.length, products[0]?.gstNumber);

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("automation_craft/indiamart-scraper").call(
run_input={"keywords": ["hydraulic press machine"], "businessTypes": ["manufacturer"], "minRating": 4, "maxItemsPerKeyword": 100}
)
rows = client.dataset(run["defaultDatasetId"]).list_items().items
products = [row for row in rows if row["type"] == "product"]
print(len(products))

For AI agents and automation

An AI agent connected to Apify's MCP server can call this Actor by its name, automation_craft/indiamart-scraper, with the same input JSON. The fields to set: keywords (or startUrls, categories), cities or states, businessTypes, maxItemsPerKeyword, searchMode (first_page for a quick answer), oneRowPerSupplier for a supplier list, and the add-on switches. The dataset's field descriptions and views tell the agent what each column holds, and the free coverage row tells it what was read and why each walk stopped.

FAQ

Does IndiaMART have an API for product and supplier data?

This Actor works as one: call it through the Apify API with keywords, IndiaMART links or category names and read the rows as JSON, CSV or Excel. It needs no IndiaMART account, login or key; the API examples above show the calls.

How to get phone numbers from IndiaMART?

Every product and supplier row carries phone, the number IndiaMART shows for calling the supplier: its call routing number (PNS), a virtual number that connects to the supplier, never the supplier's own mobile, and phoneType says so. It was on 100 percent of the search rows measured; IndiaMART shows a supplier's own mobile only after a sign in, which this Actor never does.

How can I download IndiaMART supplier data to Excel?

Put keywords, IndiaMART links or category names into the input, turn on One row per supplier for a supplier list, and start the run. Open the Products or Supplier profiles view of the dataset and export it as CSV or Excel: one row per product or supplier with price, minimum order, GST number, city, rating and call number.

How do I find a supplier's GST number on IndiaMART?

Keyword search rows carry the supplier's full GSTIN in gstNumber (100 percent of the search rows measured) with IndiaMART's GST verified mark in gstVerified; turn on GST verified suppliers only to keep only verified ones. Category rows show only whether the supplier is GST registered, and Supplier profile reads the number and the GST registration year from the company page.

This Actor reads only what IndiaMART shows any visitor without a login: no account, no sign in, no OTP. Personal data (names of people) is off by default; whether your use of the data is lawful depends on your purpose and your country, and you are responsible for it.

Why does this Actor run with limited permissions?

It follows least privilege: it only writes its own run's dataset and key-value store. When you set a Monitor name, its memory is a named key-value store the Actor creates itself under your account.

What this Actor does NOT do

  • No e-mail addresses: IndiaMART shows none to visitors, only its verified e-mail mark (emailVerified).
  • No WhatsApp numbers: IndiaMART's search answers carry a placeholder number or its call routing number in that place, not the supplier's WhatsApp.
  • No supplier's own mobile number: phone is IndiaMART's call routing number; the supplier's own mobile is behind IndiaMART's sign in.
  • Nothing behind a login or an OTP: no search pages after the first (depth comes from IndiaMART's own filters instead), no buyer leads or enquiries, no account data.
  • No sponsored flag: IndiaMART shows no "Sponsored" label on its listings.
  • No public membership tier: membershipName is IndiaMART's own customer type name and supplierBadge its "Leading Supplier" or "Star Supplier" banner; IndiaMART sets them per listing, so one supplier can carry different ones in different searches.
  • No more than 20 reviews per supplier: the Actor reads IndiaMART's own first reviews page of each supplier.
  • No GSTIN on category rows: category pages show only whether a supplier is GST registered; search rows and Supplier profile carry the number.
  • No filters IndiaMART's answer cannot prove: no turnover, GST age, specification, locality or credential filters; a search link that carries one is refused.
  • No sort order: rows come in the order of IndiaMART's own answers.
  • No links to a supplier's own website: paste the supplier's www.indiamart.com catalogue link instead.

Changelog

See the Changelog tab. 0.1 (2026-10-15): first release.

More data tools by Automation Craft