# TradeIndia Scraper \[~$1.5/1K💰] | B2B Leads | GST + Emails (`ahmed_jasarevic/tradeindia-scraper`) Actor

Scrape TradeIndia.com B2B product listings and supplier storefronts - product name, price, MOQ, specs, company, owner, GST number, email, mobile, city/state, website, trust badges and rating for India B2B lead generation and sourcing research.

- **URL**: https://apify.com/ahmed\_jasarevic/tradeindia-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.47 / 1,000 product scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TradeIndia Scraper — B2B Suppliers, Prices, MOQ & Contact Data — India Lead Generation

Scrape **TradeIndia.com** — India's largest B2B marketplace — for product listings and supplier storefront data. Extract **product name, price, MOQ, specifications, company name, owner, GST number, email, mobile, city/state, website, trust badges and rating** from any search keyword or category URL. Built for B2B sourcing teams, procurement managers, lead-gen agencies and India-market researchers.

### Main Use Cases

- **B2B lead generation** — email and mobile come back on most product listings, and storefront enrichment adds GST number, owner name and website, so every row is a contact-ready B2B prospect
- **Sourcing & price research** — compare prices and MOQs across suppliers for any product before sending RFQs
- **Indian manufacturer & exporter discovery** — filter suppliers by business type (Manufacturer / Exporter / Trader / Distributor) and trust signals
- **Market mapping** — chart suppliers by city, state, business type and Trust Stamp badges
- **CRM enrichment** — flat JSON/CSV/Excel rows drop straight into spreadsheets or CRMs

### Build an Indian Supplier & Manufacturer Database Without the Official TradeIndia API

TradeIndia has no public bulk-export API for supplier or product data. This actor turns any **search keyword** (e.g. `led light`, `industrial valves`) or **category URL** into a clean, structured dataset of products with the selling company's details already attached — including the supplier's **email, mobile, GST number, owner name and website** where published. TradeIndia is one of India's biggest B2B directories, connecting buyers with hundreds of thousands of manufacturers, exporters, traders and distributors, so keyword and category feeds map naturally to a reusable India B2B database.

### How It Works

TradeIndia is a **Next.js** application. Every page (search results, category listings, seller storefronts) embeds its complete data payload in a `<script id="__NEXT_DATA__" type="application/json">` tag in the served HTML. This actor:

1. Fetches the page HTML with CheerioCrawler (through the Apify proxy).
2. Extracts and parses the `__NEXT_DATA__` JSON blob.
3. Reads the listing data from `props.pageProps.serverData.searchListingData` (search pages) or `props.pageProps.initialState.productList.product_list.product_list_res.sellerData.listing` (category pages).
4. Reads company enrichment from `props.pageProps.initialState.sellerProfile.seller_profile.seller_profile_res` (storefront pages).

**No browser, no DOM scraping, no third-party API** — the site's own embedded JSON is the data source. This makes the actor fast, stable and resilient to layout changes (only the JSON paths matter, not CSS selectors), and cheap to run on Apify.

### Input Parameters

| Field | Type | Required | Default | Notes |
|-------|------|----------|---------|-------|
| `searchTerms` | array | No | `["led light"]` | Product keywords to search on TradeIndia, e.g. `led light`, `industrial valves`, `cotton yarn` |
| `startUrls` | array | No | `[]` | Optional TradeIndia category or seller storefront URLs, e.g. `https://www.tradeindia.com/seller/lighting/led-lights/` |
| `maxItemsPerSource` | integer | No | `50` | Max products per search term / URL (0 = no limit, still capped by `maxRequestsPerCrawl`) |
| `includeStorefrontDetails` | boolean | No | `true` | Fetch supplier storefronts to add GST number, owner name, website and response rate (one extra request per unique supplier) |
| `proxyConfiguration` | object | No | Apify residential (`BUYPROXIES94952`) | TradeIndia blocks datacenter IPs; residential proxy is recommended |
| `maxRequestsPerCrawl` | integer | No | `200` | Hard cap on total HTTP requests (protects compute budget) |

### Output Fields

The dataset contains two record types, joinable by `profileId`:

**`product` records** — one per product listing:

