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

1

Bookmarked

30

Total users

22

Monthly active users

2 days 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. Switch to one row per review to collect a product's or a whole shop's reviews, or to one row per shop to find sellers. Leave the input empty and it returns Tokopedia's best sellers across every category.

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, plus the products Tokopedia recommends with it if you ask
Recommendation page (/rekomendasi/<id>) or the home pageThe products in Tokopedia's recommendation widgets or "for you" feed
Nothing at allPopular products: the home feed plus the best sellers of every top-level category
Keyword or shop URL with outputMode: "shops"One row per shop: followers, products, items sold, transactions, rating

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 and 2 stars only, with photos)
  • โœ… Monitor mode with an optional webhook: new products, price drops, discount changes, stock and sales moves, removed listings
  • โœ… Shop search: one row per seller with followers, active products, items sold, transactions and rating breakdown
  • โœ… Recommended products for any product (more from the shop, other choices, brands for you), and a no-keyword mode for Tokopedia's best sellers
  • โœ… Image links that keep working: Tokopedia's own links expire within hours, this actor returns permanent ones, and can save images and videos to storage
  • โœ… Export to Notion, Airtable, Linear or Slack through Apify MCP connectors, with no API keys in the input
  • โœ… 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.

By default the dataset is 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. outputMode switches to one row per review or one row per shop. 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
Shop searchhttps://www.tokopedia.com/search?st=shop&q=sepatu
Recommendations for a producthttps://www.tokopedia.com/rekomendasi/11869486942
Home page feedhttps://www.tokopedia.com/
Share linkhttps://tk.tokopedia.com/โ€ฆ, https://vt.tokopedia.com/โ€ฆ

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, promo and help pages
  • TikTok Shop URLs (use the TikTok Shop IDs in the output to join the two)
  • 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.
  6. Shop searches read Tokopedia's shop tab, 60 shops per request, and look each shop up for its stats. Recommendations and the home feed come from the same widgets the website shows.
  7. At the end of the run, the rows can go to Notion, Airtable, Linear or Slack through the Apify MCP connectors you picked.

Input Configuration

Input fields

FieldTypeDefaultDescription
outputModestringproductsproducts: one row per product. reviews: one row per written review; a shop URL gives the shop's reviews. shops: one row per shop
keywordsarraySearches, one per line, as typed in Tokopedia's search bar. Empty keywords and URLs: popular products
startUrlsarraySearch, shop-search, category, shop, product, recommendation and home page URLs, share links 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
includeRecommendationsbooleanfalseFor product URLs and ids: also the products Tokopedia recommends on that product's page
includeRawDatabooleanfalseAdd Tokopedia's unprocessed response under raw
downloadMediastringnonenone, images, images-and-videos: save the files to the run's key-value store, listed in mediaFiles
maxMediaPerProductinteger10Images saved per product
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
freeShippingOnlybooleanfalseTokopedia's Bebas Ongkir filter; product pages are checked again when details are on
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
exportConnectorsarrayApify MCP connectors (Notion, Airtable, Linear, Slack) to send the rows to
exportNotionParentPagestringNotion page URL or id the new pages go under
exportAirtableBase / exportAirtableTablestringAirtable base and table, by id or exact name
exportLinearTeamstringLinear team for the issues
exportSlackChannelstringSlack channel id for the run summary
maxExportItemsinteger50Rows sent to each app per run
maxItemsinteger100Products to collect across all keywords and URLs (review rows or shop rows in those modes)
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, recommendations and the home feed take minPrice, maxPrice and minRating (applied to each product); shop catalogues also take sortBy: "reviews" (best sellers first). Shop search takes locations, cityIds and shopType.

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.

Find sellers: Official Stores selling shoes in Jakarta

{
"outputMode": "shops",
"keywords": ["sepatu"],
"shopType": "official_store",
"locations": ["DKI Jakarta"],
"maxItems": 100
}

Best sellers across Tokopedia, no keyword

{ "maxItems": 500, "maxItemsPerSource": 20, "scrapeDetails": true }

Leave keywords and URLs empty: the run reads the home page feed and the best sellers of 25 top-level categories (or only the category in categoryId).

A product and everything Tokopedia recommends with it, images saved

{
"startUrls": ["https://www.tokopedia.com/tomkinsofficial/tomkins-hamnet-black-white-sepatu-sneakers-pria-1733389550990952357"],
"includeRecommendations": true,
"maxItemsPerSource": 30,
"downloadMedia": "images"
}

Weekly price drops into Notion

{
"keywords": ["iphone 15"],
"monitorMode": "price-changes",
"monitorName": "iphone-weekly",
"exportConnectors": ["<your Notion connector>"],
"exportNotionParentPage": "https://www.notion.so/Price-watch-1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d"
}

Authorize Notion once under Settings > API & Integrations > MCP connectors in Apify Console, then pick it in the input. Airtable works the same way: name your table's columns like the output fields (productName, price, soldCount, productUrlโ€ฆ) and those columns are filled.


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

  • Recommendations (includeRecommendations, /rekomendasi/ URLs): recommendationWidget, recommendationType and recommendedForProductId on each recommended product

  • Media (downloadMedia): mediaFiles, each with the saved file's download URL, key and size

  • Raw data (includeRawData): Tokopedia's unprocessed listing card and product page responses under raw

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.

