Tokopedia Scraper · Products, Shops & Reviews avatar

Tokopedia Scraper · Products, Shops & Reviews

Pricing

from $1.50 / 1,000 products

Go to Apify Store
Tokopedia Scraper · Products, Shops & Reviews

Tokopedia Scraper · Products, Shops & Reviews

Scrape Tokopedia products from keywords, search URLs, categories, shops or product links. Get IDR prices, discounts, exact sold counts, ratings, specs, every variant with its own price and stock, reviews, seller stats and TikTok Shop IDs. Monitor mode returns only price changes.

Pricing

from $1.50 / 1,000 products

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Categories

Share

Turn Tokopedia keywords, search results, category pages, shop catalogues or product links into clean product rows: IDR prices, discounts, sold counts, ratings, every variant with its own price and stock, reviews and seller stats. No login, no cookies, no browser.

Schedule it in monitor mode and each run returns only new products and price moves, so you pay for changes instead of the whole catalogue again. Or switch to one row per review to collect a product's or a whole shop's reviews.

InputRows you get
Keyword (keywords)Products from Tokopedia search, with Tokopedia's own filters applied
Search URL (/search?q=…)The same results you see in the browser, filters kept
Category URL (/p/…)Products in that category
Shop URL (/shop-name, /product, /etalase/…)The shop's catalogue; add includeShopInfo for the shop's stats
Product URL (/shop-name/product-name) or bare product idOne product with full details

Why Use This Scraper?

  • ✅ Every Tokopedia entry point in one run: keywords, search URLs, category pages, shop catalogues and product links
  • ✅ Tokopedia's own filters: price range, 4 stars and up, Official Store or Power Shop, COD, discounts, condition, seller location and listing date
  • ✅ Full product pages on demand: description, brand and full specifications, all images, wishlist count, free-shipping flag, and every variant SKU with its own price, stock and link
  • ✅ Exact sold counts and per-star rating breakdowns, not only the rounded "10 rb+ terjual" badge
  • ✅ Written reviews nested in each product, or one row per review for a product or a whole shop, sorted and filtered your way (newest, most helpful, 1–2 stars only, with photos)
  • ✅ Monitor mode with an optional webhook: new products, price drops, discount changes, stock and sales moves, removed listings
  • ✅ TikTok Shop product, SKU and seller IDs on every row, for joining Tokopedia with TikTok Shop data

Overview

The Tokopedia Scraper is built for price-monitoring teams, brands watching their resellers, marketplace sellers researching competitors and analysts sizing categories on Indonesia's largest marketplace.

The dataset is always one row per product. A shop URL, a category page and a keyword all end up as product rows; the shop's own numbers travel with each product as shop… columns, and reviews are nested inside the product they belong to. Error rows (a URL that is not a Tokopedia page, a product that no longer exists) are separate, carry an error field and are never charged.

Listing rows come from Tokopedia's search API and are fast: about 200 products per request. Turn on full details when you need specifications, variants, stock or exact sold counts; those are read from the product page, six products per request.


Supported Inputs

URL types

TypeExample
Search resultshttps://www.tokopedia.com/search?q=sepatu&pmin=100000&ob=3
Keyword landing pagehttps://www.tokopedia.com/find/sepatu-pria
Categoryhttps://www.tokopedia.com/p/fashion-pria/sepatu-pria/pantofel-pria
Shophttps://www.tokopedia.com/tomkinsofficial
Shop tab or showcasehttps://www.tokopedia.com/tomkinsofficial/product, …/etalase/sneakers
Producthttps://www.tokopedia.com/tomkinsofficial/tomkins-hamnet-black-white-sepatu-sneakers-pria-1733389550990952357
Product id11869486942

m.tokopedia.com links work too. Tracking parameters such as extParam are ignored.

Copy-pasteable startUrls

{
"startUrls": [
"https://www.tokopedia.com/search?q=tas%20wanita&pmin=100000&pmax=300000",
"https://www.tokopedia.com/p/fashion-pria/sepatu-pria",
"https://www.tokopedia.com/tomkinsofficial"
]
}

Keyword mode