| Field | Description |
|-------|-------------|
| `productName`, `productId`, `productUrl`, `productImage` | Product identity |
| `price`, `priceValue`, `priceRange`, `currency`, `unit` | Pricing (`priceValue` is a numeric value for sorting/aggregation) |
| `moq`, `specifications` | Minimum order quantity + spec map |
| `companyName`, `companyProfileUrl`, `profileId`, `userId` | Supplier identity |
| `ownerDesignation`, `email`, `mobile`, `phone` | Contact & owner (from listing) |
| `gstNumber`, `ownerName`, `website`, `responseRate` | Storefront enrichment (when enabled) |
| `city`, `state`, `country`, `address` | Location |
| `businessType`, `isManufacturer`, `isExporter`, `isTrader`, `isDistributor`, `isSupplier` | Business-type flags |
| `hasTrustStamp`, `trustStampUrl`, `certifications`, `trustBadges` | Trust signals (TrustStamp, SuperSeller, PremiumSeller, BestSeller, TI Verified) |
| `rating`, `productScore` | Buyer feedback rating & product score |
| `memberSinceYears`, `establishedYear`, `madeInIndia`, `inStock` | Firmographics |
| `sourceUrl`, `searchKeyword`, `scrapedAt` | Provenance metadata |

**`company` records** — one per supplier storefront (only when `includeStorefrontDetails: true`):

| Field | Description |
|-------|-------------|
| `profileId`, `companyName` | Supplier identity |
| `gstNumber` | GST registration number |
| `ownerName`, `ownerDesignation` | Owner / contact person |
| `website` | Supplier's own website |
| `responseRate` | Storefront response rate |
| `address`, `city`, `state` | Location |
| `businessType`, `hasTrustStamp` | Business type + verification |

### Example Input

```json
{
  "searchTerms": ["led light", "industrial valves"],
  "startUrls": ["https://www.tradeindia.com/seller/lighting/led-lights/"],
  "maxItemsPerSource": 50,
  "includeStorefrontDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": ["BUYPROXIES94952"]
  },
  "maxRequestsPerCrawl": 200
}
```

### Example Output

**Product record:**

```json
{
  "recordType": "product",
  "productId": 6823179,
  "productName": "Solar LED Street Light",
  "productUrl": "https://www.tradeindia.com/products/solar-led-street-light-c6823179.html",
  "price": "2,800 INR (Approx.)",
  "priceValue": 2800,
  "currency": "INR",
  "moq": 10,
  "specifications": { "Color": "Gray", "Material": "Mild Steel", "Switch Mode": "Manual Switch" },
  "companyName": "ZARAL ELECTRICALS",
  "companyProfileUrl": "https://www.tradeindia.com/zaral-electricals-6707422/",
  "profileId": 6707422,
  "ownerDesignation": "Managing Director",
  "email": "sales@zaralelectricals.com",
  "mobile": "+918045475647",
  "city": "Vadodara",
  "state": "Gujarat",
  "businessType": "Manufacturer | Supplier",
  "hasTrustStamp": true,
  "rating": 4,
  "productScore": 53,
  "trustBadges": { "superSeller": false, "premiumSeller": false, "bestSeller": false },
  "searchKeyword": "led light",
  "scrapedAt": "2026-09-12T07:00:00.000Z"
}
```

**Company record:**

```json
{
  "recordType": "company",
  "profileId": 6707422,
  "companyName": "ZARAL ELECTRICALS",
  "gstNumber": "24ACEPM6740R1Z3",
  "ownerName": "Mr Hiral ramdas Mehta",
  "ownerDesignation": "Managing Director",
  "website": "www.zaralelectricals.in",
  "responseRate": null,
  "address": "Shiyapura Road, Near Geb Sub Station, Raopura, Vadodara, Gujarat, 390001, India",
  "businessType": "Manufacturer | Exporter | Supplier",
  "hasTrustStamp": true
}
```

### Integrations & Automation

- **API** — run via the Apify API / SDKs, pull open datasets programmatically
- **Make / Zapier / Google Sheets** — connect runs to push product+supplier rows into sheets, CRMs or email sequences
- **Scheduling** — for **recurring price & supplier monitoring**, schedule a keyword sweep (e.g. weekly) to catch new suppliers, changed prices and MOQs. This recurring usage also improves the actor's relevance in Apify Store search.

### Related Actors