In shop mode (outputMode: "shops") every row is one shop: name, URL, location, Official Store and Power Merchant flags, followers, active products, items sold, transactions, open-since date, rating with its breakdown, and up to three of its products as the search shows them.

Image links in every row are permanent. Tokopedia's own image links are signed and stop working within hours; the actor rewrites them to the same files on an unsigned address.


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"
}

Shop mode row from a shop search for laptop (real run, 2026-10-01, sample products cut to one):

{
"shopId": "13796999",
"ttsShopId": "7495481796825615202",
"shopName": "Technovo Laptop Shop",
"shopUrl": "https://www.tokopedia.com/technovo-laptop-shop",
"shopLocation": "Jakarta Utara",
"shopIsOfficial": false,
"shopIsPowerMerchant": true,
"shopFollowers": 5064,
"shopActiveProducts": 9,
"shopTotalSold": 2712,
"shopTotalTransactions": 2020,
"shopOpenSince": "December 2023",
"shopIsOpen": true,
"shopRating": 4.9,
"shopRatingCount": 1301,
"shopRatingBreakdown": { "1": 19, "2": 12, "3": 17, "4": 44, "5": 1209 },
"sampleProducts": [
{ "productId": "100514856115", "productName": "Mouse usb for laptop wirless", "price": 29999 }
],
"source": "shop-search",
"searchKeyword": "laptop",
"position": 17
}

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, appLink, brand, condition, status, createdAt, description, specifications, imageUrl, images, videoUrl, videos, videosExpireAt, mediaFiles, weightGrams, wishlistCount, raw

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 (search, category, shop, product-url, recommendation, home-feed, shop-search), searchKeyword, sourceUrl, page, position, isAd, labels, scrapedAt, and for recommendations recommendationWidget, recommendationType, recommendedForProductId

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

Shop rows (outputMode: "shops")

shopId, ttsShopId, shopName, shopDomain, shopUrl, shopLocation, shopTagline, shopDescription, shopIsOfficial, shopIsPowerMerchant, shopIsPowerMerchantPro, shopAvatarUrl, shopFollowers, shopActiveProducts, shopTotalSold, shopTotalTransactions, shopShowcaseCount, shopOpenSince, shopIsOpen, shopRating, shopRatingCount, shopRatingBreakdown, hasFreeShippingVoucher, cashbackVoucher, sampleProducts

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?

By default a shop URL gives its catalogue as product rows, and with includeShopInfo on, each row also carries the shop's followers, transactions and rating. Set outputMode to shops for one row with the shop itself, or to reviews for the shop's reviews.

Can I search for shops instead of products?

Yes. With outputMode: "shops", keywords search Tokopedia's shop tab (the same as search?st=shop&q=โ€ฆ), and shop or product URLs give that shop. Each shop row is billed at the product price. locations, cityIds and shopType narrow the search.

What happens if I give no keyword and no URL?

The run takes popular products: the home page's "for you" feed and the best sellers (most reviewed first) of 25 top-level categories, an even share from each unless maxItemsPerSource says otherwise. Put a category id in categoryId to take the best sellers of that one category instead.

Not the ones this actor returns. Tokopedia signs its image links and they stop working within hours (an expired one answers 403); the actor rewrites them to the same files on an address that needs no signature. Product video links from product pages do expire: videosExpireAt says when. Turn on downloadMedia to keep the files themselves.

How does export to Notion, Airtable, Linear or Slack work?

Through Apify MCP connectors. You authorize the app once in Apify Console, pick the connector in exportConnectors, and the run sends its rows at the end: one Notion page per row (title, image, price, rating, link) under the page you name, one Airtable record per row in the columns whose names match output fields, one Linear issue per row, or one Slack summary message. The actor never sees your app credentials. maxExportItems caps how many rows go out, and EXPORT_REPORT in the run's key-value store lists what each app received. Slack's MCP server only accepts registered Slack apps, so it works only if your workspace allows it.

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?

Yes, freeShippingOnly. Tokopedia dropped it from its filter menu but the search still applies it. With scrapeDetails on, each product page is checked too and products without free shipping are dropped and not billed. Most products ship free now, so the filter trims few results. The delivery-speed filter (deliveryType) is there as well.

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; or one row per review or per shop. 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 product or shop row, product-detail per row with full details, review per attached review or review row. Error rows and unchanged monitor products are free.
  • outputMode: "shops" returns one row per shop (keywords search shops); each is billed as one product event.
  • Empty keywords and startUrls returns popular products (home feed plus best sellers of 25 categories).
  • includeRecommendations adds recommended products for product URLs; image URLs in rows are permanent.
  • Not available: login-only data, Tokopedia Play.

โš ๏ธ 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 shop search, Tokopedia seller finder, Tokopedia best sellers, Tokopedia recommendations, Tokopedia to Notion, Tokopedia to Airtable, 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