Lazada Scraper
Introduction
The Lazada scraper provides reliable access to Lazada’s backend APIs across Southeast Asia.
It allows you to invoke Lazada APIs directly without handling:
- Anti-bot headers
- Signature logic
- Mobile vs desktop differences
- Cookie management
Charted Sea continuously maintains this scraper against Lazada platform updates. No action is required on your side when Lazada changes internal APIs.
Usage
Submit tasks to:
POST /scraping-tasks/lazada/run
Example
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer ${token}" \
--request POST \
--data '{"requests":[{"url":"https://www.lazada.vn/products/pdp-i2569427642.html"}]}' \
https://continuous-scraper.common.chartedapi.com/scraping-tasks/lazada/run
The Lazada API endpoint or page URL is specified inside the request body.
See the API Reference for full endpoint details.
Example Request Body
{
"requests": [
{ "url": "https://www.lazada.sg/shop-desktop-computer/" },
{ "url": "https://www.lazada.sg/catalog/?q=tshirt" },
{ "url": "https://www.lazada.sg/products/raspberry-pi-4-heat-sinks-1-copper-2-aluminium-3-piece-cooling-heatsink-heat-sink-accessories-i453778483.html" },
{ "url": "https://www.lazada.sg/shop/loreal-paris" }
]
}
Each request is processed independently and returns a structured JSON response.
What You Can Extract
The Lazada scraper interacts directly with Lazada’s backend APIs and supports:
- Keyword product search
- Category product listings
- Product detail pages
- Product reviews
- Seller listing
- Seller detail
- Seller product listing
- Category tree
- Seller hot keywords
All data is returned in JSON format.
Common Configuration Options
The following parameters are supported:
requests— List of Lazada URLs to scrape.cleanResponseBody(default: true) — Returns a cleaned, structured version of the Lazada response.emulateMobileDevice(default: false) — Simulates web mobile traffic when enabled.language(optional) — Sets the language header and cookie.
Supported language values:
en— Englishid— Indonesianms— Malayth— Thaivi— Vietnamese
Example Response
{
"url": "https://www.lazada.com.my/catalog/?q=raspberry%20pi%205",
"enrichedUrl": "https://www.lazada.com.my/catalog/?q=raspberry%20pi%205",
"referrer": "https://lazada.com.my/",
"knownApi": "KEYWORD_PRODUCTS",
"responseStatus": 200,
"responseBody": {
"productTotal": 1309,
"products": [
{
"itemId": 4084035635,
"pageUrl": "https://www.lazada.com.my/products/raspberry-pi-5-bundle-8gbram32gb-noobsredwhite-case-with-fan-i4084035635.html",
"name": "Raspberry Pi 5 Bundle (8GBRAM/32GB NOOBS/Red/White Case with Fan)",
"imageUrl": "https://sg-test-11.slatic.net/p/c545e50e4305a33c6291a7021a1cc60a.png",
"categoryId": 10000493,
"location": "Wp Kuala Lumpur",
"originalPrice": 699,
"price": 618.9,
"isInStock": true,
"isAd": false,
"isSponsored": false,
"isLazMall": false,
"isLazGlobal": false,
"hasFreeShipping": false,
"reviewCount": 0,
"brandId": 32076,
"brandName": "Raspberry Pi",
"defaultSkuId": 23134383025,
"supplierId": 3335,
"shopId": 19295
}
// ... 59 other products
]
}
}
If you require the raw Lazada response:
{
"cleanResponseBody": false
}
Output Fields
Each scraping task returns:
url— Original requested URLknownApi— Identifies the Lazada API invokedresponseStatus— HTTP status returned by LazadaresponseBody— Lazada API JSON response
Lazada vs Shopee
Lazada and Shopee are independent platforms with different anti-bot systems.
Scraping both platforms:
- Reduces dependency on a single marketplace
- Increases pipeline resilience
- Enables cross-platform keyword and trend analysis
For Shopee documentation, see: Shopee Scraper
Supported APIs
Product Search by Keyword or Category or Seller
- URL Path:
https://www.lazada.${tld}/catalog/?q=${keyword}https://www.lazada.${tld}/${categorySlug}/https://www.lazada.${tld}/${sellerSlug}/?q=All-Products&from=wangpu&langFlag=en&pageTypeId=2
Avoid specifying the page parameter in the URL due to inefficiencies related to Lazada's pagination limitations.
Sequential navigation from the first page is required, which can consume significant proxy traffic. For multi-page
crawling, consider using the productListing_crawlNextPages parameter.
-
URL Parameters:
keyword: Search keyword, e.g., "tshirt".categorySlug: Category slug, e.g. "shop-computers-laptops".sellerSlug: Seller slug, e.g. "nike".
-
Scraper Input Parameters
cleanResponseBody(default = true): Indicates whether the response should be cleaned (true) or returned as received (false).emulateMobileDevice(default = false): Simulates a mobile browser when set to true. This is particularly useful for this API, as it only provides consistent ordering in mobile mode.productListing_crawlNextPages(default = false): Enables automatic crawling of subsequent pages.productListing_crawlNextPages_maxPages(optional): Sets a cap on the number of pages to crawl.productListing_crawlNextPages_maxUniqueProducts(optional): Limits the number of unique products to scrape. Products that appear multiple times are counted once.productListing_crawlNextPages_stopWhenNewPageOnlyContainsDuplicates(default = true): Prevents infinite loops in pagination bugs by stopping when a page only contains previously listed products.productListing_crawlNextPages_stopWhenNoMorePagesIsTrue(default = true): Stop crawling next pages ifnoMorePagesequalstruein the last response.
If productListing_crawlNextPages is set to true, all pages are scraped sequentially within a single scraping task.
This is because Lazada requires products to be listed page by page within the same web browser session, from page 1.
Direct access to a non-consecutive page (e.g., jumping straight to page 5) would cause Lazada to display results for the page 1.
In practice, this means that a single scraping task may require more than 10min to be processed, at it may involve more than 100 HTTP requests (note that a random delay is added between each scrape, to reduce bot detection).
The nature of this sequential crawling increases the susceptibility of the scraping task to being blocked, especially as successful completion depends on numerous uninterrupted requests. Although captchas can occasionally interrupt the session, they can be resolved; however, if no captcha is presented and the session is disrupted, the process need to restart from the first page.
- Example Input:
{
"requests": [
// Search products with the "raspberry pi 5" keyword
{ "url": "https://www.lazada.com.my/catalog/?q=raspberry%20pi%205" },
// Search products in the "Computers / Laptops" category
{ "url": "https://www.lazada.com.my/shop-computers-laptops/" },
// Search products from Nike store
{ "url": "https://www.lazada.com.my/nike/?q=All-Products&from=wangpu&langFlag=en&pageTypeId=2" }
]
}
- Example Responses:
Product Details
-
URL Path:
https://www.lazada.${tld}/products/${productSlug}-i${productId}-s${sellerId}.html
-
URL Parameters:
productSlug: Product slug, e.g., "120ml-skintific-all-day-light-sunscreen-mist-spf50-pa-sunblock-spray-anti-uv-face-body-spray-120ml".productId: Product ID (a.k.a.itemId), e.g. 3525761808.sellerId: Seller ID, e.g. 22573296116.
-
Scraper Input Parameters
cleanResponseBody(default = true): Indicates whether the response should be cleaned (true) or returned as received (false).emulateMobileDevice(default = false): Simulates a mobile browser when set to true. Some APIs may return different results in this mode.
-
Example Input:
{
"requests": [
{ "url": "https://www.lazada.com.my/products/120ml-skintific-all-day-light-sunscreen-mist-spf50-pa-sunblock-spray-anti-uv-face-body-spray-120ml-i3525761808-s22573296116.html" }
]
}
- Example Response:
Product Reviews
-
URL Path:
https://my.lazada.${tld}/pdp/review/getReviewList?itemId=${productId}
-
URL Parameters:
productId: Product ID (a.k.a.itemId), e.g. 3525761808.
-
Scraper Input Parameters
cleanResponseBody(default = true): Indicates whether the response should be cleaned (true) or returned as received (false).emulateMobileDevice(default = false): Simulates a mobile browser when set to true. Some APIs may return different results in this mode.
-
Example Input:
{
"requests": [
{ "url": "https://my.lazada.com.my/pdp/review/getReviewList?itemId=2932861112" }
]
}
- Example Response:
Product Reviews V2
-
Request Method:
POST
-
URL Path:
https://acs-m.lazada.${tld}/h5/mtop.lazada.review.item.getpcreviewlist/1.0/
-
Request Body:
{
"itemId": 2770749450,
"pageSize": 5,
"pageNo": 1,
"ratingFilter": 0,
"sort": 0,
"tagId": 0
}
-
Parameters:
itemId: The unique identifier of the product.pageSize(default = 5): Number of reviews.pageNo(default = 1): Page number (starts from 1).ratingFilter(min = 0, max = 5): 0 = all reviews, 1-5 = number of stars.sort(default = 0): 0 = default, 1 = recent.tagId(default = 0): 0 = all reviews, -1 = with images/videos, -3 = repeat customer. The response provides other values in theimpressionTagsfield.
-
Scraper Input Parameters
emulateMobileDevice(default = false): Simulates a mobile browser when set to true. Some APIs may return different results in this mode.
-
Example Input:
{
"requests": [
{
"url": "https://acs-m.lazada.co.th/h5/mtop.lazada.review.item.getpcreviewlist/1.0/",
"method": "POST",
"payload": {
"itemId": 2770749450,
"pageSize": 5,
"pageNo": 1,
"ratingFilter": 0,
"sort": 0,
"tagId": 0
}
}
]
}
- Example Response:
Category Tree
-
URL Path:
https://acs-m.lazada.${tld}/h5/mtop.lazada.guided.shopping.categories.categorieslpcommon/1.0/
-
Scraper Input Parameters
emulateMobileDevice(default = false): Simulates a mobile browser when set to true. Some APIs may return different results in this mode.
-
Example Input:
{
"requests": [
{ "url": "https://acs-m.lazada.com.my/h5/mtop.lazada.guided.shopping.categories.categorieslpcommon/1.0/" }
]
}
- Example Response:
Seller Listing
-
URL Path:
https://www.lazada.${tld}/sitemap-sellers.xml?limit=${limit}&offset=${offset}
-
URL Parameters:
limit: Number of sub-sitemaps to load (better equals to or less than 30).offset: Offset for results, typically a multiple oflimit.
-
Example Input:
{
"requests": [
{ "url": "https://www.lazada.com.my/sitemap-sellers.xml" }
]
}
- Example Response:
Seller Details
-
URL Path:
https://www.lazada.${tld}/shop/${sellerSlug}/
-
URL Parameters:
sellerSlug: Seller slug, e.g., "citemalaysia".
-
Scraper Input Parameters
cleanResponseBody(default = true): Indicates whether the response should be cleaned (true) or returned as received (false).emulateMobileDevice(default = false): Simulates a mobile browser when set to true. Some APIs may return different results in this mode.
-
Example Input:
{
"requests": [
{ "url": "https://www.lazada.com.my/shop/citemalaysia/" }
]
}
- Example Response:
Seller Promoted Products
-
URL Path:
https://www.lazada.${tld}/shop/site/api/shop/campaignTppProducts/query?shopId=${shopId}&sellerId=${sellerId}&itemId=${productId}
-
URL Parameters:
shopId: Shop ID, can be obtained from the Seller Details.sellerId: Seller ID, can be obtained from the Seller Details.productId: Any product ID from the seller.
-
Scraper Input Parameters
emulateMobileDevice(default = false): Simulates a mobile browser when set to true. Some APIs may return different results in this mode.
-
Example Input:
{
"requests": [
{ "url": "https://www.lazada.co.id/shop/site/api/shop/campaignTppProducts/query?shopId=3258813&sellerId=400611231032&itemId=7991896339" }
]
}
- Example Response:
Keyword Listing
-
URL Path:
- For ID, VN:
https://www.lazada.${tld}/tag-order-last-30days-morethan0.xml?limit=${limit}&offset=${offset} - For PH, TH:
https://www.lazada.${tld}/tag-order-last-60days-morethan0.xml?limit=${limit}&offset=${offset} - For MY, SG:
https://www.lazada.${tld}/tag-order-last-90days-morethan0.xml?limit=${limit}&offset=${offset}
- For ID, VN:
-
URL Parameters:
limit: Number of sub-sitemaps to load (better equals to or less than 30).offset: Offset for results, typically a multiple oflimit.
-
Example Input:
{
"requests": [
{ "url": "https://www.lazada.com.my/tag-order-last-90days-morethan0.xml?limit=30&offset=0" }
]
}
- Example Response:
Operational Recommendations
- Monitor success rate during high-traffic campaigns.
- Expect stricter anti-bot protections during major sales events.
- Automatically pause traffic if success rate drops significantly.