{
  "openapi": "3.0.1",
  "info": {
    "title": "1688 Wholesale Scraper [Only $1] Keyword & Photo Search",
    "description": "[Only $1 per 1000 offers] Search 1688.com by keyword (English is translated to Chinese), by photo, or paste any offer URL or ID. Each row: tier pricing, MOQ, supplier, location, USD price and images. Filter by price, MOQ and province before you are billed. No login.",
    "version": "1.0",
    "x-build-id": "gnDijCvKddWRGQO2E"
  },
  "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"
            }
          },
          "imageUrls": {
            "title": "Image search (photo links)",
            "type": "array",
            "description": "Links to product photos (.jpg, .png, .webp, up to 5 MB): an Amazon, AliExpress, Shopify or your own picture. Each photo is searched on 1688 and returns the offers that look like it, 100 a page, each row carrying the photo in sourceImageUrl. Billed per offer like a keyword search.",
            "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, gallery, stock, video, dropship)",
            "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, the category id, units in stock, exact units sold, the mixed-batch rule (混批), one-piece dropshipping (一件代发), the product video and the buyer-protection services. Adds one HTTP request per offer. Offer URLs and offer IDs are read from the detail page either way.",
            "default": false
          },
          "includeSkuDetails": {
            "title": "Include SKU variants",
            "type": "boolean",
            "description": "Add every offer's variant matrix: variantAxes (颜色, 尺码, 型号 and so on, with option images) and variants, one entry per SKU with each axis value named apart, skuId, its own price or promotional price where it has one, and stock. One extra request per offer; the row is still delivered, without variants, if 1688 refuses it. Works with or without detail pages.",
            "default": false
          },
          "includeDescription": {
            "title": "Include the long description",
            "type": "boolean",
            "description": "Add the seller's long description (详情) as plain text (descriptionText) and the images inside it (descriptionImages). Needs the offer page, so this turns on detail pages for the run. One extra request per offer to 1688's public image CDN.",
            "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"
            }
          },
          "manufacturersOnly": {
            "title": "Manufacturers only",
            "type": "boolean",
            "description": "Keep only offers from manufacturers: suppliers listed as 生产加工 (production), super factories (超级工厂) and on-site inspected factories. Traders and wholesalers are dropped before billing.",
            "default": false
          },
          "includeSupplierList": {
            "title": "Supplier list",
            "type": "boolean",
            "description": "After the offers, return one row per supplier behind them (type: supplier): name, location, manufacturer or trader, factory badges, years on 1688, repurchase rate, service scores, how many of the run's offers it has, its lowest price and up to 5 sample offers. Billed per row like an offer.",
            "default": false
          },
          "excludeAds": {
            "title": "Skip sponsored offers",
            "type": "boolean",
            "description": "Leave out offers placed by paid ads (isAd: true). Skipped offers are not billed.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Exclude words in title",
            "type": "array",
            "description": "Drop offers whose title contains any of these words, Chinese or English, case-insensitive. Useful when a keyword has a second meaning, e.g. 夹板 also matches 电夹板 hair straighteners. Dropped offers are not billed.",
            "items": {
              "type": "string"
            }
          },
          "translateKeywords": {
            "title": "Translate English keywords to Chinese",
            "type": "boolean",
            "description": "Search queries written in English (yoga mat, phone case) are machine-translated to the Chinese words 1688 matches best before searching. Each row keeps the Chinese keyword in sourceQuery and your original in sourceQueryOriginal. Chinese queries are searched as typed.",
            "default": true
          },
          "translateToEnglish": {
            "title": "English translation",
            "type": "boolean",
            "description": "Add titleEn and supplierNameEn, machine-translated from the Chinese. The Chinese originals stay in title and supplierName.",
            "default": false
          },
          "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": "Offer pages opened at once when Scrape details is on (up to 8), each on its own residential session. Search pages are fetched one at a time.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}