# Lazada Price Monitor & Product Scraper (`khadinakbar/lazada-price-monitor`) Actor

Monitor public Lazada product prices and availability across six Southeast Asian marketplaces for catalog research and competitor tracking. Returns source-linked product records with price, seller, rating, and stock. Excludes accounts, orders, checkout, and private data. $0.01 per product.

- **URL**: https://apify.com/khadinakbar/lazada-price-monitor.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** E-commerce, Automation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 public lazada product observeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Lazada Price Monitor & Product Scraper

**Lazada Price Monitor & Product Scraper** collects public product listing data from one Lazada marketplace per run: Singapore, Malaysia, Philippines, Thailand, Vietnam, or Indonesia. Use it for price monitoring, catalog research, competitor assortment checks, and sourcing analysis. It returns clean, source-linked product records for agents, spreadsheets, and data pipelines.

Use this Actor when you need public product prices, discounts, seller names, ratings, stock signals, and collection timestamps from a Lazada search, category, or product page. Do not use it for Lazada accounts, messages, checkout, orders, customer data, private seller data, or any flow requiring authentication.

### What data it returns

Each dataset item is one public Lazada product record. The schema is stable across runs, with `null` used when Lazada does not expose a particular field.

| Field                                                   | Description                                               |
| ------------------------------------------------------- | --------------------------------------------------------- |
| `title`, `productUrl`, `productId`                      | Public product identity and canonical URL                 |
| `price`, `originalPrice`, `discountPercent`, `currency` | Current public price signals in the marketplace currency  |
| `availability`, `rating`, `reviewCount`, `soldCount`    | Public listing performance and stock signals when exposed |
| `sellerName`, `sellerUrl`                               | Public shop identity when Lazada exposes it               |
| `marketplace`, `sourceUrl`, `scrapedAt`                 | Country, provenance, and freshness                        |

### Pricing

This Actor uses Pay per event + usage:

- `apify-actor-start`: $0.00005 per GB of allocated memory, with a minimum of one event (automatic).
- `product-observed`: $0.01 per schema-valid public product record written to the default dataset.
- Platform compute and residential-proxy usage are charged separately by Apify under the enabled usage pass-through setting.

`maxResults` is both the output and product-event cap. For example, a run with `maxResults: 10` has at most **$0.10** in product events, plus automatic start events and platform usage. The Actor writes its event counts to `OUTPUT` and `RUN_SUMMARY`.

### How to use it

Choose exactly one marketplace per run. You can start from search terms, known public Lazada URLs, or both. For URL input, each URL must use the selected marketplace domain.