{ "keywords": ["sepatu", "laptop gaming", "skincare"], "maxItemsPerSource": 200, "maxItems": 600 }

Each keyword is its own search; maxItemsPerSource gives every keyword the same share of maxItems. Indonesian terms return the most products.

Unsupported inputs

  • Pages behind a login: cart, orders, chat, wishlist, seller center
  • Tokopedia Play, feeds, promo and help pages
  • TikTok Shop URLs (use the TikTok Shop IDs in the output to join the two)
  • Share links from the app (tk.tokopedia.com/…): open the link and paste the full product URL
  • Digital goods (pulsa, BPJS, insurance, game vouchers): Tokopedia sends those searches to its own digital pages, which list no marketplace products

Use Cases

WhoWhat they do with it
Brands and distributorsTrack resellers, spot unauthorised sellers and price breaks across Official and regular stores
Price-monitoring teamsSchedule monitor mode on key products and get price drops through a webhook
Marketplace sellersBenchmark competitors' prices, variants, sold counts and ratings
Category and market analystsSize categories by sold counts and rating volume, city by city
Product and catalogue teamsPull specifications, variant SKUs and images for feeds and PIM
ResearchersCollect written reviews with ratings, variant and date for sentiment work

How It Works

How the Tokopedia Scraper works

  1. Every keyword and URL is classified as a search, category, shop or product.
  2. Searches and categories are read from Tokopedia's search API, about 200 products per request, with Tokopedia applying your filters.
  3. Shop catalogues are read 80 products per page.
  4. With full details on, product pages are read six at a time: description, specifications, variants, stock, exact sold count and rating breakdown. Reviews and shop stats are added when asked for.
  5. Products are de-duplicated across all inputs and pushed as they are ready. In monitor mode each product is compared with the previous run first and only new or changed ones are pushed.

Input Configuration

Input fields

FieldTypeDefaultDescription
outputModestringproductsproducts: one row per product. reviews: one row per written review; a shop URL gives the shop's reviews
keywordsarraySearches, one per line, as typed in Tokopedia's search bar
startUrlsarraySearch, category, shop or product URLs and bare product ids, in any mix
scrapeDetailsbooleanfalseRead each product page for description, specifications, images, variants, stock, exact sold count and rating breakdown
maxReviewsPerProductinteger0Written reviews to attach to each product (0 = off, max 1000)
reviewSortstringnewestnewest, most_helpful, highest_rating, lowest_rating
reviewStarsarrayOnly reviews with these star ratings, e.g. ["1","2"]
reviewsWithMediaOnlybooleanfalseOnly reviews with buyer photos or videos
includeShopInfobooleanfalseAdd followers, active products, transactions, open-since date and shop rating to every row
sortBystringrelevancerelevance, reviews (best sellers first), newest, price_high, price_low
minPrice / maxPriceintegerPrice range in rupiah
ratingFourPlusbooleanfalseOnly products rated 4 stars and up
conditionstringanyany, new, used
shopTypestringanyany, official_store, power_shop
codOnlybooleanfalseOnly products that can be paid cash on delivery
discountedOnlybooleanfalseOnly discounted products
deliveryTypestringanyany, instant, same_day
minRatingstring00, 3, 3.5, 4, 4.5, 4.8: drops products rated lower (applied after the search)
stockTypestringanyany, ready_stock, preorder
listedWithinDaysstringanyany, 7, 14, 30, 90
locationsarraySeller areas: Jakarta, Jabodetabek, Bandung, Medan, Surabaya or any province
cityIdsstringTokopedia city ids (fcity) for cities not in the list, comma separated
categoryIdstringNarrow keyword searches to one category id (sc)
convertToCurrencystringnoneAlso give prices in USD, EUR, GBP, SGD, MYR, AUD, JPY, CNY, KRW, HKD, INR, THB, PHP, CAD or CHF
monitorModestringoffoff, price-changes, all-changes, new-only
monitorNamestringBaseline name for monitor mode; made from your inputs when empty
emitRemovedbooleanfalseIn monitor mode, one removed row per tracked product a complete run no longer finds
webhookUrlstringReceives the changed products as JSON after each monitor run
maxItemsinteger100Products to collect across all keywords and URLs (review rows in review-rows mode)
maxItemsPerSourceintegerOptional cap per keyword or URL
maxConcurrencyinteger10Requests in flight at once (1 to 30)
proxyConfigurationobjectApify ProxyThe default datacenter proxy works for Tokopedia

