IndiaMART Scraper | B2B Products, Phones & Suppliers avatar

IndiaMART Scraper | B2B Products, Phones & Suppliers

Pricing

from $2.20 / 1,000 results

Go to Apify Store
IndiaMART Scraper | B2B Products, Phones & Suppliers

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

kane liu

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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
  • enrichDetails defaults to true — PDP person name plus directors 门牌 when /{tscode}/registration-directors-info.html exists
  • 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:

  1. Validates your input (mode, MCAT, city, IDs, filters)
  2. Enforces free-tier caps when you are on a free Apify plan
  3. Fetches public IndiaMART listing and detail pages with India-oriented residential egress
  4. Normalizes product / supplier / category / city rows into a clean Dataset
  5. Writes INPUT_ECHO, RUN_SUMMARY (and ERROR_SUMMARY on 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?

DataMCAT / city listingProduct PDPCompanyExport searchCitiesCategories
dispId / productUrlcompany products
title / price / currency
companyName / tscode
city / statecity rows
imageUrl / ISQ / GST flagsenrichvaries
mcatflname / taxonomy
cityFlName options
phones (c_ct / MOBILE_PNS)本站无
emails本站无本站无本站无本站无
street / 门牌city onlycity onlydirectors when present本站无
person本站无 on cardsPDP first namedirectors / 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.

FieldTypeMeaning 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.
leadSourceenumsearch on MCAT cards; detail after PDP enrich; entity when directors 门牌 is merged.
leadRevealenumvisible when c_ct / MOBILE_PNS is already in page JSON (no click required); absent on Export / taxonomy rows with no supplier phone.
leadAbsencesobjectPer-subfield reason. Typical MCAT+PDP row: emails=本站无, address=本站无 (no directors street), geo=本站无. Export rows also set phones=本站无.
c_ct / MOBILE_PNSstringRaw list / PDP phone keys. The worker no longer drops c_ct, phone, email, or MOBILE_PNS.
contactFirstNamestringPDP first name; same person as person.name when present.
directorsstring[]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__ (includes c_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 6202 are not phones)

Honest limitations

  • Guest emails are 本站无. Opened MCAT, city MCAT, PDP, company home, profile, directors, and enquiry: no supplier mailto: and no GLUSR_USR_EMAIL. The Actor does not invent emails. EMAIL_VERIFIED=1 is not an inbox.
  • Do not treat platform +91-96-9696-9696 as 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.html when IndiaMART publishes it. 404 → street empty + leadAbsences.address=本站无. Do not paste Category / Company Age text into street.
  • export_search is not an India catalog lead channel. Overseas keyword search often lands on export.indiamart.com. Those rows keep catalog fields but phones=[] and leadAbsences.phones=本站无. Prefer mode=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_products pagination 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

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

Real Estate

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)

  1. Create a free Apify account
  2. Open IndiaMART Scraper
  3. Choose a mode: mcat, city_mcat, product, company, company_products, export_search, dir_search, categories, or cities
  4. Enter an mcatflname (e.g. cotton-yarn), optional cityFlName (e.g. bengaluru), productUrl / dispId, or company tscode
  5. (Optional) Set listing filters and maxResults. enrichDetails defaults to true (PDP + directors 门牌). Set it false only for list-only runs.
  6. 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:

EventPrice
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,000per 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 collectedApprox. 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
}
{
"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
}

Not the India catalog lead channel (phones typically 本站无). Prefer MCAT for supplier phones.

{
"mode": "export_search",
"query": "cotton yarn",
"maxResults": 20
}

Coverage matrix

DimensionCoverage
Hostsdir.indiamart.com (MCAT + city), www.indiamart.com (PDP + company), export.indiamart.com (keyword search)
Modesmcat · city_mcat · product · company · company_products · export_search · dir_search · categories · cities
CategoriesAny public MCAT slug + related taxonomy crawl (taxonomyDepth 1–3)
CitiesLive citybar via mode=cities — use before city_mcat to avoid 404
FiltersquesId / optId / bizFilter / isqFilters on listing Ajax
PaginationListing windows via IndiaMART listing Ajax (not fragile ?page= alone)
EnrichenrichDetails 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=cities before city_mcat — not every city×MCAT combination has a page
  • enrichDetails defaults to true — needed for PDP person names and directors 门牌. Set false only when you want faster list-only rows (c_ct phones still emit)
  • Keep maxResults modest 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_search will 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

PlatformHow to connect
Make.comSearch "Apify" → "Run Actor" → lentic_clockss/indiamart-scraper
n8nAdd Apify node → "Run Actor" → same Actor ID
ZapierApify integration → Run Actor
LangChainApifyActorsTool("lentic_clockss/indiamart-scraper")
Python / Node.jsApify 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 input
  • GET /openapi.json — OpenAPI document
  • POST /search — optional Live-view preview (capped maxResults); 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

SettingValue
Default memory1024 MB
Timeout default3600 s
StandbyEnabled (lightweight Live-view)
Free plan caps10 runs / 200 results per run

All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss