{
  "openapi": "3.0.1",
  "info": {
    "title": "HKTDC Sourcing Scraper & API - Hong Kong & China Suppliers",
    "description": "HKTDC Sourcing scraper and API: Hong Kong, China and Asian B2B suppliers and products by keyword. Price, MOQ, lead time, specs, certificates, verification level, business type, year, employees, turnover, markets, address. Profiles included. No start fee. $1.50 per 1,000, lowest on 6 Nov 2026.",
    "version": "1.0",
    "x-build-id": "OH6YlFzBn1UwaTUtr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rel8ble~hktdc-sourcing-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rel8ble-hktdc-sourcing-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/rel8ble~hktdc-sourcing-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rel8ble-hktdc-sourcing-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/rel8ble~hktdc-sourcing-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rel8ble-hktdc-sourcing-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 or HKTDC Sourcing URLs)",
            "type": "array",
            "description": "Provide at least one. Product keywords, e.g. \"led light\", \"bluetooth speaker\", \"toys\", or sourcing.hktdc.com URLs: a product search (https://sourcing.hktdc.com/en/Product-Search/led%20light/1), a category (https://sourcing.hktdc.com/en/Product-Catalog/Electronics-bc655e0ae39e11ea883f06c82c63b760/1) or one product (https://sourcing.hktdc.com/en/Product-Detail/Led-downlight-IP65-1Z03PU1X8). Default [\"led light\"] (demo).",
            "default": [
              "led light"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSearch": {
            "title": "Max results per search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Products saved per keyword / URL, integer >= 0. Default 20; 0 = every product HKTDC returns (24 per page). You pay per row.",
            "default": 20
          },
          "scrapeProductDetails": {
            "title": "Read product pages (specs, MOQ, lead time, description)",
            "type": "boolean",
            "description": "Default true. Reads each product page and adds all specifications, MOQ, price tiers, lead time, shipping, model, brand, description, all images and categories.",
            "default": true
          },
          "scrapeSupplierProfiles": {
            "title": "Read supplier profiles (year, employees, turnover, address, markets)",
            "type": "boolean",
            "description": "Default true. Reads each supplier profile once (cached across rows) and adds business type, year established, employees, annual turnover, major markets, address, OEM/ODM, certificates, factories, HKTDC trade fairs and website / e-mail when the supplier lists them. Turn both detail options off for the fastest card-only export.",
            "default": true
          },
          "uniqueSuppliers": {
            "title": "One row per supplier",
            "type": "boolean",
            "description": "Optional. true = keep only the first product of each supplier (a lead list). Default false = one row per product.",
            "default": false
          },
          "supplierCountries": {
            "title": "Supplier countries / regions",
            "type": "array",
            "description": "Optional. Keep only suppliers from these, e.g. [\"Hong Kong\", \"Chinese Mainland\", \"Taiwan\", \"Vietnam\"] (\"China\" also works). Omit for all.",
            "items": {
              "type": "string"
            }
          },
          "verifiedOnly": {
            "title": "Verified suppliers only",
            "type": "boolean",
            "description": "Optional. Keep only suppliers with an HKTDC verification level (gold / silver / bronze). Default false.",
            "default": false
          },
          "exhibitorsOnly": {
            "title": "HKTDC trade-fair exhibitors only",
            "type": "boolean",
            "description": "Optional. Keep only suppliers that exhibit at HKTDC fairs. Default false.",
            "default": false
          },
          "manufacturersOnly": {
            "title": "Manufacturers only",
            "type": "boolean",
            "description": "Optional. Keep only suppliers whose business type includes Manufacturer (reads supplier profiles). Default false.",
            "default": false
          },
          "minYearsInBusiness": {
            "title": "Minimum years in business",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Keep only companies established at least this many years ago (reads supplier profiles; companies without a year are skipped when set). Default 0.",
            "default": 0
          },
          "onlyWithPrice": {
            "title": "Only products with a price",
            "type": "boolean",
            "description": "Optional. Skip products without a listed price. Default false.",
            "default": false
          },
          "maxPrice": {
            "title": "Max unit price",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Skip products whose lowest price is above this (in the listed currency, usually USD). Omit for no limit."
          },
          "maxMoq": {
            "title": "Max MOQ",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Skip products whose MOQ is above this number (products without an MOQ are kept). Omit for no limit."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Parallel requests, 1-20. Default 4.",
            "default": 4
          },
          "maxRequestRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Retries per failed or blocked request (each on a new proxy session), 0-20. Default 10.",
            "default": 10
          },
          "residentialFallback": {
            "title": "Retry blocked requests on residential proxy",
            "type": "boolean",
            "description": "Optional, advanced. Default true. HKTDC rate-limits datacenter IPs in bursts (HTTP 403); retries then go through Apify residential proxy, and after repeated blocks the run switches to it. Applies only with the default Apify datacenter proxy.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional, advanced. Default Apify Proxy (datacenter), which works for HKTDC Sourcing. Switch to {\"useApifyProxy\": true, \"apifyProxyGroups\": [\"RESIDENTIAL\"]} to use residential for every request.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}