Filters apply to keywords and category pages. A pasted search URL keeps its own filters, and the input filters only fill in the ones the URL leaves unset. Shop catalogues take minPrice, maxPrice and minRating (applied to each product) and sortBy: "reviews" (best sellers first).

Common scenarios

Search with Tokopedia's filters

{
"keywords": ["iphone 15"],
"shopType": "official_store",
"minPrice": 10000000,
"ratingFourPlus": true,
"sortBy": "price_low",
"maxItems": 200
}

Full details, reviews and seller stats for a shop

{
"startUrls": ["https://www.tokopedia.com/tomkinsofficial"],
"scrapeDetails": true,
"maxReviewsPerProduct": 20,
"includeShopInfo": true,
"maxItems": 100
}

Complaints from one product's reviews

{
"startUrls": ["https://www.tokopedia.com/tomkinsofficial/tomkins-hamnet-black-white-sepatu-sneakers-pria-1733389550990952357"],
"maxReviewsPerProduct": 200,
"reviewSort": "lowest_rating",
"reviewStars": ["1", "2"]
}

A shop's reviews, one row each, lowest rating first

{
"outputMode": "reviews",
"startUrls": ["https://www.tokopedia.com/tomkinsofficial"],
"reviewSort": "lowest_rating",
"maxItems": 500
}

Daily price monitor with a webhook

{
"startUrls": ["https://www.tokopedia.com/p/handphone-tablet/handphone"],
"monitorMode": "price-changes",
"monitorName": "phones-daily",
"webhookUrl": "https://hooks.example.com/tokopedia",
"maxItems": 2000
}

Schedule the monitor input in Apify and keep monitorName the same on every run.


Output Overview

Each row is one product and has up to five groups of fields:

  • Listing: ids, name, URL, price, original price, discount, rating, sold count, image, category, seller name, city and type, badges, whether it is an ad, and where it was found (keyword, page, position)
  • Details (scrapeDetails, or any product URL): description, specifications, images, videos, condition, weight, order limits, stock, rating count and per-star breakdown, review topics, COD, pre-order, wholesale tiers, flash-sale campaign, category tree, creation date, variant groups and every variant SKU
  • Reviews (maxReviewsPerProduct above 0): written reviews in the order and with the filters you chose, plus writtenReviewCount
  • Converted prices (convertToCurrency): convertedPrice and convertedOriginalPrice in your currency, with the rate and its date
  • Seller stats (includeShopInfo): followers, active products, items sold, transactions, open-since date, location, shop rating and breakdown
  • Monitor (monitorMode): changeType, changedFields, previous values and the price difference

In review-rows mode (outputMode: "reviews") every row is one written review instead: stars, text, variant bought, date, reviewer, photos, likes, seller reply and Tokopedia's low-rating reason, plus the product it belongs to (id, name, URL, price, rating) and the shop.


Output Samples

Real row from a keyword search for sepatu with sortBy: "reviews", scrapeDetails, maxReviewsPerProduct: 2 and includeShopInfo, scraped 2026-09-24. Long lists are cut to one or two entries.

