# Lazada Scraper (`dtrungtin/lazada-scraper`) Actor

Unofficial Lazada API to extract data from Lazada based on keywords or categories. Scrape prices, product descriptions, images, location, availability, brand, and more. Download extracted data in structured format and use it in reports, spreadsheets, databases, and applications.

- **URL**: https://apify.com/dtrungtin/lazada-scraper.md
- **Developed by:** [Tin](https://apify.com/dtrungtin) (community)
- **Categories:** E-commerce
- **Stats:** 397 total users, 13 monthly users, 100.0% runs succeeded, 6 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 results

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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 Items Scraper extracts all and any items from any category page on Lazada or by the specific keyword, provided you copy&paste the search URL. Download your data as HTML or Excel table, as well as in JSON, CSV or XML format. 

**How to use the data extracted from Lazada:**
- **Establish automated price and bidding monitoring** -  scan dozens e-commerce items and products  in real-timeto adjust your own buying or pricing strategies.
- **Track competitors' prices** - track listings, product, and sales data from various online stores to compare with competitor's and bidder's prices, and back up your decision-making process with real data. 
- **Facilitate market analysis** - scan and analyze Lazada for images, products, related keywords, whole new categories and more to stay ahead of emerging trends and consumer habits. 
- **Optimize performance and implement lightweight automation** - collect data about products easily, non-manually, be it for market research, machine learning or new product development.

For more ideas on how to use data extracted from Lazada, check out our  [industries pages](https://apify.com/industries) which describe **at least 12 ways** of how web scraping data is used across the projects and businesses of various scale and direction, specifically in the area of [retail and e-commerce](https://apify.com/industries/ecommerce-and-retail).

### Cost of usage
Keep in mind that it is much more efficient to run one longer scrape (at least one minute) than a few shorter ones.  because of the startup time. In average, this scraper will cost you around **0.06 USD** per 1000 items. For more details, see the [platform pricing page](https://apify.com/pricing/actors).
If you’re not sure how much CUs you have left on your plan and whether you might need to upgrade, you can always check your limits in the *Settings -> Usage and Billing* tab in  [your Console](https://console.apify.com/). The easiest way to know how many CUs you will need is to *perform a test run.*

### Input Parameters
This actor will need only two settings from you - **a link** and a **proxy**: 
 - **startUrls** *(required)*: List of [Request objects](https://sdk.apify.com/docs/api/request#docsNav), specifying the search queries/categories you want to scrape. The URL can be any search/category page on Lazada.
 - **maxPages** *(required)*: Limit of pages to be scraped.
 - **proxyConfiguration** *(required)*: Specifies the proxy settings used while running the actor. When running this actor on the platform, the proxy setting must always be set on. The default value is  `{ "useApifyProxy": true }`

#### Example
```json
{
  "startUrls": [
    {
      "url": "https://www.lazada.com.ph/catalog/?q=phone"
    },
    {
      "url": "https://www.lazada.co.id/beli-handphone/"
    }
  ],
  "maxPages": 10,
  "proxyConfig": {
    "useApifyProxy": true
  }
}
````

### Output

After the Lazada actor finishes the scraping run, it will store the scraped results in a dataset and show them to you as output results. The results can be downloaded in various formats.

#### Output example:

```json
[{
  "url": "https://www.lazada.com.ph/products/buy-1-get-1good-quality-keypad-mobile-phone-classic-cellphone2610-i1052132393.html",
  "name": "【Buy 1 get 1】Good Quality Keypad Mobile Phone Classic Cellphone(2610)",
  "image": "https://ph-live-01.slatic.net/p/37a1c9772f1ee7eed5d5b46297968001.jpg",
  "priceShow": "₱527.36",
  "discount": "67%off",
  "location": "Metro Manila",
  "description": [
    "2G connectivity for calling and textingFM radio and MP3 player for music16 MB storage4 plus a MicroSD card slot with support up to 32 GBBeautiful push buttons and iconic, shaped design2 MP camera with LED flash for simple snapsAll-new UI with nods to the originalAwesome battery life, with up to 22 hours talk timeHeadphone jack for your tunes1.77&rdquo; curved window with polarized layer for better readability in sunlight"
  ],
  "sellerName": "Japan Shop 1583415983",
  "brandName": "No Brand",
  "price": "527.36",
  "inStock": true,
  "originalPrice": "1599",
  "listUrl": "https://www.lazada.com.ph/catalog/?q=phone"
}]
```

Note that the search results may vary if you're executing scraping from different locations. We recommend to use the proxies for the best scraping results from the same location.

### Proxy usage

This actor, as many scrapers in the [retail industry](https://apify.com/industries/ecommerce-and-retail), will require you to use **Proxy servers** to function properly.
We don't recommend running it on a free account for more complicated tasks than getting a sample of results. If you are planning to run this scraper for getting more than a few results, subscribing to the [Apify platform](https://console.apify.com/sign-up) will provide you with access to a large pool of proxies.

### Supported countries

This actor supports scraping Lazada in the following countries and domains:

- 🇮🇳 **IN** - https://www.lazada.co.in
- PH **PH** - https://www.lazada.com.ph
- MY **MY** - https://www.lazada.com.my
- SG **SG** - https://www.lazada.sg
- TH **TH** - https://www.lazada.com.th
- VN **VN** - https://www.lazada.vn

If you'd like any more countries and domains to be added to this scraping list, please email <dtrungtin@gmail.com> with your request.

### Other e-commerce scrapers

We have many more e-commerce and retail scrapers in stock for you; to see the list of those, check out the [E-commerce Category in Apify Store](https://apify.com/store?category=ECOMMERCE).

### Need to find product pairs between Lazada and another online shop?

Use the [AI Product Matcher](https://apify.com/equidem/ai-product-matcher). This AI model allows you to compare items from different web stores, identifying exact matches and comparing real-time data obtained via web scraping. With the AI Product Matcher, you can use scraped product data to monitor product matches across the industry, implement dynamic pricing for your website, replace or complement manual mapping, and obtain realistic estimates against your competition for upcoming promo campaigns.

Most importantly, it is relatively easy to get started with (just follow [this guide](https://blog.apify.com/product-matching-ai-pricing-intelligence-web-scraping/)) and is able to match thousands of product pairs.

# Actor input Schema

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

URLs to start with.

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

Limit of pages to be scraped

## `proxyConfig` (type: `object`):

It's required to use proxies when running on the platform.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.lazada.co.id/beli-handphone/"
    }
  ],
  "maxPages": 2,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.lazada.co.id/beli-handphone/"
        }
    ],
    "maxPages": 2,
    "proxyConfig": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dtrungtin/lazada-scraper").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 = {
    "startUrls": [{ "url": "https://www.lazada.co.id/beli-handphone/" }],
    "maxPages": 2,
    "proxyConfig": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("dtrungtin/lazada-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.lazada.co.id/beli-handphone/"
    }
  ],
  "maxPages": 2,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call dtrungtin/lazada-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Lazada Scraper",
        "description": "Unofficial Lazada API to extract data from Lazada based on keywords or categories. Scrape prices, product descriptions, images, location, availability, brand, and more. Download extracted data in structured format and use it in reports, spreadsheets, databases, and applications.",
        "version": "0.0",
        "x-build-id": "f55gFdGgYybQcbeuq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dtrungtin~lazada-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dtrungtin-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/dtrungtin~lazada-scraper/runs": {
            "post": {
                "operationId": "runs-sync-dtrungtin-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/dtrungtin~lazada-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-dtrungtin-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": [
                    "startUrls",
                    "proxyConfig"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "type": "integer",
                        "description": "Limit of pages to be scraped",
                        "default": 2
                    },
                    "proxyConfig": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "It's required to use proxies when running on the platform.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
