IndiaMART Supplier Data — GST, Legal Status, IEC & CIN avatar

IndiaMART Supplier Data — GST, Legal Status, IEC & CIN

Pricing

$5.00 / 1,000 supplier records

Go to Apify Store
IndiaMART Supplier Data — GST, Legal Status, IEC & CIN

IndiaMART Supplier Data — GST, Legal Status, IEC & CIN

IndiaMART suppliers by category and city: legal status, GSTIN (check-digit validated), IEC, CIN, turnover and employee bands, rating and IndiaMART's PNS phone line. Proprietorships excluded by default (DPDP). Reads only robots-allowed pages.

Pricing

$5.00 / 1,000 supplier records

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

IndiaMART Supplier Data — GST, Legal Status, IEC & CIN 🏭

🎉 Turn IndiaMART category and city listings into clean supplier firmographics — no login, no API key, one row per supplier, with legal status, GST number (check-digit validated), IEC, CIN, turnover and employee bands, rating and IndiaMART's PNS phone line. Built for B2B sourcing teams, supplier due diligence (KYB) and India market research.

foXLabs India data series: Indian Company Data — CIN, Directors & Financials foXLabs India series: Company registry · Government tenders · NSE filings · Tech hiring signals

🔍 What is IndiaMART Supplier Data — and when should you use it?

Give this actor IndiaMART category slugs — and, if you like, cities — and it returns the suppliers IndiaMART lists there: one deduplicated row per supplier, with the statutory and size facts IndiaMART publishes on each supplier's factsheet. Every run reads IndiaMART live.

Use it when you need: a shortlist of Indian manufacturers or traders for a category and city, qualified by GSTIN, legal status, IEC/CIN and size bands; or a quick screen of suppliers before a first order.

Use something else when: you need email addresses or a supplier's direct phone number. IndiaMART does not publish them on public pages. The phone it shows is a PNS virtual number that IndiaMART forwards to the supplier, and in our test runs all 89 supplier websites listed on six listing pages were catalog sites hosted by IndiaMART itself, with no email of their own. For the MCA registry record behind a CIN, use Indian Company Data.

🤖 Use with AI agents

Already on the Apify MCP server? Ask for this Actor by name: foxlabs/indiamart-supplier-data.

Your agent can pay for its own runs. This Actor bills per event, so with Apify's agentic payments an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — no Apify account or API token of its own. Billing is the same either way: per delivered supplier row; the summary row that explains an empty or degraded run is never charged.

Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want IndiaMART supplier records using the Apify Actor `foxlabs/indiamart-supplier-data`.
Input: `categories` is a list of IndiaMART category slugs such as industrial-valves; `cities` narrows each category to city listings; `maxResults` caps the rows.
Start with: {"categories":["industrial-valves"],"cities":["Ahmedabad","Coimbatore"],"maxResults":20}
Ask me which categories and cities I need, run the Actor, then summarise the rows as a table.

The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/indiamart-supplier-data.md.

📋 Overview

Everything you need to turn IndiaMART listings into clean supplier data — in one actor, with no login, cookies or API key.

Why teams pick this actor:

  • The factsheet, not just the listing card — legal status, GSTIN, IEC, CIN and turnover/employee bands, read from the supplier's IndiaMART factsheet (the catalog site IndiaMART hosts for it, its storefront or a product page).
  • 🧾 GSTINs you can rely on — only GSTINs with a valid check character are delivered, and the PAN type inside them (company, firm, individual) backs up the legal status.
  • 🛡️ DPDP-aware by default — sole proprietorships, whose GSTIN embeds the owner's personal PAN, are left out unless you switch them on.
  • ☎️ Honest phone labelling — IndiaMART's PNS virtual number is delivered as indiamartPhone with indiamartPhoneType: "pns-virtual", never passed off as a direct line.
  • 🧹 No silent failures — a SOURCE_REPORT record and, when a run is empty or degraded, a summary row say what happened.
  • 🤖 Agent-ready — MCP + x402 agentic payments.

✨ Features

  • 🔍 Category + city listings — one IndiaMART listing page per category and city (up to 28 suppliers each); cities are read in turn, so a row cap still covers every city.
  • 🏢 Supplier factsheet — legal status, nature of business, GSTIN, IEC, CIN, employee band, turnover band, GST registration year, year of establishment, years on IndiaMART, rating, response rate and top products.
  • 🌐 Website — the website listed for a supplier and whether it is an IndiaMART-hosted catalogue or an independent site. IndiaMART-hosted catalogues carry no email or phone of their own, so this Actor does not collect contacts from websites.
  • 🐢 Polite by design — robots.txt is checked on every host, everything IndiaMART serves shares one pace (1 request per second by default), HTTP 429 answers trigger a bounded back-off, and a proxy session IndiaMART refuses (HTTP 403, or 429 after the back-off) is replaced by a fresh one — at most 3 sessions per page and 10 new sessions per run.

