{
  "openapi": "3.0.1",
  "info": {
    "title": "Lazada Scraper [Only $1💰] | SEA Prices | Reviews | Data",
    "description": "Monitor Lazada prices and extract product, seller and review data across six Southeast Asia markets (Singapore, Malaysia, Thailand, Indonesia, Philippines, Vietnam). Track price, original price, discount, rating, units sold, seller, brand and LazMall flag per keyword. Pay only per result.",
    "version": "0.1",
    "x-build-id": "0jYpVoNyGDppBlzqr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ahmed_jasarevic~lazada-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-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/ahmed_jasarevic~lazada-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ahmed_jasarevic-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/ahmed_jasarevic~lazada-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ahmed_jasarevic-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",
        "required": [
          "mode",
          "country"
        ],
        "properties": {
          "mode": {
            "title": "Run mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "How to start scraping:\n\n- **Search by keyword** — run one or more search queries on the selected country sites.\n- **Crawl specific URLs** — walk the exact Lazada pages you provide (search or product URLs).",
            "default": "search"
          },
          "country": {
            "title": "Country sites",
            "type": "array",
            "description": "Pick one or more Lazada country sites (multi-select dropdown). Each selected market is searched with every keyword below.",
            "items": {
              "type": "string",
              "enum": [
                "SG",
                "MY",
                "TH",
                "ID",
                "PH",
                "VN"
              ],
              "enumTitles": [
                "Singapore (lazada.sg)",
                "Malaysia (lazada.com.my)",
                "Thailand (lazada.co.th)",
                "Indonesia (lazada.co.id)",
                "Philippines (lazada.com.ph)",
                "Vietnam (lazada.vn)"
              ]
            },
            "default": [
              "SG"
            ]
          },
          "queries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Only used in **Search by keyword** mode. One or more keywords to search for on Lazada (e.g. \"headphone\", \"iphone 15\"). Each keyword is searched in every selected country.",
            "default": [
              "headphone"
            ],
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Lazada URLs",
            "type": "array",
            "description": "Only used in **Crawl specific URLs** mode. Paste one or more Lazada URLs:\n\n- Search URL: `https://www.lazada.sg/catalog/?q=iphone`\n- Tag URL: `https://www.lazada.sg/tag/iphone-15/`\n- Product URL: `https://www.lazada.sg/products/pdp-i2866897728.html`\n\nThe country is detected from the domain; URLs outside the selected country sites are skipped.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerKeyword": {
            "title": "Max items per keyword / URL",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of products to scrape per keyword per country (search mode) or per URL (URL mode). Lazada's search page returns up to 40 products per page; the Actor fetches more pages automatically when you set a higher limit.",
            "default": 40
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Drop products whose average rating is below this value (0–5). Set to 0 to keep everything.",
            "default": 0
          },
          "fetchReviews": {
            "title": "Fetch product reviews",
            "type": "boolean",
            "description": "Scrape each product's top customer reviews. Reviews are stored as individual records in a separate **Reviews** dataset, so they stay out of the products dataset. **Tip:** the reviews API is protected by stricter anti-bot checks than search — to reliably fetch reviews, enable the **Apify Residential** proxy in the Proxy configuration below.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on the number of reviews scraped per product when **Fetch product reviews** is on. Lazada's reviews API returns ~5 reviews per page, so larger values simply crawl more pages.",
            "default": 10
          },
          "reviewConcurrency": {
            "title": "Review fetch concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many products are fetching reviews at the same time. Reviews reuse the marketplace's clean browser session, so keeping this low protects that session from rate limiting. 3 is a good default; lower to 1 (fully sequential) if you see empty reviews, raise up to 5 for speed with residential proxies enabled.",
            "default": 3
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Select proxies to be used by the crawler. **Default: Apify Residential** — Lazada blocks datacenter IPs and protects search/reviews with a JavaScript anti-bot check; residential proxies are required for reliable runs. If no proxy group is selected, the Actor automatically falls back to RESIDENTIAL. Residential IPs are geo-targeted to each Lazada country site. The Actor launches one headless browser per market to pass the anti-bot check, then reuses that session over HTTP; gated sessions are rotated to fresh IPs automatically.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}