Tokopedia Product Scraper — Prices, Sold & Sellers avatar

Tokopedia Product Scraper — Prices, Sold & Sellers

Pricing

from $2.60 / 1,000 product listings

Go to Apify Store
Tokopedia Product Scraper — Prices, Sold & Sellers

Tokopedia Product Scraper — Prices, Sold & Sellers

Search Tokopedia by keyword or search URL and save product cards with IDR price, old price, discount, rating, units sold, shop name, and city. HTTP search API, no browser. Built for price checks and catalog research in Indonesia.

Pricing

from $2.60 / 1,000 product listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by PT Tokopedia or its affiliates. Data is read from publicly accessible search results only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Search Tokopedia by keyword or search URL and extract product cards with IDR price, old price, discount, rating, units sold, shop name, and city. This Tokopedia scraper is an API alternative for price checks and catalog research on Indonesia’s marketplace. Run it from Python, Node.js, or MCP; export JSON / CSV / dataset. HTTP only — no headless browser.

Crawloop Marketplace & E-commerce Suite — Tokopedia search cards, then AliExpress, Amazon, Flipkart, or Walmart for the same product outside Indonesia.

Tokopedia Product Scraper ◄── you are hereAliExpress Search ScraperAmazon Search ScraperFlipkart ScraperWalmart Scraper
Tokopedia keyword cards, IDR price, sold count, shopAliExpress prices, sold count, ChoiceAmazon keyword SERP, badges, sponsoredFlipkart INR price, MRP, AssuredWalmart ZIP-local prices

When to use this Actor

  • Indonesia price checks — selling price, old price, and percent off on a keyword
  • Catalog pulls — product id, title, rating, sold count, and image from search
  • Seller shortlists — shop name, city, and cash-on-delivery label from the card
  • Scheduled refresh — same query, compare price and soldCount over time

When not to use this Actor

  • Product-page specs, variants, or review text — search cards only
  • Shop review monitoring — this Actor does not walk shop or product review pages
  • AliExpress, Amazon, Flipkart, or Walmart — use the sibling Actors in the table above

Key Features

  • Keyword search — query or batch queries (up to 4 in parallel)
  • Paste search URLs — URLs must include q=. Product page URLs are rejected
  • Sort — relevance, price low to high, price high to low, newest
  • Pagination + caps — up to 20 pages per query, or stop at maxItems
  • Filters — minPrice, maxPrice in IDR, minRating, minSold
  • HTTP — Chrome TLS impersonation, 256 MB. No proxy by default

How to scrape Tokopedia search results

  1. Set a keyword in query, or paste search URLs in searchUrls.
  2. Cap volume with maxItems and maxPages.
  3. Run the Actor. Download the default dataset as JSON, CSV, or Excel — or call it from Python, Node.js, or MCP.

Input Parameters

ParameterTypeDefaultDescription
queryString—Primary search keyword
queriesArray—Extra keywords (same filters and page cap)
searchUrlsArray—Search URLs with q=. Product pages are rejected
sortStringrelevancerelevance, price_asc, price_desc, newest
maxPagesInteger1Pages per query/URL (1–20)
maxItemsInteger—Product cap per query or URL
startPageInteger1First page
minPrice / maxPriceNumber—Drop cards outside this IDR range
minRatingNumber—Minimum rating (0–5)
minSoldInteger—Minimum units sold from the card label
deduplicateIdsBooleantrueOne row per productId in the run
maxConcurrencyInteger2Parallel queries (1–4)
proxyConfigurationObjectoffApify Proxy. Leave off unless a run returns no cards

Input example

{
"query": "sepatu",
"sort": "relevance",
"maxPages": 1,
"maxItems": 40
}

Output

Each dataset item is one search card.

FieldDescription
productIdTokopedia product id
titleCard title
price, oldPrice, priceTextSelling price and previous price in rupiah
discountPercentPercent off from the ribbon, or computed from the old price
currencyAlways IDR
ratingStar rating on the card
soldCount, soldLabelUnits sold. soldCountMinimum is true when the label is N+
shopName, shopCity, shopTierSeller shop from the card
cashOnDeliveryTrue when the card says Bisa COD
category, categoryPathCategory name and breadcrumb
imageUrl, productUrlImage and product link. Image URLs can expire
page, position, searchQueryWhere the card was found
scrapedAtUTC timestamp

Output example

{
"source": "tokopedia_search",
"searchQuery": "sepatu",
"page": 1,
"position": 1,
"productId": "11311819274",
"title": "COPPER Hybrid Case",
"price": 119900,
"oldPrice": 300000,
"discountPercent": 60,
"currency": "IDR",
"rating": 5.0,
"soldCount": 18,
"soldCountMinimum": false,
"soldLabel": "18 terjual",
"shopName": "Copper Shop",
"shopCity": "Medan",
"cashOnDelivery": true,
"productUrl": "https://www.tokopedia.com/copper/hybrid-case",
"scrapedAt": "2026-10-08T08:00:00Z"
}

Use Cases

Use caseWhat you getWhy it helps
Price monitoringprice, oldPrice, discountPercentTrack promo depth on a keyword
Catalog buildProduct id, title, image, URLSeed a sheet without opening each product page
Demand signalsoldCount, ratingPrefer cards that already sell
Cross-border checkSame keyword on AliExpress or AmazonCompare an Indonesia card with another catalog

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/tokopedia-product-scraper').call({
query: 'sepatu',
maxPages: 1,
maxItems: 40
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/tokopedia-product-scraper").call(
run_input={"query": "sepatu", "maxPages": 1, "maxItems": 40}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("productId"), item.get("title"), item.get("price"), item.get("soldCount"))

cURL

curl "https://api.apify.com/v2/acts/crawloop~tokopedia-product-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"sepatu","maxPages":1,"maxItems":40}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by Store ID crawloop/tokopedia-product-scraper.

Example prompts:

  • "Run Tokopedia Product Scraper for sepatu, 1 page, return productId, title, price, soldCount, and shopName"
  • "Scrape Tokopedia for iphone case, keep cards rated 4 and up with at least 10 sold, summarize the cheapest 20"
  • "Chain Tokopedia Product Scraper then AliExpress Search Scraper for the same keyword and compare IDR cards with the cross-border SERP"

Suite next step

After a Tokopedia keyword pull, compare the same products on AliExpress Search Scraper. For a US SERP, use Amazon Search Scraper. For India catalog cards, use Flipkart Scraper.


FAQ

Does this open product pages? No. One search request per page. Specs, variants, and review text that are not on the card are not collected.

What does sold count mean? It is the card label (18 terjual, 70+ terjual). soldCountMinimum is true when the label uses a plus. 1rb is stored as 1000.

What if the run saves nothing? An empty keyword finishes without rows and without a crash. A blocked search API does the same and sets a status message. If that happens, turn on a residential proxy for the next run.

Can I schedule it? Yes. Save a task with the same keyword and run it on a schedule. Compare price and soldCount across runs.