🎬 Quick Start

curl -X POST "https://api.apify.com/v2/acts/foxlabs~indiamart-supplier-data/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"categories":["industrial-valves"],"cities":["Ahmedabad","Coimbatore"],"maxResults":20}'

🚀 Getting Started (3 steps)

  1. Pick categories — the slug is the last part of a dir.indiamart.com/impcat/<slug>.html URL, e.g. industrial-valves, industrial-chemicals, cotton-yarn.
  2. Add cities (optional) and a cap — each city adds one listing page of up to 28 suppliers; maxResults limits the rows.
  3. Run and export — get a clean dataset as JSON, CSV or Excel.

📥 Input

{"categories":["industrial-valves"],"cities":["Ahmedabad","Coimbatore"],"maxResults":20}
FieldTypeDescription
categoriesarrayIndiaMART category slugs, names or listing URLs (https://dir.indiamart.com/impcat/<slug>.html, https://dir.indiamart.com/<city>/<slug>.html). Required.
citiesarrayCity names (Ahmedabad, Navi Mumbai); each category is then read from its city listing instead of the all-India one.
includeProprietorshipsbooleanDefault false — sole proprietorships are skipped (DPDP Act 2023).
maxResultsintegerStop after this many supplier rows (default 500, 0 = unlimited).
requestDelayMsintegerPause between IndiaMART requests, shared by all workers (default and minimum 1000 ms).
maxConcurrencyintegerParallel workers, 1–2 (default 2).
proxyConfigurationobjectDefault: Apify Proxy, Residential group — IndiaMART refuses most datacenter IPs. See Pricing → Proxy.

📤 Output

One row per supplier (IndiaMART account), saved to the dataset. Every supplier row has the same 36 keys; missing values are null or [].

FieldDescription
rowTypesupplier (or summary for the explanation row, see below)
companyNameSupplier name as IndiaMART shows it
indiamartIdIndiaMART account id — the join key, unique within a run
indiamartUrlThe supplier's IndiaMART storefront, else the product page it was listed with
storefrontUrlIndiaMART storefront URL, when IndiaMART publishes one for the supplier
listingUrlThe listing page the supplier came from
categoryIndiaMART category name
city / stateLocation as IndiaMART shows it
natureOfBusinessManufacturer, trader, service provider…
legalStatusLegal status of the firm (Limited Company, Partnership, Proprietorship…)
isProprietorshiptrue for sole proprietorships — from the legal status, else from the PAN type in the GSTIN
gstNoGSTIN, delivered only with a valid check character
gstVerifiedIndiaMART's GST-verified badge
iecImport Export Code
cinCorporate Identification Number (companies)
yearEstablishedYear of establishment, when shown
employeeBand / turnoverBandSize bands as IndiaMART shows them
gstRegistrationYearYear of GST registration
memberSinceYearsYears on IndiaMART
rating / ratingCount / responseRateBuyer rating, number of ratings, response rate (%)
products / productsTextUp to 10 product names
indiamartPhoneIndiaMART PNS virtual number (+91…)
indiamartPhoneExtensionExtension to dial after the PNS number, when IndiaMART gives one
indiamartPhoneTypeAlways pns-virtual
indiamartPhoneNoteOne-line explanation of the PNS number
website / websiteType / websiteStatusWebsite listed for the supplier; indiamart-hosted, independent or none
factsheetSourceWhere the legal status came from: indiamart-hosted-site, indiamart-hosted-profile, storefront, product-page
factsheetStatusok, partial, rate-limited or unavailable
scrapedAtISO timestamp

Sample row — a real row from a test run on 2026-09-10 (industrial-valves, Ahmedabad):

{
"rowType": "supplier",
"companyName": "Cair Euromatic Automation Private Limited",
"indiamartId": 1561343,
"indiamartUrl": "https://www.indiamart.com/proddetail/industrial-valves-services-2853610253097.html",
"storefrontUrl": null,
"listingUrl": "https://dir.indiamart.com/ahmedabad/industrial-valves.html",
"category": "Industrial Valves",
"city": "Ahmedabad",
"state": "Gujarat",
"natureOfBusiness": "Manufacturer",
"legalStatus": "Limited Company",
"isProprietorship": false,
"gstNo": "24AAECC7293G1ZL",
"gstVerified": true,
"iec": "0811031691",
"cin": "U29100GJ2012PTC069127",
"yearEstablished": null,
"employeeBand": "101 to 500 People",
"turnoverBand": "100 - 500 Cr",
"gstRegistrationYear": 2017,
"memberSinceYears": 17,
"rating": 4.2,
"ratingCount": 67,
"responseRate": 87,
"products": ["Industrial Valves Services", "Irrigation Piping Packages Valves", "Cair MS Valve for SWSM", "Motorised Extended Stem Butterfly Valve With Electrical Actuator"],
"productsText": "Industrial Valves Services, Irrigation Piping Packages Valves, Cair MS Valve for SWSM, Motorised Extended Stem Butterfly Valve With Electrical Actuator",
"indiamartPhone": "+917949350591",
"indiamartPhoneExtension": null,
"indiamartPhoneType": "pns-virtual",
"indiamartPhoneNote": "IndiaMART PNS virtual number: IndiaMART forwards the call to the supplier through its own exchange; it is not the supplier's direct line.",
"website": "https://www.valves-actuators.com/",
"websiteType": "indiamart-hosted",
"websiteStatus": "ok",
"factsheetSource": "indiamart-hosted-site",
"factsheetStatus": "ok",
"scrapedAt": "2026-09-10T14:52:38.603Z"
}

Summary row and SOURCE_REPORT. When a run delivers nothing, or when a failed listing, refused proxy sessions or IndiaMART's rate limit left rows incomplete, the dataset gets one extra row with rowType: "summary" and a plain-language message — for example "IndiaMART has no listing page at … Check the category slug …" or "IndiaMART refused 3 Apify Proxy RESIDENTIAL sessions for … (HTTP 403) …". It is never charged. Every run also writes SOURCE_REPORT to the key-value store: per-listing status, where each legal status came from, website types, HTTP 429 pauses, the proxy sessions used and why each new one was opened, and requests and compressed bytes per page type.

📏 What the data contains (measured)

From our test runs on 2026-09-10 across three categories and six city listings (industrial valves, industrial chemicals, cotton yarn):

  • Firmographics, 30 supplier rows: legal status 97%, GSTIN 97% (29 of 29 with a valid check character), employee band 97%, GST registration year 97%, turnover band 80%, IEC 77%, state 57%, CIN 37% (companies only), year of establishment 27%, indiamartPhone 100%.
  • On the Apify platform (the prefill input — CNC machines, all India — with the Residential proxy): 10 supplier rows in 57 s with build 0.1.1 and in 106 s with build 0.1.2, which first replaced a proxy session IndiaMART refused; both times legal status, GSTIN, IEC and indiamartPhone on 10 of 10, CIN on 6 of 10. Two more platform runs gave 8 rows each: industrial valves in Ahmedabad in 86 s (IEC 7 of 8, CIN 5 of 8) and industrial chemicals in Vadodara in 79 s (IEC 4 of 8, CIN 0 of 8), with legal status, GSTIN and indiamartPhone on 8 of 8 in both.
  • Supplier websites: the six listing pages held 168 supplier entries; 89 of them listed a website, and all 89 were catalogue sites hosted by IndiaMART, with no email or phone of their own. That is why this Actor does not collect website contacts; the only phone line is IndiaMART's PNS number (indiamartPhone).
  • Proprietorships: 31 of the 52 industrial-valves suppliers in Ahmedabad and Coimbatore were sole proprietorships, which are skipped by default.

💼 Use cases

1. Supplier shortlists for sourcing — industrial valve makers in Ahmedabad and Coimbatore. Input: a category and two cities. Output: companies and firms with legal status, GSTIN, size bands and the PNS phone line. Use: a qualified RFQ list.

2. Supplier due diligence (KYB) — check that a supplier is a registered company or firm before the first order. Input: the category and city listing it appears in. Output: legal status, check-digit-valid GSTIN, CIN and IEC. Use: confirm the GSTIN on the GST portal and the CIN in the MCA registry (for example with Indian Company Data).

3. Market mapping — who sells a category in which city, and at what size. Input: one category, several cities. Output: suppliers per city with turnover and employee bands. Use: size the supplier base before entering a market.

🔗 Integration

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('foxlabs/indiamart-supplier-data').call({"categories":["industrial-valves"],"cities":["Ahmedabad","Coimbatore"],"maxResults":20});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((row) => row.rowType === 'supplier'));

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('foxlabs/indiamart-supplier-data').call(run_input={"categories":["industrial-valves"],"cities":["Ahmedabad","Coimbatore"],"maxResults":20})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
if item.get('rowType') == 'supplier':
print(item)

