{
  "openapi": "3.0.1",
  "info": {
    "title": "Lazada Price Tracker — Price History, Stock & Sales API",
    "description": "Track Lazada prices, discounts, stock and sales on a schedule in Singapore, Malaysia, Thailand, the Philippines, Vietnam and Indonesia. Every run flags price drops, rises, restocks and new items vs the last run. Also scrapes products, search, shops and reviews. Export, API, MCP.",
    "version": "0.2",
    "x-build-id": "oTjfNM41T3fArdEDm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blueskyscraper~lazada-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blueskyscraper-lazada-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/blueskyscraper~lazada-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blueskyscraper-lazada-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/blueskyscraper~lazada-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blueskyscraper-lazada-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": "🧭 What to scrape",
            "enum": [
              "product",
              "search",
              "shop",
              "reviews"
            ],
            "type": "string",
            "description": "Pick what you need. 📦 Product details: one full row per product URL. 🔍 Search: product cards for keywords. 🏪 Shop: every product of a shop, with 7- and 30-day sales where Lazada shows them. ⭐ Reviews: review rows for product URLs.",
            "default": "product"
          },
          "productUrls": {
            "title": "📦 Product URLs or item ids",
            "type": "array",
            "description": "Add Lazada product URLs from any of the six storefronts, e.g. <code>https://www.lazada.com.my/products/pdp-i135513465-s153555036.html</code>, or bare numeric item ids (then set 🌎 Country). Used by the 📦 Product details and ⭐ Reviews modes.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "🔍 Search keywords",
            "type": "array",
            "description": "Enter keywords to search on the storefront chosen in 🌎 Country, e.g. <code>rice cooker</code>. Each keyword returns up to 💯 Max products cards with price, discount, rating, sold count and seller. Used by the 🔍 Search mode.",
            "items": {
              "type": "string"
            }
          },
          "shopUrls": {
            "title": "🏪 Shop URLs",
            "type": "array",
            "description": "Paste Lazada shop URLs as they open in the browser, e.g. <code>https://www.lazada.com.my/shop/my-mentholatum/</code>. Each shop returns its whole catalog, up to 💯 Max products. Used by the 🏪 Shop mode.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "🌎 Country",
            "enum": [
              "auto",
              "id",
              "sg",
              "my",
              "th",
              "ph",
              "vn"
            ],
            "type": "string",
            "description": "Lazada storefront. Required for 🔍 Search, because keywords carry no country. URLs always use their own storefront, so leave it on Auto for them.",
            "default": "auto"
          },
          "maxItems": {
            "title": "💯 Max products",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Set how many products to return per keyword, per shop, or in total for product URLs (also caps how many products the ⭐ Reviews mode reads). Keeps the bill predictable.",
            "default": 100
          },
          "maxReviewsPerProduct": {
            "title": "⭐ Max reviews per product ($)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Set how many reviews to collect per product in the ⭐ Reviews mode. Each review is billed as one Review event.",
            "default": 20
          },
          "reviewsRating": {
            "title": "⭐ Only reviews with rating",
            "enum": [
              "all",
              "5",
              "4",
              "3",
              "2",
              "1"
            ],
            "type": "string",
            "description": "Keep only reviews with this star rating (⭐ Reviews mode). Lazada filters them itself, so you pay only for the reviews you asked for.",
            "default": "all"
          },
          "includeSpecifications": {
            "title": "Include specifications",
            "type": "boolean",
            "description": "Add the specification table (brand, SKU, material, dimensions…) to every product row. Included in the Product detail price.",
            "default": true
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Add the plain-text product description to every product row. Turn off to keep rows compact.",
            "default": true
          },
          "watchlistName": {
            "title": "📈 Watchlist name (price & stock monitoring)",
            "type": "string",
            "description": "Give your list a name, for example my-competitors, and schedule the Actor daily or hourly. Each run is compared with the previous run of the same watchlist: every row gets changeType (new, price-down, price-up, stock, unchanged), previousPrice, priceChange, priceChangePercent, stockChanged and soldDelta. The history is kept in a named key-value store on your own account (lazada-watch-<name>). Free — no extra charge."
          },
          "previousDatasetId": {
            "title": "📈 Compare with a previous run dataset",
            "type": "string",
            "description": "Optional one-off comparison: pick the dataset of an earlier run. Every row then gets changeType, previousPrice, priceChange, priceChangePercent, stockChanged, soldDelta, soldLast7DaysDelta, daysSincePrevious and isNew. For scheduled monitoring use the watchlist name above instead. Free."
          },
          "parallelism": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Set how many product requests run at once inside one warm Lazada session (📦 Product details mode). 4 balances speed and anti-bot tolerance.",
            "default": 4
          },
          "proxyMode": {
            "title": "Proxy strategy",
            "enum": [
              "own-first",
              "apify-only",
              "own-only"
            ],
            "type": "string",
            "description": "Own pool first tries the Actor's built-in residential pool and falls back to Apify Proxy when a country refuses it. Apify Proxy only always uses Apify Proxy. Own pool only never falls back.",
            "default": "own-first"
          },
          "proxyUrl": {
            "title": "Custom proxy URL (optional)",
            "type": "string",
            "description": "Bring your own residential proxy in the storefront's country, e.g. <code>http://user:pass@host:port</code>. When set, it replaces the built-in pool."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}