Tokopedia Shop Reviews Scraper
Under maintenancePricing
from $0.05 / actor start
Tokopedia Shop Reviews Scraper
Under maintenanceCrawls every product of a Tokopedia shop and collects all of its reviews.
Pricing
from $0.05 / actor start
Rating
0.0
(0)
Developer
Aulia Ulkhairi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Give it one or more Tokopedia shop URLs and it crawls every product of each shop and collects all of their reviews — text, star rating, reviewer, date, photos, videos, and seller replies — as clean, structured JSON ready for spreadsheets, BI tools, or sentiment analysis.
Perfect for brand monitoring, competitor research, product feedback analysis, and review datasets.
Features
- 🏬 Whole-shop crawl — point it at a shop, get reviews for every product.
- ⭐ Full review detail — rating, text, reviewer, timestamp, likes, variant, images, and videos.
- 💬 Seller replies — optionally captured as separate rows to measure brand responsiveness.
- 📊 Per-product summaries — average rating and 1–5 star distribution per product.
- 🗓️ Date & rating filters — only pull reviews since a date, or within a star range.
- 🔁 Incremental mode — remember what you've already scraped and only fetch new reviews on the next run (ideal for scheduled monitoring).
- 🧹 Clean, stable schema — every field documented; drop straight into your pipeline.
Input
| Field | Type | Default | Description |
|---|---|---|---|
shopUrls | string[] | — | Tokopedia shop URLs (https://www.tokopedia.com/<slug>). |
shopIds | string[] | — | Numeric shop ids — use if URL resolution fails. |
maxProductsPerShop | int | 0 | Cap products per shop. 0 = all. |
maxReviewsPerProduct | int | 0 | Cap reviews per product. 0 = all. |
onlyProductsWithReviews | bool | false | Skip products the listing marks as 0 reviews (listing count is unreliable, so off by default). |
reviewSort | enum | Most helpful | Most helpful / Newest / Oldest / Highest / Lowest. |
reviewsSince | date | "" | Keep only reviews on/after this date. Sorts newest-first and stops a product once older reviews are reached. |
includeProductSummaries | bool | true | Emit one aggregate row per product to the product-summaries dataset. |
includeSellerReplies | bool | true | Emit seller replies as extra rows (source_label: Tokopedia Seller Reply). |
dedup | bool | false | Remember review ids across runs and skip seen ones. For scheduled monitoring. |
minRating / maxRating | int | 0 | Keep only reviews within this 1–5 range. 0 = no filter. |
productConcurrency | int | 3 | Products scraped in parallel. |
requestDelayMs | int | 400 | Polite delay between requests. |
proxyConfiguration | proxy | off | Apify Proxy settings. |
At least one of shopUrls / shopIds is required. When reviewsSince or dedup
is enabled, review sort is forced to newest-first so early-stop can work.
Example input
{"shopUrls": ["https://www.tokopedia.com/wahanakaryastore"],"maxReviewsPerProduct": 200,"reviewsSince": "2026-01-01","includeSellerReplies": true}
Output
One row per review (and per seller reply when enabled) in the default dataset:
{"external_id": "tokopedia-review-1492210321","author_handle":"L***i","author_name": "L***i","body": "Trimakasih paket nya udah sampai...","posted_at": "2025-05-29T17:07:08.000Z","url": "https://www.tokopedia.com/wahanakaryastore/solder-...","source_label": "Tokopedia Review","likes": 0, // helpful/like count"comments": 0, // 1 if the seller replied"reach": 0, // reserved (always 0)"rating": 5, // 1-5"raw": {"platform": "tokopedia","feedbackId": "1492210321","productId": "100230143849","productName": "...","variantName": "Solder 60w+Timah 5m","shopId": "7494083584907249524","shopName": "WahanaKaryaStore","isAnonymous": true,"relativeTime": "Lebih dari 1 tahun lalu","sellerReply": null,"images": ["https://..."],"videos": [],"badRatingReason": null}}
Every field is documented in the actor's output schema, so the Output tab shows a clean, labelled table you can export to JSON, CSV, Excel, or via API.
Extra datasets
product-summaries(whenincludeProductSummaries) — one row per product:totalReviewsReported,reviewsCollected,averageRatingCollected,ratingDistribution(1–5 star counts),partialflag. The star distribution is computed from the reviews actually fetched, so it's exact only on a full pull (nomaxReviewsPerProduct/reviewsSince/dedup).tokopedia-reviews-statekey-value store (whendedup) — persists seen review ids across runs.
Notes
Tokopedia sits behind Akamai Bot Manager. Plain datacenter IPs may get challenged. If you see repeated failures, enable Apify Proxy (RESIDENTIAL, country
ID) in the input.
The scraper reads Tokopedia's public GraphQL endpoints (no login required). If Tokopedia changes its API and a run starts erroring, please report it — signatures occasionally change and the queries need re-capturing.
Run locally
npm install# create storage/key_value_stores/default/INPUT.json with your input, then:npm start