# TradeIndia Scraper - B2B Suppliers, Manufacturers & Leads (`scrapesage/tradeindia-scraper`) Actor

Scrape TradeIndia B2B suppliers, manufacturers & products: company leads (GST, owner, address, geo, website, turnover, employees), specs, prices & MOQ, plus email/phone enrichment and monitoring. No login, no browser.

- **URL**: https://apify.com/scrapesage/tradeindia-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, E-commerce, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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, Manufacturers & Leads (GST, Contacts, Prices & MOQ)

Extract **complete TradeIndia.com data** — both sides of India's B2B marketplace in one actor: **products** (real prices, MOQ, full spec tables, images) and **suppliers / manufacturers** (rich company lead profiles: **GST number, owner name, full address with map coordinates, the seller's own website, annual turnover, employees, business type, certifications and top products**). Optionally crawl each seller's own site to pull **emails and phone numbers**, score every supplier as a **B2B sourcing lead**, and watch keywords for **new products or suppliers** with monitor mode.

The **clean, no-browser way to scrape TradeIndia** — fast HTTP + JSON extraction, no login, no cookies, no headless browser. A reliable **IndiaMART alternative** for India supplier sourcing and lead generation.

### Why this TradeIndia scraper?

Most B2B scrapers return a product title and a price and stop there. This actor ships the **richest dataset in the category** — products *and* the full company profile behind them, with real contact data and a lead score:

| Data | Typical scrapers | This actor |
|---|---|---|
| Product name + price + MOQ | ✅ | ✅ |
| Full product spec table (specifications, price & quantity) | ❌ | ✅ |
| Seller company name + profile URL | partial | ✅ |
| **GST number** | ❌ | ✅ |
| **Owner / contact-person name & designation** | ❌ | ✅ |
| Business type (Manufacturer / Exporter / Trader…) | partial | ✅ |
| Full address → city / state + **map latitude & longitude** | ❌ | ✅ |
| Year established, employees, annual turnover, payment modes | ❌ | ✅ |
| **Seller's own website** + **emails & phones** (site crawl) | ❌ | ✅ |
| Trust Stamp / verified status, top products | partial | ✅ |
| **Lead score (0–100)** per supplier | ❌ | ✅ |
| New-product / new-supplier **monitoring** | ❌ | ✅ |
| No start fee | varies | ✅ |

### Use cases

- **B2B lead generation** — Indian manufacturers, exporters and trading companies are active sellers. Build target lists by product, city (Mumbai, Delhi, Ahmedabad, Rajkot…), business type and Trust Stamp status — each with GST, owner name, full address and a website you can mine for emails and phones.
- **Product sourcing & supplier discovery** — find verified suppliers for any product (industrial valves, cotton fabric, LED lights, pharma machinery, auto parts) with prices and MOQ to shortlist fast.
- **Price & MOQ intelligence** — track prices and minimum order quantities across competing suppliers for a product line.
- **Import / sourcing research** — map who manufactures what, where, and at what scale across India's largest B2B marketplace, with GST and turnover for due diligence.
- **CRM enrichment** — turn a seller profile URL into a full company record (GST, address, geo, website, contacts) for your sales stack.
- **Supply-chain monitoring** — schedule recurring runs to catch newly listed products or new suppliers entering a category.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **TradeIndia Scraper**, pick a **mode**, enter search keywords (or paste TradeIndia URLs), and click **Start**.
3. Watch products and supplier leads stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "mode": "searchSuppliers",
    "searchKeywords": ["industrial valves", "cotton fabric"],
    "cities": ["Mumbai", "Ahmedabad"],
    "maxResults": 200,
    "maxPages": 5,
    "crawlSellerWebsite": true,
    "onlyManufacturers": true,
    "minLeadScore": 40
}
````

- **mode** — `searchProducts` (products by keyword), `searchSuppliers` (manufacturers/suppliers as B2B leads), `sellerDetails` (full company profiles for specific seller URLs), `productDetails` (full data for specific product URLs).
- **searchKeywords** — keywords for the search modes (`industrial valves`, `led light`, `packaging machine`…). Each runs separately.
- **cities** — optional Indian city filter applied to each keyword.
- **sellerUrls / productUrls** — direct inputs for the detail modes (seller profile URLs, or `/products/…-c<id>.html` URLs).
- **startUrls** — paste any mix of seller profiles, product pages or `/search.html?keyword=…` searches; each is auto-routed.
- **maxResults / maxPages** — total record cap and how many search pages per keyword (~28 items/page).
- **enrichSellerProfile** *(searchProducts)* — attach each product's full seller profile (GST, owner, website, address) — deduplicated per seller.
- **crawlSellerWebsite** — crawl each seller's own public site for emails, phones and social links (TradeIndia hides phone behind login).
- **onlyManufacturers / onlyExporters / trustStampOnly / minLeadScore** — keep only the sellers you want.
- **monitorMode / monitorStoreName** — emit only records not seen in previous runs (see below).

