Lazada Scraper - Products, Reviews & Shops in 6 Markets
Pricing
from $1.90 / 1,000 results
Lazada Scraper - Products, Reviews & Shops in 6 Markets
Extract Lazada products, prices, reviews and shop data from Singapore, Malaysia, the Philippines, Thailand, Vietnam and Indonesia. Pay per delivered row.
Pricing
from $1.90 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Security
Limited permissionsShare
Lazada Scraper
Extract Lazada products, prices, reviews and storefront data across six Southeast Asian markets as rows you can export.
- Product titles, links, prices, ratings and seller information.
- Keyword search, inventory discovery, shop catalogs and live-commerce listings.
- Optional product details and separate buyer-review rows.
- Singapore, Malaysia, Philippines, Thailand, Vietnam and Indonesia.
- Pay $1.90 per 1,000 delivered rows on every Apify plan.
What does Lazada Scraper do?
Lazada Scraper collects public listings and discovery data from Lazada. Choose one market per run: SG for Singapore, MY for Malaysia, PH for the Philippines, TH for Thailand, VN for Vietnam or ID for Indonesia. The default is MY.
- Products: search with
keywords, discover inventory withsitemap, or collect shop products withshopItems. - Shops:
sellersreturns seller profiles;shopcatalogreturns stores and their categories. - Live commerce:
livereturns live-room and recommended-presenter rows. - Buyer reviews:
includeReviewsis off by default. When enabled and available, each review is a separate row billed at the same price as a product. - Extra fields: product details are enabled by default for up to three products. Seller information, shop profiles and promotion fields are optional and off by default.
What data can you extract from Lazada?
Each row has a rowType and an id. Fields vary by mode and source availability. The examples below illustrate formats, not a current product offer. capturedAt records when the row was captured.
Product rows (rowType=product)
| Field | Description | Example |
|---|---|---|
itemId | Product identifier | 1234567890 |
title | Product title | Wireless earbuds |
productUrl | Product page | https://www.lazada.com.my/products/pdp-i1234567890.html |
keyword | Search words or inventory marker | bluetooth earbuds |
market | Selected country site | MY |
price | Price as displayed | RM39.90 |
currencyCode | Currency code | MYR |
ratingScore | Product rating | 4.7 |
reviewCount | Source review count | 120 |
sellerName | Seller display name | Example Shop |
location | Listed shipping location | Selangor |
pageType | Distinguishes search, inventory and other results | sitemap |
org | Seller name and identifier | {"name":"Example Shop","id":"123"} |
address | Available region or city, not a street address | {"region":"Selangor"} |
Product rows may also include originalPrice, absoluteRank, inStock, categories, skus, brandName and detailParsed. Availability depends on the listing and requested details.
Review rows (rowType=review)
Product identifiers and context accompany each review. Images are limited to 50 per review.
| Field | Description | Example |
|---|---|---|
reviewId | Review identifier | review-123 |
productId | Reviewed product | 1234567890 |
rating | Review rating | 5 |
text | Review text | Fits as described. |
Seller rows (rowType=seller)
| Field | Description | Example |
|---|---|---|
sellerKey | Storefront key | itel |
shopUrl | Storefront address | https://www.lazada.com.ph/shop/itel/ |
sellerInfo | Available shop name, rating and follower information | {"shopName":"Example Shop"} |
Live-room rows (rowType=live)
| Field | Description | Example |
|---|---|---|
liveId | Live-room identifier | 12345 |
roomStatus | Source room status | Live |
Presenter rows (rowType=presenter)
| Field | Description | Example |
|---|---|---|
presenterId | Presenter identifier | 67890 |
fansNum | Follower count | 1200 |
Store rows (rowType=store)
| Field | Description | Example |
|---|---|---|
shopId | Store identifier | 123 |
shopName | Store name | Example Shop |
Shop-category rows (rowType=shop_category)
| Field | Description | Example |
|---|---|---|
catId | Category identifier | 456 |
catName | Category name | Accessories |
childCount | Number of child categories | 2 |
How to scrape Lazada
- Open Lazada Scraper in Apify Console.
- Fill
keywordsorsellerKeys, then choosemarket. - Set
maxItemsto3for a small first run. - Click Start and wait for the result.
- Open the dataset and download rows, or read them through the API.
Empty input starts an example search for bluetooth earbuds in MY, capped at three rows. It is a real, billable run. Keywords alone select search; seller keys without keywords select shopcatalog. Other discovery modes must be selected explicitly.
Keyword search
Use discoveryMode=search with up to 20 keywords. pages permits one to three search pages per keyword.
Site inventory
Use sitemap without keywords. Keep enrichDetails=true and enrichMaxItems above zero. Only products with confirmed details are returned; their keyword is __sitemap__, not a search match.
Search and inventory
Use both with keywords. Inventory can supplement search results when the row and detail limits still allow it.
Seller profiles
Use sellers with optional sellerKeys. Without keys, sellers are discovered from the site's seller inventory.
Live commerce
Use live without keywords to request rooms and recommended presenters. These are not product rows.
Storefront catalog
Use shopcatalog for store metadata and in-shop categories. Supply sellerKeys to select shops; otherwise shops are discovered.
Storefront products
Use shopItems with optional sellerKeys for products sold by those shops, rather than category rows.
What to fill in
| Field | What to enter | Default |
|---|---|---|
keywords | Up to 20 search phrases | Empty; example when no target |
sellerKeys | Storefront keys, such as itel | Empty |
market | PH, SG, MY, TH, VN, ID | MY |
discoveryMode | One of the seven modes above | search |
pages | Search pages per keyword, 1–3 | 1 |
maxItems | Rows per keyword or explicit seller key, 1–200 | 70; form prefill 3 |
minItemsPerPage | Minimum accepted results per search page, 1–40 | 1 |
enrichDetails | Add available product details | true |
enrichMaxItems | Products to enrich, 0–10 | 3 |
includeReviews | Separate buyer-review rows | false |
maxReviewsPerItem | Reviews per product, 0–50 | 5 |
includeSellerInfo | Add seller information | false |
includeShopProfile | Add shop profile; combine with seller information | false |
includeSellerItemReviews | Add shop-wide product-review information | false |
maxSellerItemReviews | Shop review page size, 1–50 | 10 |
includePcReviewList | Add available extended product-review information | false |
maxPcReviewList | Extended review page size, 1–50 | 5 |
includeSellerReviews | Add available seller-service reviews | false |
maxSellerReviews | Seller-service review page size, 1–50 | 5 |
includeShopNavBadges | Add available storefront badges | false |
includeSeoInnerLink | Add related product-page links | false |
includeItemQA | Add available product questions and answers | false |
maxItemQA | Question page size, 1–50 | 5 |
includeDetailAsync | Add available voucher and gift-offer fields | false |
detailAsyncTypes | Comma-separated offer types; empty uses standard types | Empty |
includeMultiBuy | Add available bundle-offer fields | false |
sitemapBuckets | Inventory groups to inspect, 1–8 | 3 |
sitemapMaxUrls | Inventory URL limit, 1–1000 | 200 |
maxRetriesPerKeyword | Retries after recoverable failures, 0–3 | 1 |
requestTimeoutSecs | Per-keyword time allowance, 15–120 seconds | 90 |
Search:
{"keywords":["bluetooth earbuds"],"market":"MY","maxItems":3}
Inventory:
{"discoveryMode":"sitemap","market":"MY","maxItems":3,"enrichDetails":true,"enrichMaxItems":3}
Search and inventory:
{"discoveryMode":"both","keywords":["charger"],"market":"PH","maxItems":5}
Seller profiles:
{"discoveryMode":"sellers","sellerKeys":["itel"],"market":"PH","maxItems":3}
Live commerce:
{"discoveryMode":"live","market":"PH","maxItems":3}
Storefront catalog:
{"discoveryMode":"shopcatalog","sellerKeys":["itel"],"market":"PH","maxItems":3}
Storefront products:
{"discoveryMode":"shopItems","sellerKeys":["itel"],"market":"PH","maxItems":3}
maxItems is the canonical row limit; maxResults and limit are aliases. keyword, q and query map to keywords. Close field-name misspellings are corrected; other unknown fields are ignored with a note. Out-of-range numbers are clamped; invalid optional choices fall back to defaults.
Every run records input interpretation in INPUT_REPORT in the default key-value store. Unusable input fails before any row charge with a message such as INVALID_INPUT: market — use one of: ID, MY, PH, SG, TH, VN.
Output example
{"rowType": "product","id": "1234567890","itemId": "1234567890","keyword": "bluetooth earbuds","market": "MY","title": "Wireless earbuds with charging case","productUrl": "https://www.lazada.com.my/products/pdp-i1234567890.html","price": "RM39.90","currencyCode": "MYR","sellerName": "Example Shop","ratingScore": 4.7,"reviewCount": 120,"capturedAt": "2026-10-24T08:00:00+00:00"}
Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. Optional nested fields are easier to preserve in JSON.
Why use this Lazada scraper?
- Pay per delivered row. Product, review and discovery rows use the same price.
- Compare several inputs. Submit multiple keywords or seller keys in one run.
- Keep missing values honest. Unavailable fields remain empty or absent.
- Inspect failures. Check the status message,
RUN_SUMMARYand, when present,ERROR_SUMMARY. - Keep delivered data. Rows already written to the dataset remain available. Results not yet written when a run stops are not guaranteed.
- No proxy setup. You do not need to set up proxies.
How much does it cost to scrape Lazada?
The Actor uses pay-per-event pricing. Each delivered row triggers one result-item event. Platform usage is included in these prices.
| Apify plan | Start-event price | Price per row | Price per 1,000 rows |
|---|---|---|---|
| Free | Not specified | $0.0019 | $1.90 |
| Starter | Not specified | $0.0019 | $1.90 |
| Scale | Not specified | $0.0019 | $1.90 |
| Business | Not specified | $0.0019 | $1.90 |
The available price schedule does not specify a separate start-event amount. Check the Store pricing panel before starting; the calculation below does not assume an additional fee or claim one is zero.
maxItems applies to each keyword or explicit seller key, not just products: reviews and other rows share that input's allowance. The default is 70, with a maximum of 200. Larger requests are collected in parts, subject to source availability and the run's remaining budget.
Free Apify plan runs are capped at 200 rows, with 10 total runs of this Actor. These are developer-set limits. The whole run also stops at Maximum cost per run (maxTotalChargeUsd in the API).
Example: at the default 1024 MB memory setting, one keyword delivering three rows produces 3 × $0.0019 = $0.0057 in row charges. Memory does not change this listed per-row price. Count review rows in the three, rather than adding them outside the limit.
What happens when the run timeout is too short
Some Lazada collections, such as several keywords with includeReviews: true, a sitemap run with detail enrichment or a large maxItems, can take longer than the run timeout you chose. In that case the run does not fail. It ends early with the status message "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." and shows as ABORTED for a while.
When the results are ready, the same run starts again by itself, reports "Resumed: delivering N rows.", writes the rows to the same dataset and finishes as SUCCEEDED. Rows that were already delivered are skipped, so no row is delivered or charged twice. You do not need to start another run.
- This can happen at most 3 times per run. To avoid it, keep the default run timeout rather than choosing a very short one.
- The synchronous API endpoints (
run-sync,run-sync-get-dataset-items) wait at most 300 seconds and can return an empty dataset while the run is paused. For larger jobs, start the run asynchronously and read the dataset after the run reaches SUCCEEDED, or use a webhook on the "succeeded" event.
Use with AI agents and the API
Apify MCP server (Claude, ChatGPT, Cursor, VS Code)
Add this Actor to an MCP client that supports remote servers:
https://mcp.apify.com?tools=lentic_clockss/lazada-ph-search-results-collector
Sign in with Apify through OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool returns run and dataset identifiers; read rows with get-dataset-items. Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/lazada-ph-search-results-collector with APIFY_TOKEN set.
Example prompt: “Find three Bluetooth-earbud listings on Lazada Malaysia and return their titles, prices and product links.”
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/lazada-ph-search-results-collector").call(run_input={"keywords": ["bluetooth earbuds"], "market": "MY", "maxItems": 3})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/lazada-ph-search-results-collector').call({keywords: ['bluetooth earbuds'], market: 'MY', maxItems: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Over HTTP, send input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~lazada-ph-search-results-collector/runs with the same authorization header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Standby HTTP endpoint
Base URL: https://lentic-clockss--lazada-ph-search-results-collector.apify.actor
| Method and route | Response |
|---|---|
GET / | Service information |
GET /health | Service health |
GET /input-example | Example input |
GET /openapi.json | API description |
These are read-only information routes, not collection routes. Start collection through a normal Actor run using the API above.
Integrations
Use the Integrations tab for Google Sheets, Make, Zapier, n8n, Slack, Airtable or a webhook. Schedule repeated runs with Apify Schedules.
FAQ
Is it legal to scrape Lazada?
This Actor collects public data. You are responsible for complying with applicable terms and data-protection law. Processing personal data requires a lawful basis; public visibility alone does not settle that requirement.
Why did my run end as ABORTED?
ABORTED alone does not identify the cause. Check the run log and status message to see whether the run was stopped manually or by an automation. Do not assume it completed collection or will restart automatically.
How many results can I get?
Set maxItems from 1 to 200 per input. The cost cap and Free-plan limits also apply. Search has at most three pages per keyword, so a requested count is a ceiling, not a promise.
Why are some fields empty?
Lazada may omit a value, a product may lack an offer, or optional details may be unavailable. Enabling a field does not guarantee the source provides it.
Why is the dataset empty?
A keyword may have no usable results, or collection may fail. Check the selected market, reduce minItemsPerPage to 1, and read the status message and saved summary before retrying.
Are inventory results keyword matches?
No. Inventory rows use keyword=__sitemap__. Search can also return inventory fallback rows marked pageType=sitemap_fallback; exclude them when you need strict keyword matches.
Can I get seller contact details?
The output can include seller organization and regional location fields, but not individual seller phones, emails, street addresses or coordinates. A platform_hotline phone entry belongs to Lazada, not the seller.
Are reviews included automatically?
No. Set includeReviews=true for separate buyer-review rows. maxReviewsPerItem and the shared maxItems allowance both apply. Sitemap-only products do not receive this review add-on.
Limitations
- Only
PH,SG,MY,TH,VNandIDare selectable; each run selects one market. - Product details are bounded enrichment, not unrestricted product-page crawling.
- Sitemap output depends on confirmed details and
enrichMaxItems, not just the number of discovered URLs. - Optional review, shop and offer fields vary by mode and availability; they are not guaranteed for every row.
- Prices, availability and rankings are snapshots and can change after collection.
- A stopped run may lose results that had not yet reached the dataset.
Related scrapers
More e-commerce and marketplace scrapers from the same publisher:
- Walmart Product Scraper
- Temu Product Scraper
- Allegro Scraper
- TikTok Shop Product Scraper
- Amazon Search, Category & Best Sellers Scraper
- Coupang Product Scraper
- MercadoLibre Scraper
- Rakuten Japan Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Report a problem or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.