{
  "openapi": "3.0.1",
  "info": {
    "title": "1688 Wholesale Scraper — Tier Pricing, MOQ & Supplier Data",
    "description": "Scrape 1688.com wholesale offers from any offer URL or offer ID. Quantity-break tier pricing, MOQ, supplier, location, attributes and image gallery. Filter by price, MOQ and province before you are billed. Keyword search needs a 1688 login and returns no rows. JSON or CSV.",
    "version": "1.0",
    "x-build-id": "zuwrH6SaCKJGz13PM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~1688-wholesale-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-1688-wholesale-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/memo23~1688-wholesale-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-1688-wholesale-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/memo23~1688-wholesale-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-1688-wholesale-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search on 1688.com. Each keyword is searched on its own and every result carries a `sourceQuery` field so you can tell which keyword produced it. Up to 2,000 offers per keyword (1688's own cap), each with tier pricing, MOQ, supplier and location straight from the search card. Chinese keywords match best.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Direct 1688 URLs, as an alternative or an addition to keyword search. Accepts offer/detail pages (`detail.1688.com/offer/<id>.html`, `m.1688.com/offer/<id>.html`), keyword-search pages (the keyword is read out and searched, GBK links included), or bare numeric offer IDs. Duplicates are collapsed before anything is fetched.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort search results by",
            "enum": [
              "default",
              "sales",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "How to order a keyword search's results. Ignored for offer URLs and IDs.",
            "default": "default"
          },
          "scrapeDetails": {
            "title": "Scrape offer detail pages (attributes, image gallery, delivery, category)",
            "type": "boolean",
            "description": "For offers found through a keyword search, fetches each offer's detail page to add the full product attribute map, the complete image gallery, delivery terms and the category id. Adds one HTTP request per offer. Offer URLs and offer IDs are read from the detail page either way, so this changes nothing for them.",
            "default": false
          },
          "priceMin": {
            "title": "Min unit price (CNY)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only offers priced at or above this, in yuan. Offers whose card shows no price are kept."
          },
          "priceMax": {
            "title": "Max unit price (CNY)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only offers priced at or below this, in yuan."
          },
          "maxMoq": {
            "title": "Max MOQ",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only offers whose minimum order quantity is at or below this. Read from the search card's quantity ladder, so it works on keyword searches with nothing else switched on; offer URLs and IDs carry it from the detail page."
          },
          "locations": {
            "title": "Supplier locations",
            "type": "array",
            "description": "Keep only suppliers whose location contains one of these. A province matches every city in it, e.g. 广东 matches 广东深圳市 and 广东佛山市. Give a single province or city and 1688 narrows the search itself, so no page is spent on offers this filter would drop. Leave empty to keep every supplier.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the number of offers returned across all keywords and URLs. On a keyword search it also decides how deep the pagination goes, at 100 offers a page up to 1688's 2,000-per-keyword cap.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Kept for template parity. Search pages and offer pages are fetched one at a time, each on its own residential session, so this has no effect on throughput today.",
            "default": 8
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxies are REQUIRED — 1688's x5sec anti-bot blocks datacenter IPs. The actor ships with a working residential pool by default; override here only if you have your own residential proxy."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}