Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Shopee Shop Reviews & Ratings Scraper icon

Shopee Shop Reviews & Ratings Scraper

Scrape Shopee shop reviews and ratings across 8 markets. Stars, text, buyer photos, sub-scores and seller replies. Each review names its product.

5 from 2 reviews on Apify 953 runs on Apify $0.00379 per review ($3.79 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust startUrls, maxReviewsPerShop, starRatings (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00379 per review = $3.79 per 1,000

You are charged forWhenPrice
ReviewOne customer review returned, with text, star rating, buyer handle, date, photos, sub-scores and the product it belongs to. Shop summary rows are free.$0.00379

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-21, and they are what you are actually charged.

Inputs

FieldWhat it doesType
startUrlsShop URLs (https://shopee.sg/shop/123456 or https://shopee.sg/shopusername) return that shop's reviews. Product URLs (…-i.{shop}.{item} or /product/{shop}/{item}) return the reviews from the shop-wide sweep that belong to that product. Shopee publishes no per-product review feed, so that is a subset, not the product's full history. Always include the market host: shop ids are scoped per market, and an id from the wrong market returns an empty result.array
maxReviewsPerShopUpper bound on reviews collected per shop. Shopee itself serves at most about 1,000 reviews per star rating (roughly 5,000 per shop), so values above that cannot be met by any client.integer
starRatingsWhich star buckets to sweep. Shopee paginates each star rating separately, so narrowing this makes a run faster. Whatever you pick, a capped run spreads its budget evenly across them rather than filling up from five stars down.array
onlyWithTextMany Shopee ratings are stars only. Turn this on to drop those and keep reviews with an actual comment.boolean
onlyWithMediaKeep only reviews that include buyer photos or video.boolean
includeShopSummaryAdds one row per shop with its average star rating, good/normal/bad counts, follower count, item count and seller response rate.boolean
requestDelayMsShopee's robots.txt asks for a one-second crawl delay. This actor's sweeps are small, but raise this if you are scraping many shops in one run.integer

What you get

A structured dataset — each result includes fields like:

rating_starcommentauthor_usernameproduct_namemodel_namereview_dateimage_countproduct_url

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Shopee Shop Reviews Scraper: a shop's ratings with photos, sub-scores and seller replies

Give it a Shopee shop URL and it returns that shop's reviews as rows. Star rating, the buyer's words, their photos and video, the product and the exact variation the review is about, three sub-scores, and the seller's public reply.

Put the market in the URL, always. Shopee runs eight separate markets and a shop id exists on only one of them, so shopee.sg/shop/1103391312 and shopee.ph/shop/1103391312 are two different things. An id on the wrong market comes back empty rather than wrong.

Two more things worth knowing before the first run. Shopee serves at most about 1,000 reviews per star rating, so roughly 5,000 per shop however many it declares. And there is no free trial row here: the input box arrives pointing at a real shop, so a run you start without editing it really does sweep that shop.

InputShopee shop URLs, with the market host on them
OutputOne row per review, plus a summary row per shop
CeilingAbout 1,000 reviews per star rating, roughly 5,000 per shop
Account neededNone
Price$3.79 per 1,000 reviews on the free plan, falling to $2.79 on the larger paid plans

🛒 What Shopee Shop Reviews Scraper does

Shopee paginates its reviews one star rating at a time, so this sweeps each bucket separately and interleaves them. On a capped run that matters: you get a spread across all five ratings instead of a hundred five-star ratings and nothing else.

Every review names its product, its variation (model_name) and the shop it belongs to, so one sweep of a 165-item shop is already a per-product breakdown.

Each row carries a coverage_note saying how much of the shop you actually got: "Collected 100 of the shop's 77,604 declared ratings (0.13%)". If a star bucket hit Shopee's own ceiling, the note says that too. You never have to guess whether a run was complete.

A product URL works, and returns the reviews from the shop sweep that belong to that product. Shopee publishes no per-product review feed, so that is a slice of the sweep rather than the product's full history.

📥 What you give it

{
  "startUrls": ["https://shopee.sg/shop/1103391312"],
  "maxReviewsPerShop": 300,
  "starRatings": ["5", "4", "3", "2", "1"],
  "onlyWithText": true
}
FieldDefaultWhat it is
startUrlsa real example shopShop URLs (/shop/123456 or /shopusername) or product URLs. The market host is part of the address, so keep it.
maxReviewsPerShop1001 to 5,000 per shop. Anything above roughly 5,000 cannot be met, because Shopee stops serving.
starRatingsall fiveWhich buckets to sweep. Narrowing it makes a run faster. One-star only is the fastest useful run there is.
onlyWithTextfalseMany Shopee ratings are stars and nothing else. Turn this on to keep only reviews with a written comment.
onlyWithMediafalseKeep only reviews that came with photos or video.
includeShopSummarytrueAdds one row per shop: average rating, good, normal and bad counts, followers, item count, response rate.
requestDelayMs250Milliseconds between requests, 0 to 5,000. Raise it if one run sweeps many shops.

📤 What you get back

A real review row from a real run:

{
  "type": "review",
  "cmtid": 110513602821,
  "orderid": 242786970229109,
  "country": "SG",
  "host": "shopee.sg",
  "shopid": 1103391312,
  "shop_username": "baseus.sg",
  "shop_name": "Baseus Official Store Singapore",
  "itemid": 45506561088,
  "product_name": "Baseus USB Type C Cable Quick Charge 3.0 Fast Charging For P30 Data Wire",
  "model_name": "Red,2m",
  "product_url": "https://shopee.sg/product/1103391312/45506561088",
  "rating_star": 5,
  "comment": "So far ok, hopefully will last long.. Comes with warranty as well, its a gd deal..",
  "has_comment": true,
  "detailed_rating": {
    "product_quality": 5,
    "seller_service": 5,
    "delivery_service": 5
  },
  "author_username": "p*****i",
  "author_masked": true,
  "anonymous": true,
  "review_date": "2026-09-20T06:16:54.000Z",
  "ctime": 1789885014,
  "images": ["https://down-sg.img.susercontent.com/file/sg-11134103-8258a-mtc1cjah59fu01"],
  "image_count": 1,
  "video_count": 1,
  "like_count": 0,
  "seller_reply": null,
  "seller_reply_date": null,
  "collected_at": "2026-09-20T07:05:50.039Z",
  "coverage_note": "Collected 100 of the shop's 77,604 declared ratings (0.13%)."
}
FieldWhat it is
cmtidShopee's review id. Stable, so use it as your dedupe key across runs.
product_name, model_name, itemid, product_urlThe product and the exact variation the buyer bought.
detailed_ratingShopee's three sub-scores: product quality, seller service, delivery. The overall star is often 5 while one of these is not.
comment, has_commentThe written text. has_comment is false on a stars-only rating, and the comment is then an empty string rather than null.
author_username, author_masked, anonymousShopee masks some buyer names itself (p*****i). The two flags tell you when what you are reading is masked.
images, image_count, video_countBuyer photos as URLs, and a count of clips. Neither shows in the default table view.
seller_reply, seller_reply_dateThe shop's public answer, on the same row as the review. Null when there isn't one.
review_date, ctimeThe same moment as an ISO string and as a Unix timestamp.
coverage_noteHow much of the shop this run actually covered, and whether a star bucket hit Shopee's ceiling.

🧾 Reading the output

Two kinds of row share one dataset, and type is what separates them. The table view is built for reviews, so a shop summary row looks nearly blank in it. Open a shop row itself and everything is there.

RowHow to spot itCharged
A reviewtype is reviewyes
The shop summarytype is shop, and it carries charged: falseno

Notices never enter the dataset. They are written to the run's key-value store under NOTICES_AND_RUN_STATUS, along with a run_summary giving swept and delivered counts per shop. Open the Storage tab on the run to read it.

NoticeWhat it means
unrecognised_urlNot a Shopee shop or product address.
shop_not_found_on_hostThat id does not exist on that market. Check the host in the URL.
shop_id_rejectedShopee refused the id outright.
shop_lookup_unavailableThe shop lookup did not answer. Usually worth one re-run.
page_failedOne page of one star bucket did not come back, so that bucket stops early. The coverage note on the rows will show the shortfall.
upstream_route_blockedShopee stopped answering mid-sweep. The run ends rather than pretending it finished.
no_inputNothing usable in startUrls.

▶️ How to run it

1. Open Shopee Shop Reviews Scraper and click Try for free. 2. Put your shop URLs into Shopee shop or product URLs, one per line, each with its market host. 3. Set Max reviews per shop. Start at 100 and read the coverage note before going bigger. 4. If you only want reviews people actually wrote, tick Only reviews that have written text. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.

💰 How much does it cost?

$3.79 per 1,000 reviews on the free plan, falling to $2.79 per 1,000 on the larger paid Apify plans.

You pay per review row. The shop summary row is not a review and is not charged as one, and neither are the notices, which do not enter the dataset at all.

Three hundred reviews from one shop is a bit over a dollar on the free plan. Remember that the input box arrives with a real shop in it, so starting a run without editing it is a real sweep of that shop, not a demo.

💡 What people use it for

  • Reading the one and two-star buckets on your own shop, which is where the operational complaints

are, without wading through thousands of five-star ratings.

  • Watching a competing shop's new reviews on a schedule, keyed on cmtid.
  • Pulling buyer photos for a product, which show the real condition far better than the seller's own

gallery.

  • Splitting sentiment by variation. model_name often shows one colour or size getting all the

complaints.

  • Checking whether a shop replies to bad reviews, and how quickly.

🚧 What it does not do

  • About 1,000 reviews per star rating. That is Shopee's wall, not a setting. A shop with 77,000

ratings still tops out near 5,000.

  • No per-product review feed. A product URL returns its share of the shop sweep, not that

product's whole history.

  • The market host is required. An id from another market returns nothing, and the run tells you

so in a notice rather than guessing.

  • No buyer contact details. Usernames as Shopee shows them, masked where Shopee masks them.
  • No product data. No price, stock or listing detail, only what the review carries.
  • No translation. A Thai review arrives in Thai.
  • Counts are a snapshot taken during the run, and Shopee's declared total moves between runs.

🧭 Which marketplace scraper do you need?

If you wantUse
Shopee shop reviews with photos and sub-scoresThis one
Reviews and ratings on 16881688 Reviews Scraper
Wholesale prices, MOQ and suppliers on 16881688 Wholesale Scraper
Shopify stores with their emails and tech stackShopify Store Leads

❓ Questions people ask

Do I need a Shopee account? No. Nothing to paste, nothing that expires.

Which markets work? All eight of Shopee's, as long as the host is in the URL you paste.

Why did my run come back empty? Nine times out of ten the shop id belongs to a different market. Check NOTICES_AND_RUN_STATUS for shop_not_found_on_host.

Can I get all 77,000 ratings on a big shop? No. Shopee stops serving past roughly 1,000 per star rating, and the coverage note on every row tells you exactly where a run stopped.

Why are so many comments empty? Shopee lets buyers rate without writing anything, and plenty do. Use onlyWithText if those are no use to you.

Is scraping reviews legal? These are public pages. Reviews are personal data under GDPR and similar laws, so have a reason for holding them and be careful about republishing. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the shop URL and the run ID. Read NOTICES_AND_RUN_STATUS on the run first, since it usually names the reason already.