```json
{
    "searchQueries": ["wireless earbuds"],
    "country": "sg",
    "maxResults": 10,
    "maxPages": 1,
    "responseFormat": "concise"
}
````

For a known Singapore product or catalog page:

```json
{
    "startUrls": ["https://www.lazada.sg/catalog/?q=wireless+earbuds"],
    "country": "sg",
    "maxResults": 10
}
```

`responseFormat: "detailed"` asks the Actor to retain public brand and category values when Lazada exposes them. It never expands the scope into private data.

### Output example

```json
{
    "productId": "123456789",
    "title": "Wireless Earbuds",
    "productUrl": "https://www.lazada.sg/products/example-i123456789.html",
    "sourceUrl": "https://www.lazada.sg/catalog/?q=wireless+earbuds&page=1",
    "marketplace": "sg",
    "currency": "SGD",
    "price": 29.9,
    "originalPrice": 39.9,
    "discountPercent": 25,
    "rating": 4.8,
    "reviewCount": 18,
    "soldCount": null,
    "sellerName": "Audio Store",
    "sellerUrl": null,
    "imageUrl": "https://img.lazcdn.com/example.jpg",
    "availability": "in_stock",
    "brand": null,
    "category": null,
    "isSponsored": false,
    "dataSource": "browser-response",
    "scrapedAt": "2026-07-14T12:00:00.000Z"
}
```

### Reliability and limits

The Actor uses a single stable residential browser session, country-matched proxy routing, bounded search pagination, browser-delivered response capture, and a public-DOM fallback. It does not call a private Lazada API, use login cookies, or attempt to bypass access controls.

Lazada can change its public pages or present a verification challenge. If the Actor collects some records before an interruption, it succeeds with `PARTIAL` and preserves those records. If valid input cannot return usable public data after retries, it fails honestly with `UPSTREAM_FAILED`. Valid but non-matching searches finish as `VALID_EMPTY`; invalid URLs finish as `INVALID_INPUT` with a correction hint.

### API and agent use

The Actor is available through the Apify API and hosted Apify MCP. Its input schema describes exactly when to use a search query versus a URL, and its dataset schema provides typed product records for downstream agents. For a larger response, paginate the default dataset using its dataset ID rather than increasing an unbounded run.

### Compliance

Only collect public data you are authorized to access and use. You are responsible for complying with Lazada's current terms, applicable laws, and your organization’s data-use obligations. Do not use this Actor to access accounts, customer data, messages, orders, checkout flows, restricted content, or personal data.

### Feedback

If a public Lazada page changes or a field is missing, include the marketplace, a non-sensitive public example URL, run ID, and the expected field in an issue report.

# Actor input Schema

## `searchQueries` (type: `array`):

Use this when you want public Lazada product listings for a keyword. Enter short search text such as 'wireless earbuds'. Defaults to 'wireless earbuds' only when no target field is supplied. This is not a product URL; use Start URLs for known Lazada pages.

## `startUrls` (type: `array`):

Use this when you already know Lazada search, category, or product pages to monitor. Enter HTTPS URLs such as 'https://www.lazada.sg/catalog/?q=wireless+earbuds'. URLs must use the selected marketplace domain. This field is not for arbitrary websites or account pages.

## `country` (type: `string`):

Use this to choose the single Lazada marketplace and matching residential proxy region for the run. Select 'sg' for Singapore, for example. Defaults to 'sg' and every supplied URL must use that country's Lazada domain. This is not a shipping-destination or currency-conversion setting.

## `maxResults` (type: `integer`):

Use this to cap returned and billable product records for the whole run. Enter an integer such as 10. Defaults to 10 and accepts 1 through 100, limiting product event charges to $0.01 per persisted record. This is not a page-count setting; use Max pages for search pagination.

## `maxPages` (type: `integer`):

Use this to control how many public catalog pages each search query visits. Enter a small integer such as 1. Defaults to 1 and accepts 1 through 3 while Max results remains the hard output and charge cap. This is not used to crawl unrelated site links.

## `responseFormat` (type: `string`):

Use this to choose whether optional brand and category fields are collected when Lazada exposes them. Select 'concise' for price-monitoring rows or 'detailed' for richer catalog context. Defaults to 'concise' and does not change core price, seller, rating, or provenance fields. This is not a request to access private product or seller data.

## Actor input object example

```json
{
  "searchQueries": [
    "wireless earbuds"
  ],
  "startUrls": [
    "https://www.lazada.sg/catalog/?q=wireless+earbuds"
  ],
  "country": "sg",
  "maxResults": 10,
  "maxPages": 1,
  "responseFormat": "concise"
}
```

# Actor output Schema

## `results` (type: `string`):

Structured public product price-monitoring records.

## `output` (type: `string`):

Compact terminal outcome, counters, warnings, and charged event counts.

## `runSummary` (type: `string`):

Detailed terminal diagnostics, request counts, and cost-cap state.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "wireless earbuds"
    ],
    "country": "sg",
    "maxResults": 10,
    "maxPages": 1,
    "responseFormat": "concise"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/lazada-price-monitor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["wireless earbuds"],
    "country": "sg",
    "maxResults": 10,
    "maxPages": 1,
    "responseFormat": "concise",
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/lazada-price-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "wireless earbuds"
  ],
  "country": "sg",
  "maxResults": 10,
  "maxPages": 1,
  "responseFormat": "concise"
}' |
apify call khadinakbar/lazada-price-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/lazada-price-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Lazada Price Monitor & Product Scraper",
        "description": "Monitor public Lazada product prices and availability across six Southeast Asian marketplaces for catalog research and competitor tracking. Returns source-linked product records with price, seller, rating, and stock. Excludes accounts, orders, checkout, and private data. $0.01 per product.",
        "version": "1.0",
        "x-build-id": "mMvxeq5Mp4L7fMr7c"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~lazada-price-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-lazada-price-monitor",
                "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~lazada-price-monitor/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-lazada-price-monitor",
                "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~lazada-price-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-lazada-price-monitor",
                "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": "Lazada search queries",
                        "minItems": 1,
                        "maxItems": 10,
                        "type": "array",
                        "description": "Use this when you want public Lazada product listings for a keyword. Enter short search text such as 'wireless earbuds'. Defaults to 'wireless earbuds' only when no target field is supplied. This is not a product URL; use Start URLs for known Lazada pages.",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 150
                        }
                    },
                    "startUrls": {
                        "title": "Lazada start URLs",
                        "minItems": 1,
                        "maxItems": 10,
                        "type": "array",
                        "description": "Use this when you already know Lazada search, category, or product pages to monitor. Enter HTTPS URLs such as 'https://www.lazada.sg/catalog/?q=wireless+earbuds'. URLs must use the selected marketplace domain. This field is not for arbitrary websites or account pages.",
                        "items": {
                            "type": "string",
                            "minLength": 15,
                            "maxLength": 2048
                        }
                    },
                    "country": {
                        "title": "Lazada marketplace",
                        "enum": [
                            "sg",
                            "my",
                            "ph",
                            "th",
                            "vn",
                            "id"
                        ],
                        "type": "string",
                        "description": "Use this to choose the single Lazada marketplace and matching residential proxy region for the run. Select 'sg' for Singapore, for example. Defaults to 'sg' and every supplied URL must use that country's Lazada domain. This is not a shipping-destination or currency-conversion setting.",
                        "default": "sg"
                    },
                    "maxResults": {
                        "title": "Maximum product records",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Use this to cap returned and billable product records for the whole run. Enter an integer such as 10. Defaults to 10 and accepts 1 through 100, limiting product event charges to $0.01 per persisted record. This is not a page-count setting; use Max pages for search pagination.",
                        "default": 10
                    },
                    "maxPages": {
                        "title": "Maximum search pages",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Use this to control how many public catalog pages each search query visits. Enter a small integer such as 1. Defaults to 1 and accepts 1 through 3 while Max results remains the hard output and charge cap. This is not used to crawl unrelated site links.",
                        "default": 1
                    },
                    "responseFormat": {
                        "title": "Response detail",
                        "enum": [
                            "concise",
                            "detailed"
                        ],
                        "type": "string",
                        "description": "Use this to choose whether optional brand and category fields are collected when Lazada exposes them. Select 'concise' for price-monitoring rows or 'detailed' for richer catalog context. Defaults to 'concise' and does not change core price, seller, rating, or provenance fields. This is not a request to access private product or seller data.",
                        "default": "concise"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
