{
  "openapi": "3.0.1",
  "info": {
    "title": "Watsons Product Scraper | PH HK TW TH Data",
    "description": "Scrape Watsons health and beauty products across the Philippines, Hong Kong, Taiwan, and Thailand. Extract guest prices, brands, EAN, ratings, and stock from search, category PLP, PDP, reviews, and brand listings. Export to Excel, CSV, or JSON. No login. Unofficial — not affiliated with A.S. Watson.",
    "version": "0.1",
    "x-build-id": "RvbnFzD0303j0chw8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lentic_clockss~watsons-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lentic_clockss-watsons-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/lentic_clockss~watsons-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lentic_clockss-watsons-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/lentic_clockss~watsons-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lentic_clockss-watsons-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "category",
              "product",
              "reviews",
              "taxonomies",
              "brand"
            ],
            "type": "string",
            "description": "What to collect. Search uses keyword. Category needs a market-specific /c/ code (do not reuse PH codes on TW/TH). Product needs BP_ code. Taxonomies dumps facet category codes. Brand needs Solr facet token brandCode (e.g. ANUA), not numeric masterBrand.code.",
            "default": "search"
          },
          "market": {
            "title": "Market",
            "enum": [
              "ph",
              "hk",
              "tw",
              "th"
            ],
            "type": "string",
            "description": "Watsons storefront. Category codes and default page size differ (TH=64, others=32).",
            "default": "ph"
          },
          "locale": {
            "title": "Locale",
            "type": "string",
            "description": "Optional. HK: en, zh-hk, or zh-cn. TH: th or en. PH: en. TW: zh-tw. Empty uses the market default."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Search text (HTML ?text=). Used in keyword search mode.",
            "default": "vitamin"
          },
          "categoryCode": {
            "title": "Category code",
            "type": "string",
            "description": "Required for category mode. Examples: PH 031130 or 060809, HK 010102 / 310000 / 100404, TW 10410101 or 10450703, TH 010201 or 020106. Never reuse codes across markets. Not /lc/ codes."
          },
          "productCode": {
            "title": "Product code",
            "type": "string",
            "description": "Required for product/reviews mode. Format BP_{digits}, e.g. BP_10098771."
          },
          "brandCode": {
            "title": "Brand code",
            "type": "string",
            "description": "Required for brand mode. Solr facet token from /all-brands/b/{token}/{slug}, e.g. ANUA. Do not pass numeric masterBrand.code."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "",
              "mostRelevant",
              "bestSeller",
              "brand",
              "new",
              "topRated",
              "price-asc",
              "price-desc",
              "flashSaleQuota"
            ],
            "type": "string",
            "description": "Search default mostRelevant. Category default bestSeller.",
            "default": ""
          },
          "currentPage": {
            "title": "Start page (0-based)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "OCC currentPage. 0 is the first page. Not ?page=.",
            "default": 0
          },
          "enrichReviews": {
            "title": "Attach reviews",
            "type": "boolean",
            "description": "Also fetch paginatedReviews for the first few product codes (guest).",
            "default": false
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional Watsons page URLs (/search?text=, /c/{code}, /p/BP_…). /lc/ CMS shelves are rejected.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Cap Dataset rows.",
            "default": 1
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Max OCC currentPage fetches.",
            "default": 1
          },
          "proxyCountry": {
            "title": "Proxy country",
            "type": "string",
            "description": "ISO2 hint for worker egress. Defaults to the selected market (ph/hk/tw/th).",
            "default": ""
          },
          "workerBaseUrl": {
            "title": "Worker base URL (optional)",
            "type": "string",
            "description": "Override the worker origin for this run. Defaults to Actor env WORKER_BASE_URL.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}