{
  "openapi": "3.0.1",
  "info": {
    "title": "Taobao Products Scraper",
    "description": "Taobao Products Scraper SD - Taobao Products Scraper is an e-commerce data tool that extracts Taobao and Tmall products (title, CNY price, list price, discount, images, shop, seller DSR scores, location, category path, sample reviews) by keyword, category, shop or product ID, with no login.",
    "version": "1.0",
    "x-build-id": "QccvS6AgyvuACahvN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neuro-scraper~taobao-products-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neuro-scraper-taobao-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/neuro-scraper~taobao-products-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neuro-scraper-taobao-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/neuro-scraper~taobao-products-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neuro-scraper-taobao-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Products for each search term, as Taobao's public catalogue lists them, e.g. 手机壳 (phone case), 连衣裙, 蓝牙耳机. Chinese terms match best; English terms work too. A catalogue link (https://www.taobao.com/list/product/<keyword>.htm or world.taobao.com/product/...) is also accepted.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword (single)",
            "type": "string",
            "description": "One search term - same as a line in Keywords (kept for users coming from other Taobao Actors), e.g. iphone 15."
          },
          "categoryIds": {
            "title": "Category IDs or URLs",
            "type": "array",
            "description": "Taobao category ids or category links, e.g. 150704 or https://www.taobao.com/list/category/150704.htm (phone cases). The id is in the breadcrumb links of any catalogue page.",
            "items": {
              "type": "string"
            }
          },
          "shopIds": {
            "title": "Shop IDs or URLs",
            "type": "array",
            "description": "Products of a shop: a shop id or the shop's catalogue link, e.g. 72104903 or https://www.taobao.com/list/dianpu/72104903.htm. The public shop page lists up to 60 products (measured).",
            "items": {
              "type": "string"
            }
          },
          "itemUrls": {
            "title": "Product IDs or URLs",
            "type": "array",
            "description": "Single products: a numeric item id (1078907312106), an item.taobao.com / detail.tmall.com link with ?id=, or a www.taobao.com/list/item/... / world.taobao.com/item/... link. Delisted items are reported in the log and skipped.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "sales-des",
              "default",
              "credit-des",
              "price-asc",
              "price-des"
            ],
            "type": "string",
            "description": "Order of the first result page of every keyword and category (Taobao's own sort bar). Price sorts widen the result set and can surface placeholder-priced listings - combine them with a price range.",
            "default": "sales-des"
          },
          "minPrice": {
            "title": "Min price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Lowest price in yuan, e.g. 20. Sent to Taobao's price filter and also checked by the Actor on each product's current price (Taobao's filter is approximate)."
          },
          "maxPrice": {
            "title": "Max price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Highest price in yuan, e.g. 200. Sent to Taobao's price filter and also checked by the Actor on each product's current price."
          },
          "tmallOnly": {
            "title": "Tmall only",
            "type": "boolean",
            "description": "Keep only Tmall listings (the product page marks them; applied by the Actor, which then opens every product page even if 'Scrape product pages' is off).",
            "default": false
          },
          "freeShippingOnly": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Keep only products Taobao marks as free shipping (applied by the Actor).",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stops after this many products in total. Taobao shows visitors only the first 20 results of a listing (page 2 is refused, measured), so with Deep scan the Actor re-asks the same search with every sort order, the top-rated list, price bands and the page's filters until this number is reached or nothing new comes back.",
            "default": 40
          },
          "deepScan": {
            "title": "Deep scan (more results per keyword / category)",
            "type": "boolean",
            "description": "On: go beyond the first 20 results through Taobao's own sort orders, top-rated list, price bands and filter facets (deduplicated). Off: first result page only (20 per keyword or category).",
            "default": true
          },
          "scrapeDetails": {
            "title": "Scrape product pages",
            "type": "boolean",
            "description": "On: one request per product for seller id, seller type and credit level, the three seller DSR scores, shop opening date and size, ships-from location, category path, Tmall flag, payment methods and the sample review. Off: listing fields only (much faster).",
            "default": true
          },
          "fetchReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Adds the reviews Taobao publishes logged out: the sample review of each product page (so product pages are opened), up to 4 more reviews for the top items of a keyword (top-rated list) and the review tags with counts. Full review pages need a signed API the Actor does not use.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel sessions",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Product pages opened at the same time, each session with its own proxy IP and about one request every 2-3 seconds (Taobao refuses faster requests from one IP). Without a proxy the Actor uses one session.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxies (the default) spread the requests over many IPs; Taobao refuses requests that come too fast from one IP. The public catalogue answered a home connection in Bangladesh without a proxy (measured 2026-10-09).",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}