{
  "openapi": "3.0.1",
  "info": {
    "title": "1688 Scraper - 50+ Fields, Image Search, Wholesale Suppliers",
    "description": "Scrape 1688.com product prices, MOQ, suppliers and sales by keyword, image or product link. Alibaba China wholesale without login: price tiers, supplier badges, factory scores, variants, weight. Search in any language, translated titles, MOQ, city and price filters, compare with the last run.",
    "version": "0.1",
    "x-build-id": "Qaek7rhvhbZ63Bz0l"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~alibaba-1688-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-alibaba-1688-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/scrapewise~alibaba-1688-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-alibaba-1688-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/scrapewise~alibaba-1688-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-alibaba-1688-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": {
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Products to search on 1688.com, one keyword per line, for example \"phone case\", \"yoga mat\" or \"led strip\". English works because 1688 translates it; Chinese gives the most precise matches (手机壳, 瑜伽垫, 灯带). Korean, Japanese, Spanish, Russian and other languages are translated to Chinese for you. Each keyword is searched on its own, returns up to about 2,000 products, and every row says which keyword found it. Also accepts 'queries', 'searchKeywords' and 'keyword'.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Total number of products for the whole run, counting keywords, images and product links together, for example 20 for a quick test or 2000 for a full sourcing list. Empty or 0 means no total limit: each keyword then stops at 60 (unless 'Max products per keyword' is set) and each image at 'Max products per image'. You pay per product delivered, so this is also your cost cap. 'limit' also works."
          },
          "maxItemsPerKeyword": {
            "title": "Max products per keyword (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Cap for each keyword, so one broad keyword does not use the whole 'Max products' budget, for example 100. Empty = no cap per keyword when 'Max products' is set, or 60 per keyword when it is not. 0 = no cap (up to about 2,000, the most 1688 shows). Also accepts 'maxResults', 'maxProducts' and 'maxResultsPerKeyword'."
          },
          "imageUrls": {
            "title": "Image links (search by image)",
            "type": "array",
            "description": "Find 1688 suppliers from a product photo, one image link per line: any public JPG, PNG or WebP (an Amazon, AliExpress, Shopee or Temu photo, your own site, or a 1688 image). Each image returns similar 1688 products, most similar first, with the same fields as a keyword search plus 'similarityScore'. Each image is charged once as an 'Image search' event. Also accepts 'imageUrl' and 'images'.",
            "items": {
              "type": "string"
            }
          },
          "imageFile": {
            "title": "Or upload one image",
            "type": "string",
            "description": "Upload a product photo (JPG, PNG or WebP) from your computer instead of pasting a link. It is searched exactly like an image link: similar 1688 products with 'similarityScore', one 'Image search' charge. Leave empty when you use links."
          },
          "similarToOffers": {
            "title": "Similar to these 1688 products",
            "type": "array",
            "description": "1688 product links (https://detail.1688.com/offer/1057376718563.html) or numeric offer ids, one per line. The Actor takes each product's main photo and runs an image search with it, returning other suppliers selling the same or a similar item. Useful to find a cheaper factory for a product you already know. Charged like an image search. 'similarToOfferIds' also works.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerImage": {
            "title": "Max products per image",
            "minimum": 0,
            "type": "integer",
            "description": "Products returned for each image, image link or 'similar to' product, for example 20 or 100. Empty = 20. Each image search is charged once and includes up to 60 products; from the 61st product on, products are charged one by one at the normal product price. 0 = everything 1688 shows for that image (about 700). 'maxItemsPerImage' also works."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "price_low",
              "price_high",
              "sales",
              "bestSelling",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "Order 1688 applies to the keyword search: relevance (1688's own order, the default), price low to high, price high to low, or best selling. With a product limit, the order also decides which products you get, for example price low to high plus 'Max products' 50 returns the 50 cheapest. The last three options are the same orders under other names, so an input copied from another 1688 actor still works. 'sortType' also works.",
            "default": "relevance"
          },
          "minPrice": {
            "title": "Min price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Only products priced at or above this, in Chinese yuan (CNY), for example 5. The filter is sent to 1688 and checked again on every product; products outside the range are skipped and not charged. 0 or empty = no minimum. Also accepts 'priceMin'."
          },
          "maxPrice": {
            "title": "Max price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Only products priced at or below this, in Chinese yuan (CNY), for example 30. Checked on every product, and products above it are not charged. 0 or empty = no maximum. Also accepts 'priceMax'."
          },
          "province": {
            "title": "Supplier province",
            "type": "string",
            "description": "Only suppliers located in one Chinese province, written in English or Chinese, for example Guangdong (广东 or 广东省), Zhejiang (浙江), Jiangsu, Fujian, Shandong, Hebei or Shanghai. A name that is not a Chinese province returns a free error row that tells you so. Empty = all of China."
          },
          "city": {
            "title": "Supplier city",
            "type": "string",
            "description": "Only suppliers located in one city, for example Shenzhen, Guangzhou, Yiwu, Dongguan, Foshan, Ningbo or Quanzhou in English, or any city in Chinese (深圳, 义乌市, 辛集). Smaller cities must be written in Chinese; an unknown English name returns a free error row with the hint. Empty = any city."
          },
          "minOrderQuantity": {
            "title": "Max minimum order (MOQ)",
            "minimum": 0,
            "type": "integer",
            "description": "Only products whose minimum order quantity (MOQ) is at or below this number, for example 1 or 2 to buy samples or small batches. Checked on every product: when the search card does not show the MOQ, the product page is opened to confirm it, at no extra charge. Empty or 0 = any MOQ. Also accepts 'maxMoq' and 'moq'."
          },
          "merchantType": {
            "title": "Supplier badge",
            "enum": [
              "any",
              "superFactory",
              "verifiedMerchant",
              "originFlagship"
            ],
            "type": "string",
            "description": "Only suppliers with this 1688 badge: Super Factory (超级工厂), Verified merchant (实力商家, which also includes Super Factory and Origin Flagship) or Origin Flagship. Default 'Any supplier'. Every row has supplier.badge (super_factory, verified_merchant, origin_flagship or null), so you can also filter later. 'supplierType' also works.",
            "default": "any"
          },
          "excludeAds": {
            "title": "Leave out sponsored listings",
            "type": "boolean",
            "description": "1688 mixes paid placements into the search results (marked isAd: true in each row). On: sponsored listings are skipped and not charged, so you get only organic results. Off (default): they are kept and marked.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Leave out products whose title contains any of these words, one per line, for example \"handbag\" or \"sample\". English words are also matched in Chinese for you (1688 titles are in Chinese), or write the Chinese word yourself (手提包). Excluded products are not charged. Not applied to product links you paste. Also accepts 'excludeWords'.",
            "items": {
              "type": "string"
            }
          },
          "offerUrls": {
            "title": "Product links or ids",
            "type": "array",
            "description": "1688 products to read directly, one per line: product links (https://detail.1688.com/offer/1057376718563.html or the mobile m.1688.com/offer/... link) or just the numeric offer id; a comma-separated list also works. Each one opens the full product page and always returns a row: the product, or a free error row (taken down, blocked) you can retry. Also accepts 'offerIds', 'productUrls' and 'startUrls'.",
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Include full product page",
            "type": "boolean",
            "description": "Off (default): search rows come from the result cards (title, price, MOQ, sales, supplier, images). On: also opens each product page and adds variants with photos, variant options (colors, sizes, models), all attributes, the full image gallery, video, price tiers, stock, want-to-buy count, unit weight, shipping fee, ships-from, delivery days, buyer protections and the supplier's long description. Charged as one extra 'Full product page delivered' event per product that came back with it. Product links and ids always open the full page. 'includeSkuDetails' also works.",
            "default": false
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Adds the supplier's long description as raw HTML in 'descriptionHtml', for example to republish it or extract tables. It needs the full product page, so it turns on 'Include full product page' and costs the same event. Off (default): the description images and plain text still come with the full page.",
            "default": false
          },
          "compareWithPreviousRun": {
            "title": "Compare with the previous run",
            "type": "boolean",
            "description": "Keeps the last price, units sold and stock of every product in a key-value store on your account (named after this input, or after 'Snapshot name') and adds to each row: previousPrice, priceChange, priceChangePct, soldCountChange, stockAvailableChange (with the full product page), isNewProduct, firstSeenAt and previousSeenAt. On the first run every product is new. Every product is still delivered. Save the input as a Task and schedule it daily to see what changed since the previous run.",
            "default": false
          },
          "snapshotName": {
            "title": "Snapshot name (optional)",
            "type": "string",
            "description": "Name of the history to compare with. Leave empty to derive it from the keywords, images, product links and filters of this input (the same input always compares with itself). Set a new name to start a fresh history."
          },
          "translateTo": {
            "title": "Translate the output to",
            "enum": [
              "",
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "ru",
              "ja",
              "ko",
              "vi",
              "id",
              "ar",
              "tr"
            ],
            "type": "string",
            "description": "Adds an English (or other language) version of the Chinese text next to the original, so you can read and filter 1688 products without knowing Chinese. Translated: product title, supplier name and, when the full product page is loaded, attribute names and values, variant names and options, and the description text. New fields end in 'Translated' (titleTranslated, supplier.companyNameTranslated, attributes[].valueTranslated...) plus translatedTo with the language code; the original Chinese fields are never changed. Machine translation, so product jargon can come out literal. Free during the launch; later charged once per product row that comes back with at least one translated field. Off (default): output and price exactly as without this option. 'targetLanguage' and 'translateToEnglish': true also work.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Default: Apify Proxy, included at no extra cost to you. Change it only if you want to use your own proxies.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}