- [IndiaMart Supplier Scraper - B2B Products, Prices - No Cookies](https://apify.com/thirdwatch/indiamart-supplier-scraper)
- [TradeIndia Scraper - B2B Suppliers, Prices, Email & Phone](https://apify.com/haketa/tradeindia-scraper)
- [TradeIndia Product Scraper](https://apify.com/easyapi/tradeindia-product-scraper)
- [TradeIndia Scraper - B2B Suppliers, Manufacturers & Leads](https://apify.com/scrapesage/tradeindia-scraper)
- [IndiaMart Supplier Scraper: Products, Phones, GST & Reviews](https://apify.com/sourabhbgp/indiamart-scraper)

### FAQ

#### Why use this actor instead of the official TradeIndia API?

TradeIndia offers no public third-party bulk-export API for product and supplier data. Available alternatives are manual browsing, paid lead databases (e.g. static exporter Excel files that age and go stale), or per-request premium APIs. This actor reads the site's own embedded `__NEXT_DATA__` JSON to deliver fresh supplier contact data on demand — always current, no manual copying.

#### What are alternatives to a TradeIndia scraper / India B2B data source?

- **IndiaMART scrapers** — indiaMART is India's larger B2B marketplace (7M+ suppliers vs TradeIndia's base); a complementary source for supplier discovery and price research
- **Other TradeIndia actors** — see Related Actors above (price/feature comparisons below)
- **Static lead databases** — bulk Excel "India exporter databases"; cheaper upfront but stale and unverifiable
- **Directory alternatives** — ExportersIndia, Global Sources for cross-border sourcing

#### How can I get Indian supplier emails and phone numbers?

TradeIndia publishes supplier email and mobile on most product listings — this actor captures both directly, plus phone where available. Turning on `includeStorefrontDetails` adds the GST number, owner name and the supplier's own website, so each record is a complete B2B lead without extra enrichment steps.

#### Is TradeIndia data good for B2B lead generation in India?

Yes — supplier listings include the company's name, product, price/MOQ, city/state, business type (Manufacturer/Exporter/Trader/Distributor) and Trust Stamp verification status. That combination makes TradeIndia one of the most actionable public B2B sources for India. Filter on `isManufacturer` / `isExporter` flags after extraction to isolate factory-direct suppliers.

#### What is the cost to scrape TradeIndia?

A typical run of 50 products per keyword uses a handful of HTTP requests (256 MB memory, no browser) and runs in seconds. Free-tier users get a capped preview of 10 products; paid users get full runs. Cumulative request caps (`maxItemsPerSource`, `maxRequestsPerCrawl`) keep compute costs predictable.

#### Why is a residential proxy required?

TradeIndia serves behind CloudFront/AWS WAF and blocks datacenter IPs. The actor defaults to an Apify residential proxy group, which is the reliable way in. If you see empty results, check the proxy group.

### Competitive Positioning

| Capability | Typical TradeIndia scrapers | This actor |
|------------|-----------------------------|------------|
| Price per product record | $0.00299–$0.00350 (e.g. easyapi $0.00299, haketa $0.0035, scrapesage $0.0017) | **$0.0015** — lowest per-record price among the main TradeIndia actors |
| Product + supplier in one dataset | one flat record | **two record types joinable by `profileId`** (product + company storefront) |
| Email + mobile from the listing | varies | yes, captured directly from listing data |
| GST number, owner, website | requires separate profile fetch (scrapesage: +$0.0034/record) | included at **$0.002 per storefront** via `includeStorefrontDetails` |
| Numeric `priceValue` for aggregation | varies | yes, alongside the display string |

### SEO Keywords

tradeindia scraper, tradeindia api, indian b2b supplier database, b2b lead generation india, indian manufacturer data, indian exporter database, tradeindia product scraper, india b2b marketplace data, supplier contact data email phone india, gst number supplier data, tradeindia price monitoring, moq comparison, tradeindia supplier leads, indiamart alternative, india sourcing, china+1 sourcing, india supplier discovery, tradeindia category crawl, verified indian suppliers, tradeindia storefront data

### For AI Agents & LLM Apps

**Purpose**: Returns TradeIndia product listings and supplier storefront records — product name, price, MOQ, specs, company, email, mobile, GST, owner, location and trust badges — as dataset rows joinable by `profileId`.

**Minimal input**:

```json
{ "searchTerms": ["led light"] }
```

**Variants**:

- Category sweep: `{ "startUrls": ["https://www.tradeindia.com/seller/lighting/led-lights/"], "maxItemsPerSource": 100 }`
- Contact-rich leads (adds GST/owner/website): `{ "searchTerms": ["industrial valves"], "includeStorefrontDetails": true }`

**Output fields**: product records — `productName`, `productId`, `productUrl`, `price`, `priceValue`, `currency`, `moq`, `specifications`, `companyName`, `companyProfileUrl`, `profileId`, `ownerDesignation`, `email`, `mobile`, `gstNumber`, `ownerName`, `website`, `responseRate`, `city`, `state`, `businessType`, `hasTrustStamp`, `rating`, `trustBadges`, `searchKeyword`, `scrapedAt`. Company records — `recordType: "company"`, `companyName`, `profileId`, `gstNumber`, `ownerName`, `ownerDesignation`, `website`, `responseRate`, `address`, `businessType`, `hasTrustStamp`.

**Behaviors an agent should know**:

- Two record types share one dataset — filter by `recordType: "product"` vs `"company"`; join company details to products via `profileId`.
- `includeStorefrontDetails` (default `true`) adds one storefront request per unique supplier and is what populates `gstNumber`/`ownerName`/`website`; set `false` for a leaner, faster product-only run.
- TradeIndia blocks datacenter IPs — keep the default residential proxy group (or a valid one) or results may come back empty.
- Not every supplier publishes a price; some listings show "Ask for Price" and `price`/`priceValue` are absent.
- Billing: $0.0015 per product record; +$0.002 per storefront fetch when enrichment is on.

### Legal & Compliance Disclaimer

This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by TradeIndia.com or Infocom Network Ltd. It accesses only publicly available TradeIndia pages (search results, category listings and supplier storefronts) and parses the site's own embedded `__NEXT_DATA__` JSON — no login bypass, no CAPTCHA solving, no access to non-public data. Users are responsible for their own compliance with TradeIndia's Terms of Service and all applicable laws, including India's DPDP Act and the GDPR/CCPA where the data concerns individuals in those jurisdictions. Contact data (emails, mobile numbers) returned by this actor must not be used for unsolicited commercial outreach that would violate applicable law (e.g. anti-spam regulations such as CAN-SPAM or equivalent local rules).

# Actor input Schema

## `searchTerms` (type: `array`):

Product keywords to search on TradeIndia, e.g. "led light", "industrial valves", "cotton yarn". Each keyword is searched and its product listings collected.

## `startUrls` (type: `array`):

Optional TradeIndia category or seller storefront URLs to scrape, e.g. https://www.tradeindia.com/seller/lighting/led-lights/ or https://www.tradeindia.com/zaral-electricals-6707422/

## `maxItemsPerSource` (type: `integer`):

Maximum number of products to collect from each search term or URL. 0 = no limit (still capped by maxRequestsPerCrawl).

## `includeStorefrontDetails` (type: `boolean`):

Fetch each supplier's storefront page to enrich output with GST number, owner name, website and response rate. Adds one extra request per unique supplier.

## `proxyConfiguration` (type: `object`):

Proxy settings used by the crawler. Turn OFF to connect from the server's IP, or pick an Apify proxy group. TradeIndia blocks datacenter IPs, so Residential (or your own group) is recommended.

## `maxRequestsPerCrawl` (type: `integer`):

Hard cap on total HTTP requests (protects compute budget).

## Actor input object example

```json
{
  "searchTerms": [
    "led light"
  ],
  "startUrls": [],
  "maxItemsPerSource": 50,
  "includeStorefrontDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": [
      "BUYPROXIES94952"
    ]
  },
  "maxRequestsPerCrawl": 200
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "led light"
    ],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "groups": [
            "BUYPROXIES94952"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/tradeindia-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["led light"],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "groups": ["BUYPROXIES94952"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/tradeindia-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "led light"
  ],
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": [
      "BUYPROXIES94952"
    ]
  }
}' |
apify call ahmed_jasarevic/tradeindia-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/tradeindia-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6D2YPqsQJ5lg8ZAxQ/builds/u0NJU2pfFcdgWJkCa/openapi.json
