Shopee Shop Reviews & Ratings Scraper
Pricing
Pay per event
Shopee Shop Reviews & Ratings Scraper
A Shopee shop id works on one of eight storefronts and nowhere else. The market comes from your URL, never a default. Star rating, text, buyer handle, date, photos and video, product and variation, three sub-scores, seller replies, plus the rating breakdown. $3.79 per 1,000.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
There are eight Shopee storefronts, and a shop id works on exactly one of them. Send a shopee.sg shop id to shopee.co.id and Shopee answers HTTP 200 with an empty list, which reads exactly like a shop nobody has reviewed. So the market is taken from the URL you hand over, never guessed at.
Reviews come back one row each: the star rating, the text, the buyer's handle, the date, any photos or video they attached, which product and variation it was left for, the three sub-scores, and the seller's reply where there is one. There's also one summary row per shop carrying its own rating breakdown.
All eight Shopee markets work. You don't need a Shopee account, a cookie, an API key or a proxy.
What you get
One row per review:
| Field | |
|---|---|
rating_star | 1-5 |
comment | the review text, with has_comment so you can filter out stars-only ratings |
detailed_rating | product_quality, seller_service, delivery_service |
author_username | buyer handle, plus author_masked when Shopee returns it partly starred out |
review_date | ISO 8601, plus the raw ctime |
images, image_count, video_count | buyer-uploaded media |
itemid, product_name, model_name, product_url | the product and variation the review is for |
seller_reply, seller_reply_date | the shop's response, where one exists |
cmtid, orderid, like_count | review and order ids, helpful votes |
shopid, shop_username, shop_name, country, host | where it came from |
Plus one type: "shop" row per shop: average star rating, good/normal/bad counts, total ratings, item count, follower count, seller response rate and response time.
How often each field is actually filled
Measured across 963 real rows, so you can plan around it instead of finding out later:
| Field | Present on |
|---|---|
itemid, rating_star, product_name, review_date | 100% |
author_username | 99% |
model_name (variation) | 80% |
detailed_rating sub-scores | 76% |
non-empty comment text | 44% |
| at least one photo | 32% |
| at least one video | 19% |
| seller reply | 0.3% |
Most Shopee ratings are stars and nothing else. If you only want the ones carrying an actual comment, set onlyWithText and you'll get that 44%.
Markets
shopee.sg · shopee.com.my · shopee.co.id · shopee.vn · shopee.ph · shopee.co.th · shopee.tw · shopee.com.br
Always paste the full URL including the market host. Shop ids are scoped per market, so the same id means nothing on a different one, and Shopee answers a cross-market lookup with an empty list rather than an error. The actor checks the shop exists on the host you gave before collecting anything, so a wrong-market URL gets you a clear message instead of a confusingly empty run.
Input
{"startUrls": ["https://shopee.sg/shop/1103391312"],"maxReviewsPerShop": 100,"starRatings": ["5", "4", "3", "2", "1"],"onlyWithText": false,"onlyWithMedia": false,"includeShopSummary": true}
Shop URLs work as either https://shopee.sg/shop/1103391312 or https://shopee.sg/baseus.sg.
Limits worth knowing before you start
Shopee serves about 1,000 reviews per star rating per shop, roughly 5,000 in total, newest first. That ceiling is Shopee's own pagination, not a limit this actor imposes. Every run reports what it collected against the shop's declared rating total, and says so plainly when it hit the ceiling. On a big shop that means you're sampling, not archiving: 100 reviews out of a shop with 74,025 ratings is 0.14% of them, and the coverage_note on every row tells you so.
Star buckets are swept evenly. Shopee paginates each rating separately. Cap a run and the budget spreads across the ratings you picked rather than filling from five stars down, so you get a representative spread instead of nothing but praise.
Product URLs return a subset. You can pass a product URL (…-i.<shop>.<item> or /product/<shop>/<item>) and get the reviews for that product. Know what that is, though. Shopee closed its per-item review endpoint, so the open route is the shop-wide one, and what you get for a product URL is the slice of that sweep belonging to your product. On a busy shop that's a minority of its real review history. Every row says so in coverage_note. Scrape the shop if you want completeness.
Billing
Pay per event. You're charged for the review event and nothing else: $0.00379 per review on the free plan, dropping to $0.00279 on Gold and above. That's $3.79 and $2.79 per 1,000. There's also a $0.005 actor-start charge per GB of run memory.
What you are not charged for:
- Shop summary rows. The rating breakdown, follower count and response rate are free.
- Notices, skipped URLs, coverage warnings and the run summary. These never enter the dataset at all. They go to the run log, the status message, and the key-value store under
NOTICES_AND_RUN_STATUS. - A run that returns no reviews. A wrong-market URL or an unreachable shop costs you the start fee and nothing else.
If you set a maximum total charge on the run, the actor stops cleanly when it gets there rather than overrunning it.
Speed
The default 100-review run is 5 requests and finishes in about two seconds. A full 5,000-review sweep is 50 requests, and the pacing between them is most of the wall time. Shopee's robots.txt asks for a one-second crawl delay; the actor paces itself with requestDelayMs, which you can raise if you're sweeping many shops in one run.