Tokopedia Shop Reviews Scraper avatar

Tokopedia Shop Reviews Scraper

Under maintenance

Pricing

from $0.05 / actor start

Go to Apify Store
Tokopedia Shop Reviews Scraper

Tokopedia Shop Reviews Scraper

Under maintenance

Crawls 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

Aulia Ulkhairi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

FieldTypeDefaultDescription
shopUrlsstring[]Tokopedia shop URLs (https://www.tokopedia.com/<slug>).
shopIdsstring[]Numeric shop ids — use if URL resolution fails.
maxProductsPerShopint0Cap products per shop. 0 = all.
maxReviewsPerProductint0Cap reviews per product. 0 = all.
onlyProductsWithReviewsboolfalseSkip products the listing marks as 0 reviews (listing count is unreliable, so off by default).
reviewSortenumMost helpfulMost helpful / Newest / Oldest / Highest / Lowest.
reviewsSincedate""Keep only reviews on/after this date. Sorts newest-first and stops a product once older reviews are reached.
includeProductSummariesbooltrueEmit one aggregate row per product to the product-summaries dataset.
includeSellerRepliesbooltrueEmit seller replies as extra rows (source_label: Tokopedia Seller Reply).
dedupboolfalseRemember review ids across runs and skip seen ones. For scheduled monitoring.
minRating / maxRatingint0Keep only reviews within this 1–5 range. 0 = no filter.
productConcurrencyint3Products scraped in parallel.
requestDelayMsint400Polite delay between requests.
proxyConfigurationproxyoffApify 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 (when includeProductSummaries) — one row per product: totalReviewsReported, reviewsCollected, averageRatingCollected, ratingDistribution (1–5 star counts), partial flag. The star distribution is computed from the reviews actually fetched, so it's exact only on a full pull (no maxReviewsPerProduct / reviewsSince / dedup).
  • tokopedia-reviews-state key-value store (when dedup) — 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