{
  "openapi": "3.0.1",
  "info": {
    "title": "TradeIndia Scraper — B2B Products, Prices & Suppliers",
    "description": "Scrape TradeIndia.com by keyword, category, city or URL: product name, price per unit in INR, MOQ, specifications, trade terms (payment, delivery, packaging), supplier company, city, state, business type, year established, TrustStamp and membership. Optional employees, turnover, GST. No login.",
    "version": "0.1",
    "x-build-id": "BNBFCHZwqKGFGvuki"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~tradeindia-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-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/yugenox~tradeindia-scraper/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-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/yugenox~tradeindia-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-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": {
          "searchTerms": {
            "title": "🔎 Products / keywords",
            "type": "array",
            "description": "What to find, e.g. \"solar led flood light\", \"ball valve\", \"cotton yarn\". Each keyword opens its TradeIndia category page (tradeindia.com/manufacturers/<keyword>.html); if there is none, the closest TradeIndia categories are used and named in the status message.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "🗂️ Categories",
            "type": "array",
            "description": "TradeIndia category names or links, e.g. \"led signboard\" or https://www.tradeindia.com/manufacturers/led-signboard.html.",
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "📍 Cities",
            "type": "array",
            "description": "Only suppliers in these cities, e.g. \"Mumbai\", \"Ahmedabad\", \"Bengaluru\". Each category is read from its city pages (e.g. /mumbai/…-city-207486.html) and the category's own page is filtered to these cities.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 TradeIndia URLs",
            "type": "array",
            "description": "TradeIndia category pages (/manufacturers/…html), city pages (/<city>/…-city-<id>.html) or product pages (/products/…html).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many products in total (0 = no limit).",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max products per keyword / category",
            "minimum": 0,
            "type": "integer",
            "description": "Cap for each keyword, category or city link (0 = as many as the category and its city pages list).",
            "default": 100
          },
          "includeCityPages": {
            "title": "Go past the first page through city pages",
            "type": "boolean",
            "description": "A category page lists about 28 products. With this on, the actor continues through the category's city pages (each lists different suppliers) until it has enough products. TradeIndia's robots.txt doesn't allow its numbered result pages, so this is how the actor goes deeper.",
            "default": true
          },
          "maxCityPages": {
            "title": "Max city pages per category",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Upper bound on city pages read for one category (it also stops by itself when city pages stop adding new products).",
            "default": 40
          },
          "findCategories": {
            "title": "Match keywords to TradeIndia categories",
            "type": "boolean",
            "description": "When a keyword has no exact category page, look it up in TradeIndia's category list (its public sitemaps, ~1 MB, cached for a week) and use the closest categories.",
            "default": true
          },
          "includeDetails": {
            "title": "Include product details",
            "type": "boolean",
            "description": "Open each product page for the description, all photos, the supplier's full address, number of employees, annual turnover, GST number (masked for sole proprietors), working days, payment modes and company profile text. One extra page per product (charged per product).",
            "default": false
          },
          "minPrice": {
            "title": "Min price (INR)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip products priced below this (products without a price are skipped too when set)."
          },
          "maxPrice": {
            "title": "Max price (INR)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip products priced above this (products without a price are skipped too when set)."
          },
          "trustSealOnly": {
            "title": "TrustStamp suppliers only",
            "type": "boolean",
            "description": "Only products whose supplier has TradeIndia's TrustStamp.",
            "default": false
          },
          "verifiedOnly": {
            "title": "TI-verified suppliers only",
            "type": "boolean",
            "description": "Only products whose supplier is marked TradeIndia-verified.",
            "default": false
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Skip products marked out of stock.",
            "default": false
          },
          "businessTypes": {
            "title": "Business types",
            "type": "array",
            "description": "Only suppliers of these types.",
            "items": {
              "type": "string",
              "enum": [
                "Manufacturer",
                "Exporter",
                "Supplier",
                "Trader",
                "Distributor",
                "Service Provider",
                "Wholesaler",
                "Retailer",
                "Importer"
              ]
            }
          },
          "maxConcurrency": {
            "title": "Parallel queries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many keywords / categories are scraped at the same time.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify automatic datacenter proxies work and are the default. If TradeIndia refuses them, the run switches to Apify residential proxies (India) by itself when your account has them.",
            "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}