{
  "openapi": "3.0.1",
  "info": {
    "title": "1688 Products Scraper: Wholesale Prices, MOQ, Suppliers",
    "description": "1688.com wholesale products scraper, $1.80 per 1,000 search rows and $4.49 with details: price tiers, MOQ, units sold, factory and supplier scores. 10% under the two most used 1688 actors; their input works as is. Chinese or English keywords; SKUs, stock and freight with details. Free error rows.",
    "version": "0.1",
    "x-build-id": "L2OJgn3TFGAhTfJwv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/arcadium~1688-products/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-arcadium-1688-products",
        "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/arcadium~1688-products/runs": {
      "post": {
        "operationId": "runs-sync-arcadium-1688-products",
        "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/arcadium~1688-products/run-sync": {
      "post": {
        "operationId": "run-sync-arcadium-1688-products",
        "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": {
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Words to search 1688.com for, Chinese or English, for example [\"保温杯\", \"water bottle\"]. Each keyword is searched on its own and every product keeps the keyword and its position in the results. Leave empty when you give offer ids or links. Also read from queries.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerKeyword": {
            "title": "Max products per keyword",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many products to return per keyword, for example 120. Default: 60. A results page holds 60 products and 1688 shows at most 2,000 per search, so 2,000 is the ceiling. Also read from maxResults or maxProducts (other 1688 actors' names)."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "sales",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "Order of the results: best match (default), most sold in the last 30 days, or price. Example: priceAsc. Also read from sortBy (bestSelling = sales) or sortType (va_rmdarkgmv30 = sales)."
          },
          "minPrice": {
            "title": "Minimum price (CNY)",
            "type": "number",
            "description": "Only products priced at or above this amount in Chinese yuan, for example 10. Leave empty for no lower limit. Also read from priceMin."
          },
          "maxPrice": {
            "title": "Maximum price (CNY)",
            "type": "number",
            "description": "Only products priced at or below this amount in Chinese yuan, for example 50. Leave empty for no upper limit. Also read from priceMax."
          },
          "includeDetails": {
            "title": "Add product details to keyword results",
            "type": "boolean",
            "description": "Opens the product page of every keyword result and adds SKUs with stock, attributes, freight, ratings and the exact sold count. Costs more per product (the Product with details price) and runs slower. Offer ids and links always return details. Default: false. Also read from includeSkuDetails or enrichDetails."
          },
          "offerIds": {
            "title": "Offer IDs",
            "type": "array",
            "description": "1688 offer ids (the number in the product link), for example [\"866095761513\"]. Each one returns a full product with details.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Offer links",
            "type": "array",
            "description": "1688 product page links, for example https://detail.1688.com/offer/866095761513.html. The offer id is read from the link; mobile links work too.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeAds": {
            "title": "Include paid placements",
            "type": "boolean",
            "description": "Sponsored products are part of the search results. Each row has an isAd flag; turn this off to drop them (they still count towards the position). Example: true.",
            "default": true
          },
          "includeCoverageRows": {
            "title": "Add a coverage row per keyword",
            "type": "boolean",
            "description": "Adds one free row per keyword with the total 1688 reports, how many products were delivered and why the search stopped, so incomplete results are visible.",
            "default": true
          },
          "includeErrorRows": {
            "title": "Add a row for inputs that failed",
            "type": "boolean",
            "description": "Adds a free row to the dataset for every keyword or offer that returned nothing or could not be read, with a machine-readable code, so a failure is never silent.",
            "default": true
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How often a request is retried after a temporary error, for example 3.",
            "default": 3
          },
          "searchGateWaitMinutes": {
            "title": "Wait for blocked searches (minutes)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "1688 sometimes refuses all searches for a few minutes. The run then waits up to this many minutes, trying again every 3 minutes, before the remaining keywords end as free error rows. 0 = do not wait.",
            "default": 12
          },
          "proxyConfiguration": {
            "title": "Proxy (advanced)",
            "type": "object",
            "description": "Leave empty. The actor picks proxies that work for this site (datacenter first, residential only when needed). Set your own proxy only if you must; it then replaces the automatic choice."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}