{
  "openapi": "3.0.1",
  "info": {
    "title": "Taobao & Tmall Scraper - Products, Prices, Shops, Ratings",
    "description": "Search Taobao in English: terms are translated to Chinese for you, titles come back in English. Taobao and Tmall without login: searches, categories, shops, product links. Price in CNY or any currency, shop, seller ratings, reviews. Errors free.",
    "version": "0.1",
    "x-build-id": "NAyId9GIN5Tdvmakj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~taobao-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-taobao-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~taobao-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-taobao-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~taobao-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-taobao-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": "What to search on Taobao, one per line, in English, Chinese or any language. A term without its own Taobao page is translated to Chinese for you and searched again (led strip is searched as 灯带), and every row says the term used in searchedAs. A Taobao search link also works. Each term returns up to about 60 products: Taobao's best sellers for the term plus its monthly top-rated list.",
            "items": {
              "type": "string"
            }
          },
          "categoryIds": {
            "title": "Category ids or links",
            "type": "array",
            "description": "Taobao category ids (50064014) or links like https://world.taobao.com/category/50064014.htm. Each returns up to 20 best-selling products of that category. The ids appear in every product row (categoryId, rootCategoryId).",
            "items": {
              "type": "string"
            }
          },
          "shopIds": {
            "title": "Shop ids or links",
            "type": "array",
            "description": "Taobao or Tmall shop ids (188555483) or links like https://world.taobao.com/dianpu/188555483.htm or https://shop188555483.taobao.com. Each returns up to 60 products of that shop. The shop id appears in every product row (shopId).",
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Product links or ids",
            "type": "array",
            "description": "One per line: item.taobao.com/item.htm?id=... or detail.tmall.com/item.htm?id=... links, world.taobao.com/item/ID.htm links, or just the numeric id. Each one returns the summary product page (always charged as 'Product page added' too).",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerSearch": {
            "title": "Max products per search, category or shop",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Upper limit for each search term, category and shop. Without login Taobao shows about 60 products per search term, 20 per category and 60 per shop, so a higher number stops there.",
            "default": 40
          },
          "maxTotalItems": {
            "title": "Max products in the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Optional cap across all searches, categories, shops and product links together. 0 or empty = no cap."
          },
          "minPrice": {
            "title": "Minimum price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Only products at or above this price in yuan, for searches, categories and shops. Products outside the range are skipped and not charged."
          },
          "maxPrice": {
            "title": "Maximum price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Only products at or below this price in yuan, for searches, categories and shops."
          },
          "freeShippingOnly": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only products Taobao marks as free shipping (searches, categories and shops).",
            "default": false
          },
          "tmallOnly": {
            "title": "Tmall only",
            "type": "boolean",
            "description": "Only Tmall products. Taobao says Tmall or Taobao only on the product page, so this turns on the product page (charged as such) for searches, categories and shops.",
            "default": false
          },
          "includeDetails": {
            "title": "Include product page",
            "type": "boolean",
            "description": "Opens the summary product page of each product found and adds: Taobao or Tmall, seller type (individual or business), credit level, shop opening date, total items, the 3 shop scores, review positive rate, review count and a short review sample, location, full image gallery, category path and payment methods. One extra request per product, charged as 'Product page added'. It is a summary page: no SKU or variant grid.",
            "default": false
          },
          "traditionalChinese": {
            "title": "Traditional Chinese text",
            "type": "boolean",
            "description": "Off: titles and names in simplified Chinese, as sellers write them on Taobao. On: the same data in traditional Chinese (Hong Kong and Taiwan style).",
            "default": false
          },
          "translateTitles": {
            "title": "Translate titles",
            "type": "boolean",
            "description": "Adds titleEnglish to every product (and textEnglish to each review in the sample) next to the original Chinese text. One translation request per page of 20 products, no extra charge. If the translation is unavailable the field is empty and the row is delivered as usual.",
            "default": false
          },
          "targetLanguage": {
            "title": "Translation language",
            "type": "string",
            "description": "Language for 'Translate titles': en (default), es, pt, fr, de, ru, ko, ja and others. Any language other than English goes to titleTranslated and textTranslated.",
            "default": "en"
          },
          "currency": {
            "title": "Extra currency (optional)",
            "type": "string",
            "description": "A 3-letter code like USD, EUR, GBP or JPY. Adds priceConverted next to the CNY price, at the day's European Central Bank reference rate. Every row already carries the price in CNY, HKD and TWD as Taobao shows it. Empty = no conversion."
          },
          "onlyNew": {
            "title": "Only new products",
            "type": "boolean",
            "description": "Remembers what each search, category and shop delivered in earlier runs (in a key-value store of your account named taobao-scraper-state) and delivers only products not seen before. Products held back are not charged. Good for a daily schedule.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Track price changes",
            "type": "boolean",
            "description": "Adds previousPrice, priceChange, isPriceDrop and firstSeenAt from earlier runs. With 'Only new products' on, products already seen are delivered again only when their price changed.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy is the default: a new IP is used whenever Taobao shows a verification page. If the datacenter keeps being refused, the Actor tries a residential IP in Singapore or Hong Kong for that request, at no extra cost to you.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}