{
"productId": "100070724287",
"parentId": "100070724279",
"productName": "PVN Taeri Sepatu Sneakers Olahraga Wanita Sport Shoes blue Grey 265",
"productUrl": "https://www.tokopedia.com/pavillionshoes/pvn-taeri-sepatu-sneakers-olahraga-wanita-sport-shoes-blue-grey-265-1730635635437963091",
"price": 187181,
"originalPrice": 499900,
"discountPercentage": 63,
"currency": "IDR",
"rating": 4.9,
"soldCount": 296248,
"categoryName": "Sneakers Wanita",
"shopName": "pvnshoes",
"shopCity": "Tangerang",
"shopType": "official_store",
"ttsProductId": "1729435508359596883",
"source": "search",
"searchKeyword": "sepatu",
"position": 1,
"specifications": [{ "name": "Kondisi", "value": "Baru" }, { "name": "Kategori", "value": "Sneakers Wanita" }],
"condition": "new",
"weightGrams": 1000,
"stock": 189,
"ratingCount": 40092,
"ratingBreakdown": { "1": 177, "2": 107, "3": 370, "4": 3092, "5": 36346 },
"isCod": true,
"campaign": { "name": "Spesial Diskon", "originalPrice": 499900, "discountedPrice": 187181, "endsAt": "2026-09-30T16:59:59.000Z" },
"variantSkus": [
{ "productId": "100070724280", "options": ["Pink", "36(1)"], "price": 187181, "originalPrice": 499900, "stock": 0, "ttsSkuId": "1730635635437897555" }
],
"writtenReviewCount": 10000,
"reviews": [
{ "reviewId": "2318519907", "rating": 5, "text": "Bentuk dan ukuran: Pas", "variantName": "White - 40(5)", "createdAt": "2026-09-24T15:24:54.000Z", "isAnonymous": true }
],
"shopFollowers": 73165,
"shopOpenSince": "May 2021",
"shopRating": 4.9,
"shopRatingCount": 174923
}

Review-rows mode row from a shop URL (outputMode: "reviews", reviewSort: "lowest_rating", real run):

{
"reviewId": "702618568",
"rating": 1,
"text": "minta ukuran 39 dikasih 33 padahal sudah dichat.. diretur ongkir harus 2x pembeli yg bayar... lo biaya 1 x pengiriman gpp sih. makasih.",
"variantName": "33",
"createdAtText": "Lebih dari 1 tahun lalu",
"createdAtApprox": "2025-09-25",
"reviewerName": "Daedi",
"sellerResponse": "Terima kasih banyak telah berbelanja di Tomkins Official.\nkami kirimkan sesuai varian/size yang dipilih ya kak\nterimakasih",
"badRatingReason": "Kendala: Pelayanan penjual kurang",
"productId": "2436506346",
"productName": "TOMKINS Primal Alpha - Hitam Putih Sneakers Wanita Sepatu Olahraga",
"productUrl": "https://www.tokopedia.com/tomkinsofficial/tomkins-primal-alpha-hitam-putih-sneakers-wanita-sepatu-olahraga",
"shopName": "TOMKINS",
"source": "shop"
}

Monitor mode row: the same kind of product row plus these fields (real run, price-changes):

{
"productId": "1523827550",
"price": 25900,
"changeType": "price-drop",
"changedFields": ["price"],
"previousPrice": 50900,
"priceDelta": -25000,
"priceDeltaPercentage": -49.12,
"firstSeenAt": "2026-09-24T20:13:38.009Z",
"previousSeenAt": "2026-09-24T20:13:39.937Z"
}

Key Output Fields

Product

productId, parentId, productName, productUrl, brand, condition, status, createdAt, description, specifications, images, videos, weightGrams, wishlistCount

Price and stock

price, priceText, originalPrice, discountPercentage, currency, convertedPrice, convertedOriginalPrice, convertedCurrency, exchangeRate, exchangeRateDate, stock, minOrder, maxOrder, wholesale, campaign, cashbackPercentage, isPreorder, preorderDays, isCod, hasFreeShipping, shippingFromPrice, shippingEstimateText

Variants

variantGroups (each option with stock and image), variantSkus (each SKU with its own price, original price, discount, stock, order limits, URL, image and TikTok Shop SKU id)

Demand and ratings

soldCount, soldCountText, rating, ratingCount, ratingBreakdown, satisfactionText, reviewTopics, writtenReviewCount, reviews (each with rating, text, variantName, createdAt, images, videos, likeCount, sellerResponse, badRatingReason)

Seller

shopId, shopName, shopDomain, shopUrl, shopCity, shopType, isOfficialStore, isPowerMerchant, shopFollowers, shopActiveProducts, shopTotalSold, shopTotalTransactions, shopShowcaseCount, shopOpenSince, shopLocation, shopIsOpen, shopRating, shopRatingCount, shopRatingBreakdown