Automation (n8n / Zapier / Make): schedule or webhook → HTTP request to the actor API with your categories and cities → keep the rows with rowType = supplier → push them to a sheet, CRM or supplier database.

📊 Pricing

Pay-per-event:

  • supplier-record — once for every supplier row delivered; compute and proxy traffic are included in this price.

The summary row is never charged. View current pricing.

Proxy. The default is Apify Proxy's Residential group. In our tests on 2026-09-10 IndiaMART accepted 10 of 12 residential sessions and refused 9 of 13 datacenter sessions (HTTP 403). When a session is refused — HTTP 403, or HTTP 429 after the back-off — the actor retires it and retries the same page from a fresh session, at most 3 sessions per page and 10 new sessions per run; only when every one of them is refused does the run end with a summary row. Compute and proxy traffic — the Residential proxy included — are part of the per-record price; you are not billed for them separately. For reference, a delivered supplier used about 105–125 KB of residential proxy traffic in our four platform runs. With a datacenter group, expect runs that end with a summary row and no data.

❓ FAQ

Do I need an account, login or API key? No. The actor reads public IndiaMART pages only; you need no IndiaMART account.

Why is there no email or direct phone number? IndiaMART does not show them on public pages. The phone it shows is a PNS virtual number: IndiaMART forwards the call to the supplier through its own exchange. We deliver it as indiamartPhone with indiamartPhoneType: "pns-virtual". The websites listed for suppliers were, in our tests, catalog sites that IndiaMART hosts (89 of 89), and those carry no email either.

