Shopee Scraper
Pricing
from $5.00 / 1,000 product scrapeds
Shopee Scraper
Scrape Shopee product listings by keyword, category, or URL across Brazil, Singapore, Malaysia, Vietnam, Thailand, and Philippines. Returns price, discount, seller, ratings, stock, shipping. Ideal for price monitoring, seller intelligence, and market research. $0.005/product.
Pricing
from $5.00 / 1,000 product scrapeds
Rating
4.5
(13)
Developer
Gio
Maintained by CommunityActor stats
17
Bookmarked
849
Total users
165
Monthly active users
4.1 hours
Issues response
6 hours ago
Last modified
Categories
Share
Shopee Scraper — Products, Prices & Sellers
Scrape Shopee products by keyword, category or shop. Extracts name, price, sold-count tier, rating, reviews, seller info and images. Supports Brazil, Indonesia, Thailand, Malaysia, Singapore, Mexico, Philippines and Vietnam.
No login, no cookies, no setup — works out of the box on a paid Apify plan.
⚠️ Free vs. paid Apify plans
This actor relies on a premium unblocking backend that the actor author pays for. Free Apify accounts cannot pull live Shopee data.
- Free plan: the actor returns a small, clearly-labelled MOCK sample (every record has
_mock: trueand a_noticefield) so you can inspect the exact output shape before committing. - Paid plan: real, live Shopee data. The Starter plan ($49/mo) includes $49 in platform credits — enough for roughly 10,000 real products.
Upgrade at https://apify.com/pricing and re-run to switch from mock to live data. No input change needed — the actor detects your plan automatically.
Features
- 🔍 Search by keyword (Portuguese, English or native language)
- 🗂️ Category URLs and multi-keyword batches
- 💰 Price, priceMax, currency
- 🏷️ Discount detection:
originalPrice,discountPercent,isOnSale - 📦 Historical sold-count tier (Shopee-native buckets, e.g.
10mil+) - ⭐ Rating + review count + favorites
- 🏪 Seller name, location, brand
- 🖼️ Up to 5 product images
- 🌍 Multi-country: BR, SG, MY, TH, ID, MX, PH, VN
- ♻️ Deduplicated by item ID across 4 sort strategies
Input
| Field | Type | Description |
|---|---|---|
location | String | Single keyword (e.g. "tênis nike"), or a Shopee search / shop / category URL |
keywords | Array | Multiple keywords. Each yields up to ~150 unique items |
shopUrls | Array | Shopee shop/seller URLs |
categoryUrls | Array | Shopee category URLs (e.g. .../Tenis-cat.11013548) |
priceSlicing | Boolean | Run each keyword/category across 6 price buckets to bypass the dedup cap |
country | String | BR, SG, MY, TH, ID, MX, PH, VN. Auto-detected from URLs |
maxItems | Integer | Hard cap on total items. Default 100, max 10,000 |
Output
One record per product (real data on paid plans; mock sample on free plans):
{"itemId": 1234567890,"shopId": 987654321,"name": "Tênis Nike Air Max","price": 299.90,"priceMax": null,"currency": "BRL","originalPrice": 399.90,"discountPercent": 25,"isOnSale": true,"historicalSoldEstimated": "5mil+","favorites": 1820,"reviewCount": 312,"rating": 4.85,"shopName": "Nike Official Store","brand": "Nike","location": "São Paulo","images": ["https://cf.shopee.com.br/file/..."],"url": "https://shopee.com.br/-i.987654321.1234567890"}
On a free plan, every record additionally carries:
{"_mock": true,"_notice": "THIS IS MOCK / SAMPLE DATA — not real Shopee products. ... Upgrade at https://apify.com/pricing ..."}
Field notes
historicalSoldEstimated: Shopee redacts exact sold counts for datacenter IPs. This is the Shopee-native tier (100+,5mil+,10mil+, …), taken directly from the API when present, or estimated from review count otherwise. Low or unknown-volume listings return"<100"(the conservative floor, inverse of Shopee's100+/500+/1mil+vocabulary); this field is never empty.originalPrice: listed price before any discount, in the same currency asprice.nullwhen the item is NOT on sale. Combined withpriceyou get the absolute saving (originalPrice - price).discountPercent: integer percent off as reported by Shopee (e.g.25for 25% off). Falls back to a computed((originalPrice - price) / originalPrice * 100)if Shopee omits the raw value.nullwhen not on sale.isOnSale: boolean.trueonly when Shopee returned a higheroriginalPricethan the currentprice. Use this to filter discounted items:isOnSale === true.priceMax: only set when the listing has a price range across variants (NOT a pre-discount price); otherwisenull.brand/location:nullwhen Shopee doesn't expose them for that listing.
How many results per keyword?
Shopee's public search API caps unique results at ~50 per sortBy. The actor rotates relevancy → sales → ctime → pop and deduplicates by item ID.
maxItems | Typical real yield | Runtime |
|---|---|---|
| 50 | 50 | ~1.5 min |
| 100 | 90–100 | ~3 min |
| 150 | 130–150 | ~4.5 min |
| 200+ | ~150–190 ceiling | ~6 min |
For broad coverage, run several specific keywords or use categoryUrls / priceSlicing.
⏱️ Timeout configuration
Set timeoutSecs (in Apify run options) based on your maxItems to avoid runs being killed by Apify before items are collected:
Your maxItems | Recommended timeoutSecs |
|---|---|
| Up to 500 | 120 (2 min) |
| 501–2,000 | 200 (~3.5 min) |
| 2,001–5,000 | 500 (~8 min) |
| 5,001–10,000 | 1000 (~17 min) |
| 10,001–25,000 | 2500 (~42 min) |
| 25,001+ | 5000+ (~85 min) |
Conservative pace: Shopee API delivers between 10 and 50 items/second depending on anti-bot conditions. We use 10 items/s as the safe lower bound for sizing recommendations.
If your config doesn't match this guidance, the actor still runs but pushes a _warning: config_undersized record to the dataset explaining the mismatch and suggesting concrete values. When the actor detects Apify is about to kill it, it skips anti-fraud retries and serves cached data when possible, so you usually still get some results.
Notes
- Proxy/unblocking is handled automatically — no configuration needed.
- Free-plan runs never touch the paid backend, so they are instant and cost nothing.
⭐ Like this actor?
If it saved you time, please leave a review on the Apify Store — it helps a lot! Leave a review