### Output

One record per **product** (`type: "product"`) and per **supplier** (`type: "seller"`):

```json
{
    "type": "seller",
    "sellerId": "4141118",
    "companyName": "Futuristic Technologies",
    "ownerName": "Mr Rajesh Garg",
    "ownerDesignation": "CEO",
    "profileUrl": "https://www.tradeindia.com/futuristic-technologies-4141118/",
    "website": "https://www.futuristicclimatecontrols.co.in",
    "gstNumber": "24AAJPG2293E1ZZ",
    "rating": 3,
    "businessTypes": ["Exporter", "Manufacturer", "Distributor", "Supplier", "Trading Company"],
    "yearEstablished": 2008,
    "employeesCount": 9,
    "annualTurnover": "1100000",
    "paymentModes": ["Cash Against Delivery (CAD)"],
    "address": "232, Sunrise Mall, Near Swaminarayan Mandir, Vastrapur, Ahmedabad, Gujarat, 380015, India",
    "city": "Ahmedabad",
    "state": "Gujarat",
    "country": "India",
    "latitude": 23.022505,
    "longitude": 72.571362,
    "mapUrl": "https://maps.google.com/?q=Futuristic+Technologies+Ahmedabad",
    "sellerTier": "Super Premium",
    "hasTrustStamp": true,
    "topProducts": [{ "name": "Honeywell PID Controller", "url": "https://www.tradeindia.com/products/...", "priceText": "5000 INR" }],
    "emails": ["sales@futuristicclimatecontrols.co.in"],
    "phones": ["+91 98250 12345"],
    "socialLinks": { "linkedin": "https://www.linkedin.com/company/futuristic-technologies" },
    "websiteCrawled": true,
    "leadScore": 86,
    "searchKeyword": "industrial valves",
    "scrapedAt": "2026-06-16T00:00:00.000Z"
}
```

```json
{
    "type": "product",
    "productId": "2802951",
    "productName": "Manifold Valves",
    "url": "https://www.tradeindia.com/products/manifold-valves-c2802951.html",
    "image": "https://cpimg.tistatic.com/02802951/b/4/Manifold-Valves.jpg",
    "priceText": "1000 INR (Approx.)",
    "priceValue": 1000,
    "currency": "INR",
    "minOrderQuantity": "1 Piece",
    "specifications": { "Material": "SS", "Automation Grade": "Manual", "Load Capacity": "Up to 6000 PSI" },
    "sellerId": "4141118",
    "companyName": "Futuristic Technologies",
    "sellerProfileUrl": "https://www.tradeindia.com/futuristic-technologies-4141118/",
    "businessTypes": ["Exporter", "Manufacturer"],
    "city": "Ahmedabad",
    "state": "Gujarat",
    "hasTrustStamp": true,
    "scrapedAt": "2026-06-16T00:00:00.000Z"
}
```

> **Note on contact details:** TradeIndia masks the seller's **phone number** behind a login/OTP on its own pages, so a phone field is not published in the page data. This actor returns every publicly available field — company name, owner, GST, full address, map coordinates and the seller's **own website** — and, when **crawlSellerWebsite** is on, extracts **emails, phones and social links from that website** so you get real, reachable contacts.

### Monitor only new products & suppliers

Turn on **monitorMode** and the actor remembers everything it has seen (in a named key-value store) and emits **only new** products/suppliers on each run:

- It complements — and does **not** conflict with — [Apify Schedules](https://docs.apify.com/platform/schedules). Schedule the actor hourly/daily; each scheduled run reuses the same `monitorStoreName`, so you only get what's new since last time.
- Use a distinct `monitorStoreName` per saved task to keep histories separate (lowercase letters, digits and hyphens only).
- Perfect for watching a product category for new listings, or a city's manufacturers for new entrants, and pushing them straight into a CRM or Slack.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly to monitor a category or city for new suppliers and products.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, sheet append) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/tradeindia-scraper').call({
    mode: 'searchSuppliers',
    searchKeywords: ['industrial valves'],
    maxResults: 200,
    crawlSellerWebsite: true,
    onlyManufacturers: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} supplier leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new supplier leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored keyword finds new suppliers.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find verified industrial-valve manufacturers in Gujarat with GST and a website" and let it run this scraper for you.

### More scrapers from scrapesage

Build a complete **B2B sourcing & lead-gen stack**:

- **[Made-in-China Scraper](https://apify.com/scrapesage/made-in-china-scraper)** — China B2B suppliers, products & sourcing leads.
- **[B2B Agency Scraper](https://apify.com/scrapesage/b2b-agency-scraper)** — Sortlist + DesignRush agencies & contacts.
- **[DesignRush Scraper](https://apify.com/scrapesage/designrush-scraper)** — agency directory leads with direct emails.
- **[Companies House Scraper](https://apify.com/scrapesage/companies-house-scraper)** — UK companies, directors & PSCs.
- **[SEC EDGAR Scraper](https://apify.com/scrapesage/sec-edgar-scraper)** — filings, financials & company contacts.
- **[GitHub Scraper](https://apify.com/scrapesage/github-scraper)** — repos, developers & contact leads.
- **[Product Hunt Scraper](https://apify.com/scrapesage/product-hunt-scraper)** — launches, makers & leads.
- **[Eventbrite Scraper](https://apify.com/scrapesage/eventbrite-scraper)** — events + organizer leads.

### Tips

- **Lead workflow**: run `searchSuppliers` with `crawlSellerWebsite: true` and `minLeadScore: 40` to get a clean shortlist of verified suppliers complete with emails and phones, then feed their profile URLs back into `sellerDetails` for the deepest record.
- **City targeting**: add `cities` (e.g. `["Mumbai", "Surat"]`) to focus on a region's manufacturers.
- **Price intelligence**: run `searchProducts` with `enrichSellerProfile: true` to see every product's price/MOQ *and* the company (GST, owner, website) behind it in one table.
- **Cost control**: seller profiles and website crawls are deduplicated per seller, and enrichment is opt-in — keep it off for fast, cheap breadth.
- **Proxies**: the default Apify datacenter proxy works; switch to residential only if you hit blocks under heavy concurrent load.

### FAQ

**How do I find suppliers for a specific product?** Use `searchSuppliers` mode with your product as a keyword (e.g. `industrial valves`). You get one lead record per company with GST, owner, address, website, business type and a lead score.

**Can I get supplier phone numbers and emails?** TradeIndia hides phone behind a login, so it isn't in the page data — but every seller links their **own website**. Turn on `crawlSellerWebsite` and the actor extracts emails, phones and social links from that site. GST number, owner name and full address are always returned.

**What is the GST number good for?** It's a verified Indian business identifier — great for de-duplication, KYC/due-diligence and matching sellers to other records.

**Does it use a browser?** No. It extracts data over plain HTTP from server-rendered pages (Next.js JSON) — fast and reliable, no headless browser, no login.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor a category for new suppliers?** Turn on `monitorMode`, then create a [Schedule](https://docs.apify.com/platform/schedules). Each run emits only suppliers/products not seen before.

**A field is null — why?** Some sellers simply don't publish every field (turnover, certifications, rating). Fields are `null` only when the data isn't public, not because the scraper skipped them.

**Is scraping TradeIndia legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws and TradeIndia's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `mode` (type: `string`):

searchProducts = find products by keyword (price, MOQ, full spec table, seller). searchSuppliers = find manufacturers/suppliers by keyword as rich B2B lead profiles (GST, owner, address, website, turnover). sellerDetails = full company profiles for specific seller URLs. productDetails = full data for specific product URLs. Start URLs override the mode.

## `searchKeywords` (type: `array`):

Keywords to search on TradeIndia.com for searchProducts / searchSuppliers mode. Examples: <code>industrial valves</code>, <code>cotton fabric</code>, <code>led lights</code>, <code>pharmaceutical machinery</code>. Each keyword runs separately.

## `cities` (type: `array`):

Optional Indian city names to narrow each keyword search (e.g. <code>Mumbai</code>, <code>Delhi</code>, <code>Ahmedabad</code>, <code>Rajkot</code>). Each city is searched per keyword. Leave empty for all-India results.

## `sellerUrls` (type: `array`):

TradeIndia seller/company profile URLs (e.g. <code>https://www.tradeindia.com/futuristic-technologies-4141118/</code>). Primary input for sellerDetails mode.

## `productUrls` (type: `array`):

TradeIndia product page URLs (e.g. <code>https://www.tradeindia.com/products/industrial-valves-c2802951.html</code>). Primary input for productDetails mode.

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

Paste any TradeIndia URLs — seller profiles, product pages, or <code>/search.html?keyword=…</code> searches. Each is auto-detected and routed to the right handler.

## `maxResults` (type: `integer`):

Total cap on records emitted across all keywords/URLs in this run.

## `maxPages` (type: `integer`):

How many search-result pages to crawl per keyword/city (each page lists ~28 products).

## `enrichSellerProfile` (type: `boolean`):

For searchProducts mode, fetch each unique seller's profile and attach owner name, GST number, website, full address, year established and employees to every product row. Deduplicated per seller (one extra request per unique seller).

## `crawlSellerWebsite` (type: `boolean`):

For seller records (searchSuppliers / sellerDetails, or enriched searchProducts), crawl the seller's OWN public website (TradeIndia hides phone behind login) to extract emails, phone numbers and social links. Up to 2 pages per seller. Billed as a separate contact-enrichment event only for records returned.

## `onlyManufacturers` (type: `boolean`):

Emit only records whose seller is flagged as a Manufacturer.

## `onlyExporters` (type: `boolean`):

Emit only records whose seller is flagged as an Exporter.

## `trustStampOnly` (type: `boolean`):

Emit only records from sellers that carry the TradeIndia Trust Stamp (verified) badge.

## `minLeadScore` (type: `integer`):

For supplier records, emit only those with at least this 0–100 lead score (based on Trust Stamp / verification, GST, website, owner, rating, tenure, business type and discovered contacts).

## `monitorMode` (type: `boolean`):

Remember products/suppliers seen in previous runs (in a named key-value store) and emit only NEW ones. Pair with Apify Schedules to watch a keyword for newly listed products or suppliers. Does not conflict with scheduling.

## `monitorStoreName` (type: `string`):

Named key-value store that holds the 'already seen' keys for monitor mode. Use a distinct name per saved task so their histories stay separate. Lowercase letters, digits and hyphens only.

## `maxConcurrency` (type: `integer`):

Maximum parallel requests.

## `userAgent` (type: `string`):

Override the crawler User-Agent used for TradeIndia pages. The default (Googlebot) reliably passes TradeIndia's WAF — change only if you know what you're doing.

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

Proxy settings. TradeIndia serves cleanly to Apify datacenter proxies with the crawler User-Agent, so the default is fine; switch to residential only if you see blocks under heavy load.

## Actor input object example

```json
{
  "mode": "searchProducts",
  "searchKeywords": [
    "industrial valves"
  ],
  "maxResults": 100,
  "maxPages": 5,
  "enrichSellerProfile": false,
  "crawlSellerWebsite": false,
  "onlyManufacturers": false,
  "onlyExporters": false,
  "trustStampOnly": false,
  "minLeadScore": 0,
  "monitorMode": false,
  "monitorStoreName": "tradeindia-monitor",
  "maxConcurrency": 6,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped product and supplier records as JSON items in the default dataset.

# 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 = {
    "searchKeywords": [
        "industrial valves"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/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 = {
    "searchKeywords": ["industrial valves"],
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchKeywords": [
    "industrial valves"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapesage/tradeindia-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/tradeindia-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TradeIndia Scraper - B2B Suppliers, Manufacturers & Leads",
        "description": "Scrape TradeIndia B2B suppliers, manufacturers & products: company leads (GST, owner, address, geo, website, turnover, employees), specs, prices & MOQ, plus email/phone enrichment and monitoring. No login, no browser.",
        "version": "0.1",
        "x-build-id": "v4o0nwPfGH0IoMwB8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapesage~tradeindia-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapesage-tradeindia-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapesage~tradeindia-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapesage-tradeindia-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapesage~tradeindia-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapesage-tradeindia-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "What to scrape",
                        "enum": [
                            "searchProducts",
                            "searchSuppliers",
                            "sellerDetails",
                            "productDetails"
                        ],
                        "type": "string",
                        "description": "searchProducts = find products by keyword (price, MOQ, full spec table, seller). searchSuppliers = find manufacturers/suppliers by keyword as rich B2B lead profiles (GST, owner, address, website, turnover). sellerDetails = full company profiles for specific seller URLs. productDetails = full data for specific product URLs. Start URLs override the mode.",
                        "default": "searchProducts"
                    },
                    "searchKeywords": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "Keywords to search on TradeIndia.com for searchProducts / searchSuppliers mode. Examples: <code>industrial valves</code>, <code>cotton fabric</code>, <code>led lights</code>, <code>pharmaceutical machinery</code>. Each keyword runs separately.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "cities": {
                        "title": "Cities (optional filter)",
                        "type": "array",
                        "description": "Optional Indian city names to narrow each keyword search (e.g. <code>Mumbai</code>, <code>Delhi</code>, <code>Ahmedabad</code>, <code>Rajkot</code>). Each city is searched per keyword. Leave empty for all-India results.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sellerUrls": {
                        "title": "Seller profile URLs",
                        "type": "array",
                        "description": "TradeIndia seller/company profile URLs (e.g. <code>https://www.tradeindia.com/futuristic-technologies-4141118/</code>). Primary input for sellerDetails mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "productUrls": {
                        "title": "Product URLs",
                        "type": "array",
                        "description": "TradeIndia product page URLs (e.g. <code>https://www.tradeindia.com/products/industrial-valves-c2802951.html</code>). Primary input for productDetails mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs (auto-routed)",
                        "type": "array",
                        "description": "Paste any TradeIndia URLs — seller profiles, product pages, or <code>/search.html?keyword=…</code> searches. Each is auto-detected and routed to the right handler.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max records (total)",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Total cap on records emitted across all keywords/URLs in this run.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "Max search pages per keyword",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "How many search-result pages to crawl per keyword/city (each page lists ~28 products).",
                        "default": 5
                    },
                    "enrichSellerProfile": {
                        "title": "Attach full seller profile to products (searchProducts)",
                        "type": "boolean",
                        "description": "For searchProducts mode, fetch each unique seller's profile and attach owner name, GST number, website, full address, year established and employees to every product row. Deduplicated per seller (one extra request per unique seller).",
                        "default": false
                    },
                    "crawlSellerWebsite": {
                        "title": "Find emails & phones from seller's own website",
                        "type": "boolean",
                        "description": "For seller records (searchSuppliers / sellerDetails, or enriched searchProducts), crawl the seller's OWN public website (TradeIndia hides phone behind login) to extract emails, phone numbers and social links. Up to 2 pages per seller. Billed as a separate contact-enrichment event only for records returned.",
                        "default": false
                    },
                    "onlyManufacturers": {
                        "title": "Only manufacturers",
                        "type": "boolean",
                        "description": "Emit only records whose seller is flagged as a Manufacturer.",
                        "default": false
                    },
                    "onlyExporters": {
                        "title": "Only exporters",
                        "type": "boolean",
                        "description": "Emit only records whose seller is flagged as an Exporter.",
                        "default": false
                    },
                    "trustStampOnly": {
                        "title": "Only Trust Stamp / verified sellers",
                        "type": "boolean",
                        "description": "Emit only records from sellers that carry the TradeIndia Trust Stamp (verified) badge.",
                        "default": false
                    },
                    "minLeadScore": {
                        "title": "Minimum lead score (suppliers)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "For supplier records, emit only those with at least this 0–100 lead score (based on Trust Stamp / verification, GST, website, owner, rating, tenure, business type and discovered contacts).",
                        "default": 0
                    },
                    "monitorMode": {
                        "title": "Monitor mode (only new records)",
                        "type": "boolean",
                        "description": "Remember products/suppliers seen in previous runs (in a named key-value store) and emit only NEW ones. Pair with Apify Schedules to watch a keyword for newly listed products or suppliers. Does not conflict with scheduling.",
                        "default": false
                    },
                    "monitorStoreName": {
                        "title": "Monitor store name",
                        "type": "string",
                        "description": "Named key-value store that holds the 'already seen' keys for monitor mode. Use a distinct name per saved task so their histories stay separate. Lowercase letters, digits and hyphens only.",
                        "default": "tradeindia-monitor"
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 16,
                        "type": "integer",
                        "description": "Maximum parallel requests.",
                        "default": 6
                    },
                    "userAgent": {
                        "title": "User-Agent (advanced)",
                        "type": "string",
                        "description": "Override the crawler User-Agent used for TradeIndia pages. The default (Googlebot) reliably passes TradeIndia's WAF — change only if you know what you're doing."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. TradeIndia serves cleanly to Apify datacenter proxies with the crawler User-Agent, so the default is fine; switch to residential only if you see blocks under heavy load.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
