IndiaMART Scraper | B2B Products, Phones & Suppliers
Pricing
from $2.20 / 1,000 results
IndiaMART Scraper | B2B Products, Phones & Suppliers
Scrape IndiaMART India B2B products & suppliers. Guest phones from MCAT/PDP. Emails usually absent; street when directors exists. Export Excel/CSV/JSON.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape IndiaMART India B2B products, suppliers, and categories — including guest-visible supplier phones — then download structured catalog data as Excel, CSV, or JSON.
Use this Actor as a practical IndiaMART data API for Indian supplier discovery, MCAT category monitoring, city-level product lists, and lead research. Choose a mode, set an MCAT slug and optional city filter, and get Dataset rows with dispId, INR prices, company tscode, city/state, GST flags, plaintext phones (c_ct / MOBILE_PNS), and product URLs. Guest emails are usually absent. Street / 门牌 is filled when the company directors page exists.
- Scrape MCAT category listings (
dir.indiamart.com/impcat/…), city × MCAT pages, product PDP, company storefronts, company product lists, and Export keyword search - Enumerate live city options per MCAT (
mode=cities) before city scrapes — avoids invalid city×category 404s - Crawl related MCAT taxonomy with
mode=categories+taxonomyDepth - Apply listing filters:
quesId/optId/bizFilter/isqFilters - Extract dispId, title, price (INR), companyName, tscode, city, state, productUrl, imageUrl, GST flags, ISQ attributes, phones
enrichDetailsdefaults to true — PDP person name plus directors 门牌 when/{tscode}/registration-directors-info.htmlexists- Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or the Apify API
- Pay per event — Actor start + each Dataset result; platform usage is included (you do not pay separate Apify compute on top)
Unofficial tool. This Actor is not affiliated with, endorsed by, or sponsored by IndiaMART InterMESH Ltd. It collects publicly reachable listing and detail surfaces and does not log in or auto-submit Contact Supplier / Get Best Price / Send Inquiry / Submit Requirement. View Mobile / Call Now shows the same number already in listing JSON (
c_ct); the Actor does not click those buttons.
What does the IndiaMART Scraper do?
IndiaMART Scraper lets you extract structured B2B product and supplier data from IndiaMART without running your own proxy and browser fleet. Give it an MCAT slug (e.g. solar-panels, tmt-bars), a city slug (bengaluru), a product URL / dispId, or a company tscode, then start a run.
Under the hood, the Actor:
- Validates your input (mode, MCAT, city, IDs, filters)
- Enforces free-tier caps when you are on a free Apify plan
- Fetches public IndiaMART listing and detail pages with India-oriented residential egress
- Normalizes product / supplier / category / city rows into a clean Dataset
- Writes
INPUT_ECHO,RUN_SUMMARY(andERROR_SUMMARYon failure) to the key-value store
You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.
What IndiaMART data can I extract?
| Data | MCAT / city listing | Product PDP | Company | Export search | Cities | Categories |
|---|---|---|---|---|---|---|
| dispId / productUrl | ✅ | ✅ | company products | ✅ | — | — |
| title / price / currency | ✅ | ✅ | ✅ | ✅ | — | — |
| companyName / tscode | ✅ | ✅ | ✅ | ✅ | — | — |
| city / state | ✅ | ✅ | ✅ | ✅ | city rows | — |
| imageUrl / ISQ / GST flags | ✅ | ✅ | enrich | varies | — | — |
| mcatflname / taxonomy | ✅ | ✅ | — | — | ✅ | ✅ |
| cityFlName options | — | — | — | — | ✅ | — |
phones (c_ct / MOBILE_PNS) | ✅ | ✅ | ✅ | 本站无 | — | — |
| emails | 本站无 | 本站无 | 本站无 | 本站无 | — | — |
| street / 门牌 | city only | city only | directors when present | 本站无 | — | — |
| person | 本站无 on cards | PDP first name | directors / footer | 本站无 | — | — |
See Lead / Contact fields for types, sample sources, reveal cost, and honest gaps. export_search is not the India catalog lead channel.
Lead / Contact fields
Every product / company item carries the lead keys below. Empty values are paired with leadAbsences so you know why a field is blank (本站无 = not on the public page, 闸门锁 = behind a form/login we do not submit, 未验证 = not measured). Nested address parts such as unit may simply be unset.
| Field | Type | Meaning on IndiaMART |
|---|---|---|
phones | [{value, type, e164?}] | Guest-visible supplier numbers. MCAT / city MCAT cards expose plaintext c_ct in window.__INITIAL_STATE__.data[] (10-digit India numbers, e.g. 8043882761, 8043803590, 8043834438). PDP uses MOBILE_PNS (e.g. +91-8043882761) — the same number as list c_ct. View Mobile / Call Now is a reveal of that same value, not a second number. Normalized as {value, type, e164} (type is mobile or landline; e164 like +918043882761). Also copied to alias phone. |
emails | [{value, type}] | Supplier email. Guest surfaces have no mailto:, no GLUSR_USR_EMAIL. Always [] with leadAbsences.emails = "本站无". Do not invent. EMAIL_VERIFIED / emailVerified is a flag, not an address. |
address | {street, unit, locality, region, postalCode, country, full} | unit = 门牌. List cards are city-only (locality / city, sometimes region). Full street comes from /{tscode}/registration-directors-info.html (“Company Registered Office Address”) when that page exists (e.g. Achieve: SECTOR NO.28, PLOT NO.577, FLAT NO.4, NILCHHAYA PLAZA APT, … 411044 IN). Many MCATs 404 that sub-route → street empty and leadAbsences.address = "本站无". PDP ADDRESS is often ""; LONG_ADDRESS is city + state only. |
geo | {lat, lng} | Coordinates. IndiaMART PDP lat/lng are empty on measured pages → leadAbsences.geo = "本站无". Geo does not replace street. |
person | {name, role?} | PDP GLUSR_USR_FIRSTNAME (e.g. Rachna, Suresh, Nishant) when enrichDetails is on. Company / directors pages may add a footer name + role (e.g. R Sonawane, role=CEO) or director names. List cards have no person → leadAbsences.person = "本站无". DIN (07310763) is not a phone. |
org | {name, id?} | Supplier company. org.name = listing CMP / PDP COMPANYNAME; org.id = tscode (e.g. hydraulicsindia, presstech.). |
web | {website, socials[]} | Off-platform site from listing s_url when it is not indiamart.com (e.g. https://www.hydraulicsindia.com/). socials may include PDP media URLs. IndiaMART profile URLs are not copied as website. |
leadSource | enum | search on MCAT cards; detail after PDP enrich; entity when directors 门牌 is merged. |
leadReveal | enum | visible when c_ct / MOBILE_PNS is already in page JSON (no click required); absent on Export / taxonomy rows with no supplier phone. |
leadAbsences | object | Per-subfield reason. Typical MCAT+PDP row: emails=本站无, address=本站无 (no directors street), geo=本站无. Export rows also set phones=本站无. |
c_ct / MOBILE_PNS | string | Raw list / PDP phone keys. The worker no longer drops c_ct, phone, email, or MOBILE_PNS. |
contactFirstName | string | PDP first name; same person as person.name when present. |
directors | string[] | Director names parsed from the directors page when it exists; omitted when the route 404s. |
Reveal cost
Phones are already visible in listing JSON (c_ct) and PDP JSON (MOBILE_PNS). There is no extra “unlock phone” XHR the Actor must fire. Measured View Mobile (GET /mcatAjaxRequest/CallEnquiry/ with rcvNum = the same c_ct) and Call Now only re-display that number — the Actor does not click them and does not submit Get Best Price / Send Inquiry / Submit Requirement.
What does cost extra time is enrichDetails (default true): one PDP fetch per card (person name, MOBILE_PNS) and, when a tscode is present, one GET of /{tscode}/registration-directors-info.html for 门牌. Directors 404 is expected for many companies (leadAbsences.address=本站无), not a crash. Set enrichDetails: false for list-only rows (phones still come from c_ct; person/street stay empty).
Stack (do not ship Chrome-UA-only for detail):
- MCAT / city MCAT: Chrome-UA HTML →
__INITIAL_STATE__(includesc_ct) - PDP / company / directors: Unlocker or a real browser — Chrome-UA-only returns a ~10–13 KB shell with no
__NEXT_DATA__and no registered office - Export search: separate Next App Router surface; not the India catalog lead channel (bearing SKUs such as
6202are not phones)
Honest limitations
- Guest emails are 本站无. Opened MCAT, city MCAT, PDP, company home, profile, directors, and enquiry: no supplier
mailto:and noGLUSR_USR_EMAIL. The Actor does not invent emails.EMAIL_VERIFIED=1is not an inbox. - Do not treat platform
+91-96-9696-9696as a supplier phone. That is IndiaMART’s own ContactPoint, not the seller. - Street / 门牌 is not on list cards. Cards have city only. Full registered office is on
registration-directors-info.htmlwhen IndiaMART publishes it. 404 →streetempty +leadAbsences.address=本站无. Do not paste Category / Company Age text intostreet. export_searchis not an India catalog lead channel. Overseas keyword search often lands onexport.indiamart.com. Those rows keep catalog fields butphones=[]andleadAbsences.phones=本站无. Prefermode=mcat/city_mcat/product/company.- Enquiry / RFQ is out of scope. Get Best Price, Send Inquiry, Submit Requirement, and login are not submitted. Completely cookieless View Mobile → OTP wall was not re-measured (
未验证). - Geo is 本站无 on measured PDP pages (empty lat/lng).
- m-site and
company_productspagination were not fully lead-probed this round.
Why scrape IndiaMART?
IndiaMART is one of India’s largest B2B marketplaces spanning industrial supplies, electronics, chemicals, textiles, construction materials, and more. Teams scrape IndiaMART for supplier discovery, price monitoring, lead generation, and assortment research:
- Monitor MCAT categories and city-level supplier density (Mumbai, Delhi, Bengaluru, Chennai, …)
- Build supplier lists with company codes (
tscode) and GST verification signals - Pull product detail pages with structured attributes and images
- Feed CRM, BI dashboards, Google Sheets, BigQuery, or AI agents with clean rows
- Prefer MCAT / impcat over keyword search — overseas sessions are often redirected to Export search
Compared with generic URL scrapers, this Actor returns IndiaMART-specific fields (dispId, tscode, MCAT/city slugs, listing Ajax filters) in one input surface.
More Actors like this
Need another marketplace, B2B directory, or a different vertical? Use a dedicated Actor below for structured fields. Use this Actor for IndiaMART (dir.indiamart.com / www.indiamart.com) India B2B products and suppliers.
Similar e-commerce & B2B scrapers
- iPROS Scraper
- 1688 Global Product Search Scraper
- Shopee Search Scraper
- Amazon Search Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- Coupang Product Scraper
- Walmart Product Scraper
- Etsy Scraper
- Allegro Scraper
- Lazada Scraper
- MercadoLibre Scraper
Prefer another specialized scraper?
If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Upwork Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Bayt Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- Apartments.com Rental Scraper
- Rightmove Scraper
- Idealista Scraper
- realestate.com.au Scraper
Travel & Stays
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.
How to scrape IndiaMART (no code required)
- Create a free Apify account
- Open IndiaMART Scraper
- Choose a mode:
mcat,city_mcat,product,company,company_products,export_search,dir_search,categories, orcities - Enter an mcatflname (e.g.
cotton-yarn), optional cityFlName (e.g.bengaluru), productUrl / dispId, or company tscode - (Optional) Set listing filters and
maxResults.enrichDetailsdefaults totrue(PDP + directors 门牌). Set itfalseonly for list-only runs. - Click Start and download the Dataset as JSON, CSV, Excel, or JSONL
Start with maxResults: 5–15 to verify the query, then scale up. For city scrapes, run mode=cities first so you only use cities that exist for that MCAT.
How much does it cost to scrape IndiaMART?
This Actor uses pay-per-event pricing. You are charged for:
| Event | Price |
|---|---|
Actor Start (apify-actor-start) | $0.005 per start |
Result (apify-default-dataset-item) | $3.00 / 1,000 results ($0.003 each on FREE/BRONZE) |
Platform usage costs are included — you do not pay separate Apify compute/proxy usage for this Actor on top of the event prices above (User pays platform usage costs = No).
Volume discount tiers (per result)
| Tier | $/1,000 | per result |
|---|---|---|
| FREE* | $3.00 | $0.003 |
| BRONZE | $3.00 | $0.003 |
| SILVER | $2.60 | $0.0026 |
| GOLD | $2.20 | $0.0022 |
| PLATINUM | $2.00 | $0.002 |
| DIAMOND | $1.60 | $0.0016 |
*FREE matches BRONZE for this Actor.
Example cost estimates (FREE/BRONZE)
| Results collected | Approx. event cost* |
|---|---|
| 100 | ~$0.31 |
| 1,000 | ~$3.01 |
| 10,000 | ~$30.01 |
*Assumes one Actor start at default memory billing for start events, plus $0.003 per Dataset item. Exact start billing can scale with allocated memory (one start event per GB, minimum one).
Free plan limits
On a free Apify plan, this Actor enforces developer limits of 10 runs and 200 results per run. Upgrade to a paid Apify plan for unlimited runs (event prices still apply).
Input examples
MCAT listing
{"mode": "mcat","mcatflname": "solar-panels","maxResults": 20,"enrichDetails": true}
List cities for an MCAT (recommended before city_mcat)
{"mode": "cities","mcatflname": "tmt-bars","maxResults": 100}
City × MCAT listing
{"mode": "city_mcat","mcatflname": "tmt-bars","cityFlName": "bengaluru","maxResults": 20}
Taxonomy crawl
{"mode": "categories","taxonomyDepth": 2,"maxResults": 100}
Product PDP
{"mode": "product","productUrl": "https://www.indiamart.com/proddetail/example-2857904787755.html"}
Company products
{"mode": "company_products","tscode": "example-company","maxResults": 30,"enrichDetails": true}
Export keyword search
Not the India catalog lead channel (phones typically 本站无). Prefer MCAT for supplier phones.
{"mode": "export_search","query": "cotton yarn","maxResults": 20}
Coverage matrix
| Dimension | Coverage |
|---|---|
| Hosts | dir.indiamart.com (MCAT + city), www.indiamart.com (PDP + company), export.indiamart.com (keyword search) |
| Modes | mcat · city_mcat · product · company · company_products · export_search · dir_search · categories · cities |
| Categories | Any public MCAT slug + related taxonomy crawl (taxonomyDepth 1–3) |
| Cities | Live citybar via mode=cities — use before city_mcat to avoid 404 |
| Filters | quesId / optId / bizFilter / isqFilters on listing Ajax |
| Pagination | Listing windows via IndiaMART listing Ajax (not fragile ?page= alone) |
| Enrich | enrichDetails default true → PDP (MOBILE_PNS, person) + /{tscode}/registration-directors-info.html (门牌 when the page exists; 404 → 本站无) |
Output example
Catalog identity (always present on product rows):
{"dispId": "7710015988","title": "Jack Hydraulic Cylinder","price": "250","currency": "INR","companyName": "Santec Exim Private Limited","tscode": "hydraulicsindia","city": "New Delhi","productUrl": "https://www.indiamart.com/proddetail/jack-hydraulic-cylinder-7710015988.html","mcatflname": "hydraulic-cylinders","recordType": "product","source": "indiamart.com"}
Lead fields on the same MCAT + enrichDetails row (phones from c_ct / MOBILE_PNS; emails 本站无; street 本站无 on this card because directors was not merged / city-only):
{"c_ct": "8043882761","MOBILE_PNS": "+91-8043882761","phone": "8043882761","phones": [{ "value": "8043882761", "type": "landline", "e164": "+918043882761" }],"emails": [],"email": null,"address": {"street": null,"unit": null,"locality": "New Delhi","region": "Delhi","postalCode": null,"country": "IN","full": "New Delhi, Delhi, IN"},"geo": { "lat": null, "lng": null },"person": { "name": "Rachna", "role": null },"contactFirstName": "Rachna","org": { "name": "Santec Exim Private Limited", "id": "hydraulicsindia" },"web": {"website": "https://www.hydraulicsindia.com/","socials": ["https://www.youtube.com/watch?v=JI76X1kuMxw"]},"leadSource": "detail","leadReveal": "visible","leadAbsences": {"emails": "本站无","address": "本站无","geo": "本站无"}}
When mode=company hits a tscode that publishes directors (e.g. Achieve Hydraulics), address.street / address.unit hold the registered office (PLOT/FLAT/SECTOR) and leadSource becomes entity. DIN values are not phones.
Tips for best results
- Prefer MCAT / impcat (
mode=mcat) over keyword search for stable listing JSON and supplier phones - Run
mode=citiesbeforecity_mcat— not every city×MCAT combination has a page enrichDetailsdefaults to true — needed for PDP person names and directors 门牌. Setfalseonly when you want faster list-only rows (c_ctphones still emit)- Keep
maxResultsmodest on free plans (capped at 200 per run) - Default memory is 1024 MB — enough for this thin HTTPS Actor
- Do not use this Actor to submit Contact Supplier / Get Best Price / Send Inquiry / Submit Requirement
export_searchwill not fill India catalog phones — use MCAT / PDP / company- For one-off protected URLs outside IndiaMART, use Stealth Web Scraper
FAQ
Is this an official IndiaMART API?
No. It is an unofficial scraper of public IndiaMART listing and detail pages.
Do I need my own proxies?
No for normal Store runs. India-oriented residential egress is included with the Actor.
Why prefer MCAT over keyword search?
Overseas sessions hitting dir.indiamart.com search are often redirected to Export. MCAT / city MCAT paths return structured listing data and plaintext c_ct phones more reliably. export_search is not the India catalog lead channel.
Does this Actor return supplier phones and emails?
Phones yes on MCAT / city MCAT / PDP / company — from public c_ct and MOBILE_PNS, not from submitting a form. Emails usually no (emails=[], leadAbsences.emails=本站无). Street / 门牌 only when the directors page exists.
Can I scrape Contact Supplier / Get Best Price / View Mobile clicks?
The Actor does not submit inquiry forms. View Mobile / Call Now is the same number already in c_ct; clicking it is unnecessary and inquiry submit is out of scope.
Can I use this with n8n / Make / Zapier?
Yes — run the Actor via the Apify API or native Apify integrations and map Dataset items downstream.
Where are run diagnostics stored?
Successful runs write INPUT_ECHO and RUN_SUMMARY to the default key-value store. Failed runs also write ERROR_SUMMARY. Public KV records keep workerBaseUrlSource only — never the raw scrape endpoint URL.
Connect to your tools
| Platform | How to connect |
|---|---|
| Make.com | Search "Apify" → "Run Actor" → lentic_clockss/indiamart-scraper |
| n8n | Add Apify node → "Run Actor" → same Actor ID |
| Zapier | Apify integration → Run Actor |
| LangChain | ApifyActorsTool("lentic_clockss/indiamart-scraper") |
| Python / Node.js | Apify SDK or HTTPS API |
API call example
curl "https://api.apify.com/v2/acts/lentic_clockss~indiamart-scraper/runs" \-X POST \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"mcat","mcatflname":"solar-panels","maxResults":10}'
Results:
GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json
Live-view Standby API
This Actor enables Apify Standby and ships .actor/openapi.json for Live-view:
GET //GET /health— Actor readiness (no scrape)GET /input-example— safe low-cost example inputGET /openapi.json— OpenAPI documentPOST /search— optional Live-view preview (cappedmaxResults); persist production results with a normal Actor run
Full jobs should be launched as normal Apify Actor runs so Dataset rows plus INPUT_ECHO, RUN_SUMMARY, and ERROR_SUMMARY are persisted.
Runtime
| Setting | Value |
|---|---|
| Default memory | 1024 MB |
| Timeout default | 3600 s |
| Standby | Enabled (lightweight Live-view) |
| Free plan caps | 10 runs / 200 results per run |
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss