{
  "openapi": "3.0.1",
  "info": {
    "title": "Taobao Category Products Scraper",
    "description": "Scrape Taobao products by category from its 20 top-level feeds. Each row has the Chinese title, price in yuan, image, product link, SKU id, leaf category, seller id and shop id. Category browsing, not keyword search. No account needed. $1.95 per 1,000 products.",
    "version": "0.1",
    "x-build-id": "EsngYktJtA7gMlG7M"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~taobao-category-products-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-taobao-category-products-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/dami_studio~taobao-category-products-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-taobao-category-products-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/dami_studio~taobao-category-products-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-taobao-category-products-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": {
          "categories": {
            "title": "Taobao categories",
            "type": "array",
            "description": "Which Taobao categories to browse. Pick as many as you like, they are drained side by side. This is a category browser, NOT a keyword search: there is no search box in Taobao's category feed, so you cannot ask it for \"red shoes\".",
            "items": {
              "type": "string",
              "enum": [
                "industrial",
                "building-materials",
                "home",
                "pets",
                "smart-appliances",
                "commercial-agri",
                "daily-goods",
                "sports-outdoor",
                "fashion",
                "jewellery",
                "stationery",
                "food-fresh",
                "unlisted-109",
                "toys",
                "flowers-garden",
                "auto",
                "unlisted-206",
                "3c-digital",
                "appliances",
                "digital-life"
              ],
              "enumTitles": [
                "Industrial supplies 工业用品 (~982 products)",
                "Building & renovation 家装建材 (~291)",
                "Home & living 家享家居 (~230)",
                "Pet supplies 宠物生活 (~217)",
                "Smart appliances 智能家电 (~190)",
                "Commercial & agriculture 商业农业 (~152)",
                "Daily goods 日用百货 (~148)",
                "Sports & outdoor 运动户外 (~125)",
                "Fashion & apparel 服饰时尚 (~116)",
                "Jewellery & accessories 珠宝饰品 (~109)",
                "Stationery & fragrance 文教香薰 (~94)",
                "Food & fresh produce 食品生鲜 (~91)",
                "Unlisted feed 109 (~79)",
                "Toys & collectibles 玩具潮玩 (~60)",
                "Flowers & garden 鲜花园艺 (~59)",
                "Automotive 汽车用品 (~56)",
                "Unlisted feed 206 (~51)",
                "3C & digital 3C数码 (~37)",
                "Home appliances 家用电器 (~34)",
                "Digital services 数字生活 (~12)"
              ]
            }
          },
          "maxItems": {
            "title": "Maximum products",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on products returned across every category selected (1-5000). Each category has a finite pool that runs out, the whole catalogue across all 20 is roughly 3,100 unique products, so asking for more than a category holds simply stops early. You are charged per product returned."
          },
          "minPriceCny": {
            "title": "Minimum price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Leave out products cheaper than this many yuan. Products left out are not written and not charged. While a price bound is set, products the feed shows no price for are left out too, also free. The feed has no price setting, so a narrow range means more pages read for the same number of products. Empty or 0 means no minimum."
          },
          "maxPriceCny": {
            "title": "Maximum price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Optional. Leave out products dearer than this many yuan. Left-out products are not written and not charged. Empty or 0 means no maximum."
          },
          "leafCategoryIds": {
            "title": "Only these sub-categories",
            "type": "array",
            "description": "Optional. Keep only products in these Taobao sub-categories: the leafCategoryId values on rows from an earlier run, for example 50015322. Products in other sub-categories are left out and not charged. A sub-category only turns up inside the category it belongs to, so tick that category above.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Order of the rows",
            "enum": [
              "feed",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "Feed order writes products as they arrive, as before. A price sort holds this run's products until the categories are done, then writes them cheapest or dearest first; products with no price go last. It sorts the products this run picks up, up to Maximum products, so to sort a whole category set Maximum products above its size.",
            "default": "feed"
          },
          "maxPagesPerCategory": {
            "title": "Maximum pages per category",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How deep to page inside one category before moving on (1-200). Each page returns 7-25 products and the deepest categories need 40-70 pages to bottom out. Raise it for a full drain of a big category, lower it for a quick sample."
          },
          "deeplApiKey": {
            "title": "Your DeepL API key",
            "type": "string",
            "description": "Optional. Put your own DeepL API key here and each product's Chinese title is also translated into English, in a new field, titleEn. The original title stays as it is, and nothing else is translated. DeepL counts the title characters against your DeepL account (titles are short, mostly under 40 characters); this actor charges nothing extra for it. If DeepL refuses the key, your characters run out or DeepL can't be reached, the products still come back with titleEn empty, plus one free row saying why. Leave this empty and the run is exactly as before. DeepL's own terms apply to your key and to what you do with the English titles."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Leave this alone unless you need the run to go out through a particular network. Your own proxy servers are used exactly as given."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}