Category

categoryId, categoryName, categoryPath, categoryTree, ttsCategoryId

Where it was found

source, searchKeyword, sourceUrl, page, position, isAd, labels, scrapedAt

TikTok Shop IDs

ttsProductId, ttsSkuId, ttsShopId, ttsCategoryId

Review rows (outputMode: "reviews")

reviewId, rating, text, variantName, createdAt (product reviews), createdAtText and createdAtApprox (shop reviews), reviewerName, isAnonymous, images, videos, likeCount, sellerResponse, badRatingReason, productId, productName, productUrl, productPrice, productRating, writtenReviewCount, shopId, shopName, shopDomain

Monitor

changeType (new, price-drop, price-increase, discount-change, out-of-stock, back-in-stock, sales-change, rating-change, removed), changedFields, previousPrice, previousOriginalPrice, priceDelta, priceDeltaPercentage, previousStock, previousSoldCount, soldDelta, previousRatingCount, firstSeenAt, previousSeenAt


FAQ

Which Tokopedia URLs are supported?

Search results, /find/ keyword pages, category pages (/p/…), shops and their tabs, and product pages. Login pages, Tokopedia Play, promo pages and app share links are not; see Supported Inputs.

I pasted a shop URL. Why do I get product rows?

The dataset is always one row per product. The shop's catalogue becomes product rows, and with includeShopInfo on, each row also carries the shop's followers, transactions and rating.

Why does soldCount differ between runs with and without details?

Search results only show a rounded badge such as "100 rb+", which becomes 100000. The product page has the exact count (296248 in the sample above), so rows with details carry the exact number and soldCountText keeps Tokopedia's own label.

Why are there fewer reviews than ratings?

Many buyers leave stars without text. ratingCount counts every rating; reviews holds written reviews only, and writtenReviewCount says how many exist that match your review filters. Tokopedia reports at most 10,000 written reviews per product.

How many products can one search return?

Tokopedia serves up to 6,000 results per search, filter or category. For more, split the search by price range, seller location or category and put each part in its own keyword or URL.

Is there a best-selling sort?

Tokopedia no longer offers one. sortBy: "reviews" sorts by review volume, which puts the best sellers first: the top ten products for "sepatu" on that sort each showed "100 rb+" sold.

How does monitor mode charge?

The first run returns every product and saves them as the baseline. Later runs with the same monitorName return only new products and products whose watched fields changed. Unchanged products are not pushed and not charged. price-changes watches price and original price; all-changes also watches stock status, sold count and rating count, and needs scrapeDetails for stock and exact sales.

Can I get one row per review, or all of a shop's reviews?

Yes. Set outputMode to reviews. Keywords, categories and product URLs give each product's reviews as separate rows, with the product's id, name, URL, price and rating on every row; a shop URL gives the shop's reviews across all its products. maxItems then counts review rows, and each row is billed as one review.

Why do shop reviews have an approximate date?

Tokopedia shows shop reviews with relative times only ("2 bulan lalu", "Lebih dari 1 tahun lalu"). Each row keeps that text in createdAtText and a date worked out from it in createdAtApprox. Product reviews have the exact createdAt. Some older shop reviews also come without a product URL.

What does "removed" mean in monitor mode?

With emitRemoved on, a product that an earlier run found and this run no longer finds gets one removed row: it was delisted, dropped out of the results, or no longer matches your filters. Removals are only reported by runs that read every keyword and URL to the end, so a run stopped by maxItems, a per-source cap or Tokopedia's 6,000-result limit reports none.

Where do converted prices come from?

From the European Central Bank's daily reference rates (via frankfurter.dev), fetched once per run. The rupiah price always stays in price; if the rate cannot be fetched, the run continues without converted fields.

Is there a free-shipping filter?

No. Tokopedia no longer marks free shipping in its search results, so there is nothing to filter on. The delivery-speed filter (deliveryType) is available.

Do I need residential proxies?

