{
  "openapi": "3.0.1",
  "info": {
    "title": "DHgate Scraper — Wholesale Products, Price Tiers & Sellers",
    "description": "DHgate.com scraper: export wholesale products by keyword, category, store or item number with volume price tiers, MOQ, shipping cost and delivery days to your country, sales, ratings, reviews, specifications and seller details. No login. Export CSV, Excel, JSON.",
    "version": "1.0",
    "x-build-id": "yKfkKUNkYr3r3ulYt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~dhgate-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-dhgate-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/logiover~dhgate-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-dhgate-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/logiover~dhgate-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-dhgate-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": "Search terms",
            "type": "array",
            "description": "Product keywords exactly as you would type them into the DHgate search box, e.g. wireless earbuds, led strip lights, yoga pants, phone case, sneakers. Each term is one DHgate search. A search shows up to about 3,300 results; with Deep search on, bigger searches continue in price bands and one keyword can give 10,000+ products.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "DHgate URLs",
            "type": "array",
            "description": "Optional. Paste DHgate URLs: search pages (https://www.dhgate.com/wholesale/search.do?searchkey=…), category pages (…/wholesale/led-strips/c117003002.html), store pages (https://www.dhgate.com/store/22318278) or single product pages (…/product/…/1114811530.html). DHgate's own filters in a search URL (price, sort, free shipping, minimum order …) are kept.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categoryIds": {
            "title": "Category IDs",
            "type": "array",
            "description": "Optional. DHgate category IDs such as 117003002 (LED Strips) or 117 (Lights & Lighting) — the categoryId column of this Actor's output or the c… number in a category URL. Without search terms each category is browsed on its own; with search terms the searches are narrowed to these categories.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "storeIds": {
            "title": "Store IDs",
            "type": "array",
            "description": "Optional. List every product of a store: the number from a store URL (22318278 from www.dhgate.com/store/22318278) or the 32-character seller ID from the sellerId column.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "itemCodes": {
            "title": "Item codes",
            "type": "array",
            "description": "Optional. Read single products by item number — the number at the end of a product URL, e.g. 1114811530. These are fetched straight from their product pages.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max products (total)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Upper limit for the whole run. 0 = no limit. Every product is saved once even if several searches find it.",
            "default": 1000
          },
          "maxItemsPerSearch": {
            "title": "Max products per search",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional cap for each search term / URL / category / store (0 = no cap), useful to spread a budget evenly across many keywords.",
            "default": 0
          },
          "deepSearch": {
            "title": "Deep search (go past DHgate's result limit)",
            "type": "boolean",
            "description": "DHgate shows at most 4,040 results for any single search, even when it reports 200,000 matches. With this on, a search that wants more than about 2,500 products continues automatically in US-dollar price bands (each band is a search of its own), so one keyword can give tens of thousands of unique products. Off = stop after DHgate's own result window.",
            "default": true
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "relevance",
              "bestselling",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Order of results. Best match and Best selling reach about 3,000 results per search; the price orders reach 4,040. Deep search always continues in price order.",
            "default": "relevance"
          },
          "minPrice": {
            "title": "Min price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Lowest price per piece in US dollars. It is sent to DHgate as its own price filter and checked again on every product: a product is kept when its displayed price range reaches into your range."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Highest price per piece in US dollars (same rules as Min price)."
          },
          "maxMinimumOrder": {
            "title": "Max minimum order (MOQ)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Only products whose minimum order quantity is at most this many units. DHgate's \"Min. order\" filter is applied and every product's own minimum order is checked again."
          },
          "singlePieceOnly": {
            "title": "Single piece orders only",
            "type": "boolean",
            "description": "Only products you can order as a single piece (minimum order of 1). DHgate's filter is applied and every product's own minimum order is checked again, because DHgate's filter alone also lists some bulk-only products.",
            "default": false
          },
          "freeShippingOnly": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only products with free shipping to your ship-to country.",
            "default": false
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only products with a running seller promotion.",
            "default": false
          },
          "customizableOnly": {
            "title": "Customizable only",
            "type": "boolean",
            "description": "Only products the seller will customize (logo, packaging …).",
            "default": false
          },
          "usWarehouseOnly": {
            "title": "US warehouse only",
            "type": "boolean",
            "description": "Only products stocked in a US warehouse.",
            "default": false
          },
          "shipToCountry": {
            "title": "Ship-to country",
            "type": "string",
            "description": "Two-letter country code the shipping cost, delivery time and availability are calculated for, e.g. US, GB, DE, FR, AU, CA, BR, IN. All prices are in US dollars.",
            "default": "US"
          },
          "includeDetails": {
            "title": "Read the product page of every product",
            "type": "boolean",
            "description": "Off (default): one row per product from the search results — about 10,000 products a minute. On: every product also gets its own product page read — volume price tiers, shipping cost and delivery days to your country, seller company, specifications, options, gallery and latest reviews. That is one extra page per product and DHgate rate-limits it, so expect a few hundred to a couple of thousand products a minute.",
            "default": false
          },
          "includeDescription": {
            "title": "Include full description",
            "type": "boolean",
            "description": "Adds the seller's full description as text, as HTML and its image URLs (large: often 10-40 KB per product). Needs \"Read the product page\".",
            "default": false
          },
          "maxReviews": {
            "title": "Reviews per product",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "How many of the newest reviews to store with each product (0 = none, 20 = all the product page shows). Review counts, star split and highlights are always included.",
            "default": 5
          },
          "concurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many product pages are read at the same time. 12 is a good balance; lower it if DHgate starts refusing requests.",
            "default": 12
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The Actor starts on the direct connection and switches to Apify datacenter proxies by itself when DHgate refuses a request; residential proxies (US) are used only as a last resort for a few requests. The default works for nearly everyone.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}