Why at most 28 suppliers per listing page? IndiaMART's listing page shows 28 suppliers; further results load through a search endpoint (/search.mp) that IndiaMART's robots.txt disallows, and this actor uses no hidden endpoints. Add cities for more: each city is another listing page of up to 28 suppliers.

Why are proprietorships excluded by default? A sole proprietorship's GSTIN contains the owner's personal PAN, so under India's DPDP Act 2023 its record is personal data. Switch includeProprietorships on only if you have your own lawful basis. Suppliers whose legal status cannot be confirmed are skipped as well, unless their name ends in Limited, Pvt Ltd or LLP.

How current is the data? Every run reads IndiaMART live.

Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.

🐛 Troubleshooting

  • Summary row "IndiaMART refused 3 … sessions for … (HTTP 403)" — IndiaMART refused every proxy session the page was tried from. With the default Residential group, run again later (every run starts from new sessions); with a datacenter group or no proxy, switch to Residential.
  • Summary row "IndiaMART has no listing page at …" — check the category slug (dir.indiamart.com/impcat/<slug>.html) and the city spelling (IndiaMART uses bengaluru, gurgaon, navi-mumbai).
  • Rows with factsheetStatus: "rate-limited", or a summary row about rate limiting — IndiaMART answered HTTP 429. The actor pauses (at most 90 s per run), then stops using that page type and finishes. Run again later; do not raise the concurrency.
  • Fewer rows than suppliers on the page — proprietorships (skipped by default), suppliers with an unconfirmed legal status and second IndiaMART accounts of the same business (same GSTIN) are not delivered; SOURCE_REPORT counts each group.

This actor reads public IndiaMART listing, storefront and catalog pages — only paths IndiaMART's robots.txt allows, with no login, captcha solving or hidden API. IndiaMART is a trademark of its owner, IndiaMART InterMESH Ltd.; this actor is not affiliated with or endorsed by IndiaMART. IndiaMART's Terms of Use restrict systematic copying of its content, so check that your use is permitted. Results are business data, and — if you switch proprietorships on — personal data of individuals, protected by India's DPDP Act 2023, the GDPR and similar laws: only process it with a legitimate basis. See Apify's blog post on the legality of web scraping.

🤝 Support & contact

Changelog

0.1 — 2026-09-10 — initial release

  • Supplier rows from IndiaMART category and city listing pages, one per IndiaMART account, deduplicated across listings; cities are read in turn, so a maxResults cap covers every city.
  • Factsheet from the cheapest reliable page first — the catalog site IndiaMART hosts for the supplier (homepage, else its profile.html table), then the storefront, then the product page. GSTINs are delivered only with a valid check character; "-", "NA" and masked values count as empty.
  • Proprietorships are skipped by default (DPDP); IndiaMART's PNS number is labelled pns-virtual.
  • Website contact enrichment was removed before release: all 89 supplier websites in our tests were IndiaMART-hosted catalogues without contacts of their own.
  • Residential proxy by default. A proxy session IndiaMART refuses (HTTP 403, or 429 after the back-off) is replaced by a fresh one — at most 3 per page and 10 per run; when every session is refused, the summary row names the proxy group and how many sessions were tried.
  • Robots.txt on every host, one shared pace for IndiaMART, bounded back-off on HTTP 429, SOURCE_REPORT, and a summary row for empty or degraded runs that is never charged.