No. The default Apify datacenter proxy works for Tokopedia's API, and runs recover from blocked requests by switching IP. Switch to RESIDENTIAL only if you see many retries in the log.

Can it scrape data behind a login?

No. It reads the public data any visitor sees: products, prices, public reviews and shop pages. Buyer accounts, orders, chats and seller dashboards are out of scope.

What are the TikTok Shop IDs for?

Tokopedia merged with TikTok Shop Indonesia in 2024, and Tokopedia's own API returns a TikTok Shop id for every product, SKU and seller. Use them to match Tokopedia listings with TikTok Shop data.


Support

Found a bug or need a field that is not there? Open an issue on the actor's Issues tab.

Email: muhamed.didovic@gmail.com


Additional Services

Need a custom scraper, a tailored export, or an integration into your own pipeline? Custom builds are available: muhamed.didovic@gmail.com.


Explore More Scrapers

  • Shopee Scraper: search, product and shop data across 11 Shopee markets
  • TikTok Shop Scraper: products, reviews, shops and creators
  • TikTok Shop Sales Scraper: units sold and revenue per product
  • AliExpress Scraper: products, prices and discounts
  • Coupang Scraper: Korean marketplace products, prices and ratings

Browse the full collection at apify.com/memo23.


🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/tokopedia-scraper).

Purpose: Public Tokopedia (Indonesia) product rows from keywords or search, category, shop and product URLs, with optional full details, reviews, seller stats and run-over-run change monitoring. No login.

Minimal input:

{ "keywords": ["sepatu"], "maxItems": 20 }

Output: one dataset row per product: productId, productName, productUrl, price, originalPrice, discountPercentage, currency (IDR), rating, soldCount, imageUrl, categoryName, shopName, shopDomain, shopCity, shopType, ttsProductId, source, searchKeyword, position. With scrapeDetails: description, specifications, images, stock, ratingCount, ratingBreakdown, variantSkus [{productId, options, price, stock}], campaign. With maxReviewsPerProduct: reviews [{rating, text, variantName, createdAt}], writtenReviewCount. Failed inputs return {error, errorKind, message, url}.

Behaviors an agent should know:

  • Always set maxItems; it counts products across all keywords and URLs. One search stops at 6,000 results.
  • Product URLs always return full details. For other inputs set scrapeDetails: true when stock, variants or exact sold counts are needed.
  • Filters (minPrice, shopType, locations…) apply to keywords and categories; a pasted search URL keeps its own.
  • Monitor mode (monitorMode, monitorName) keeps a baseline in a named key-value store in the caller's account and returns only new or changed products after the first run; emitRemoved adds removed rows after complete runs.
  • Reviews: reviewSort (newest, most_helpful, highest_rating, lowest_rating), reviewStars (e.g. ["1","2"]), reviewsWithMediaOnly. outputMode: "reviews" returns one row per review instead of product rows (a shop URL gives the shop's reviews) and maxItems counts reviews.
  • Billing: product per delivered row, product-detail per row with full details, review per attached review. Error rows and unchanged monitor products are free.
  • Not available: login-only data, Tokopedia Play, app share links.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by PT Tokopedia, TikTok, ByteDance Ltd., or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Tokopedia product, category, shop and review data, with no authenticated endpoints, paid features, or content behind the Tokopedia login wall. Users are responsible for ensuring their use complies with Tokopedia's Terms of Service, applicable data-protection law (Indonesia's PDP Law, GDPR, CCPA, etc.), and any contractual obligations of their own organization.


SEO Keywords

Tokopedia scraper, scrape Tokopedia, Tokopedia API, Tokopedia product scraper, Tokopedia shop scraper, Tokopedia reviews scraper, Tokopedia shop reviews, Tokopedia price monitor, Apify Tokopedia, tokopedia.com scraper, Indonesia ecommerce scraper, Indonesian marketplace data, Tokopedia sold count, Tokopedia seller data, Tokopedia category scraper, ecommerce price tracking, competitor price monitoring, product catalog export, marketplace analytics Indonesia, TikTok Shop Indonesia data, Southeast Asia ecommerce data