{
  "openapi": "3.0.1",
  "info": {
    "title": "Taobao Tmall Search Scraper",
    "description": "Search public Taobao and Tmall listings by keyword or world.taobao.com product/category URL. Returns one row per product: item ID, title, CNY price, shop, Tmall flag, image, URL. Uses the crawlable overseas catalogue. Empty matches are VALID_EMPTY; blocks fail honestly. $0.005 per product.",
    "version": "0.1",
    "x-build-id": "jzUSceikxT9Qfn2m3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~taobao-tmall-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-taobao-tmall-search-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/khadinakbar~taobao-tmall-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-taobao-tmall-search-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/khadinakbar~taobao-tmall-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-taobao-tmall-search-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 keywords",
            "type": "array",
            "description": "Taobao/Tmall keywords to search, one entry per query (e.g. iphone, 机械键盘, 口红). Chinese keywords usually match more of the mainland catalogue. Each keyword opens one world.taobao.com/product page (~40 cards). This is not a product-detail URL.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Catalogue URLs",
            "type": "array",
            "description": "Optional world.taobao.com /product/{keyword}.htm or /category/{id}.htm pages to scrape directly. Use this instead of, or together with, searchQueries. item.taobao.com and detail.tmall.com product URLs are ignored because this Actor is search-only.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max products",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on billed product rows across every keyword and URL. The run stops once this many valid listings are saved. Defaults to 40 (about one catalogue page). At $0.005/product, 40 rows is $0.20 plus the $0.00005 start event.",
            "default": 40
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "sales",
              "relevance",
              "credit",
              "priceAsc",
              "priceDesc"
            ],
            "type": "string",
            "description": "Order used on the catalogue page. sales is Taobao sales ranking. relevance is comprehensive. credit ranks by seller credit. priceAsc and priceDesc sort by displayed CNY price. Applies to keyword searches.",
            "default": "sales"
          },
          "tmallOnly": {
            "title": "Tmall only",
            "type": "boolean",
            "description": "When true, keep only listings whose title or shop name marks them as Tmall (天猫/天貓). Filtered rows are not billed. Leave false to return mixed Taobao C2C and Tmall results.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Drop listings whose displayed yuan price is below this amount. Applied after extraction; unknown prices are dropped when a bound is set. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (CNY)",
            "minimum": 0,
            "type": "number",
            "description": "Drop listings whose displayed yuan price is above this amount. Applied after extraction; unknown prices are dropped when a bound is set. Leave empty for no maximum."
          },
          "expandSorts": {
            "title": "Expand across sort orders",
            "type": "boolean",
            "description": "The public catalogue serves about 40 unique products per keyword and sort. Enable this to re-query the same keyword across sales, relevance, credit, and price sorts and merge unique item IDs until maxResults. Off by default to keep MCP and test runs cheap.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy used for catalogue requests. Residential usually survives Taobao rate limits better than datacenter. Leave on Apify Proxy for cloud runs.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}