
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Tokopedia products by keyword, category, shop or product URL: prices, original prices, discounts, ratings, sold counts, shop name, city and type, images, plus optional details (description, stock, variants) and reviews. No login needed.
Scrape products from Tokopedia, Indonesia's largest online marketplace, by keyword, category, shop or product URL. Each product row has the name, price, original price, discount, rating, sold count, shop name, city and shop type, the category and images. Turn on details to add the description, stock, exact sold count, variants and campaign, and turn on reviews to add customer reviews. No login is needed, a 20-product search usually finishes in seconds, and it costs $0.60 per 1,000 products.
sepatu lari), or paste Tokopedia URLs: a search page, a category (tokopedia.com/p/...), a shop (tokopedia.com/shop-name) or a product page.| Field | What it does |
|---|---|
keywords | Search terms, one search per keyword |
startUrls | Tokopedia search, category, shop or product URLs |
maxItems | Max products per keyword or URL (default 20) |
sort | relevance, most_reviewed, newest, highest_price, lowest_price |
minPrice / maxPrice | Price range in rupiah |
locations | Seller provinces or cities, e.g. DKI Jakarta, Jabodetabek, Bandung |
shopType | all, mall, power_shop, mall_and_power_shop |
condition | any, new, used |
fourStarsAndUp, discountOnly, codOnly | Extra filters |
includeDetails | Add description, stock, variants, campaign and more |
includeReviews, maxReviewsPerProduct, reviewSort | Add customer reviews |
{
"keywords": ["sepatu lari"],
"startUrls": ["https://www.tokopedia.com/p/komputer-laptop"],
"maxItems": 20,
"minPrice": 100000,
"maxPrice": 1000000,
"locations": ["DKI Jakarta"],
"sort": "most_reviewed",
"includeDetails": true,
"includeReviews": true,
"maxReviewsPerProduct": 5
}
| Field | Description |
|---|---|
product_id, title, product_url | Product identity and clean link |
price, price_number | Display price (Rp241.000) and the number |
original_price, original_price_number, discount_percentage | Price before the discount |
rating, sold_count, sold_count_number | Rating and units sold (1rb+ terjual → 1000) |
shop_id, shop_name, shop_url, shop_city, shop_type | Seller (Mall, Power Shop or Regular) |
category_id, category_name, category_breadcrumb | Category |
image_url, image_urls, labels, is_ad | Images, offer labels (COD, bonus) and ad flag |
keyword, source_type, page, position | Where the product came from |
With details: description, specifications, status, stock, sold_total, review_count, weight, condition, category_path, variants, variant_children, campaign, wholesale | Full product page data |
With reviews: reviews[] | rating, message, variant, reviewer_name, created_at, likes, images, seller_response |
Example row from a test run (some values shortened; the review is a fictional sample):
{
"keyword": "sepatu lari",
"source_type": "search",
"page": 1,
"position": 3,
"product_id": "102405318185",
"title": "Sepatu Lari Pria Running Shoes Ringan",
"product_url": "https://www.tokopedia.com/example-sport-official/sepatu-lari-pria-running-shoes-ringan",
"image_url": "https://p16-images-sign-sg.tokopedia-static.net/...300:300.jpeg",
"price": "Rp375.200",
"price_number": 375200,
"original_price": "Rp469.000",
"original_price_number": 469000,
"discount_percentage": 20,
"rating": 4.9,
"sold_count": "250+ terjual",
"sold_count_number": 250,
"labels": ["Bisa COD"],
"shop_name": "Example Sport Official",
"shop_url": "https://www.tokopedia.com/example-sport-official",
"shop_city": "Jakarta Selatan",
"shop_tier": 2,
"shop_type": "Mall",
"category_name": "Olahraga",
"category_breadcrumb": "olahraga/perlengkapan-lari/sepatu-lari-pria",
"is_ad": false,
"stock": 8,
"sold_total": 261,
"review_count": 31,
"condition": "NEW",
"weight": 800,
"weight_unit": "GRAM",
"category_path": ["Olahraga", "Perlengkapan Lari", "Sepatu Lari Pria"],
"variants": [{"name": "ukuran", "options": ["39", "40", "41", "42", "43"]}],
"campaign": {"name": "Kejar Diskon", "discount_percentage": 20, "original_price": 469000, "discounted_price": 375200},
"reviews": [
{
"rating": 5,
"message": "Ringan dan nyaman dipakai lari pagi.",
"variant": "42",
"reviewer_name": "B***i",
"created_at": "2026-09-20T08:15:00Z",
"likes": 2,
"images": [],
"seller_response": "Terima kasih kak!"
}
]
}
You pay $0.60 per 1,000 products ($0.0006 per product) plus a small platform usage fee for compute and proxy traffic. Details and reviews have no extra event fee, but they make the run longer, so usage is a bit higher.
Set a maximum total charge on the run and the scraper stops cleanly when it's reached.
Is scraping Tokopedia legal? It collects only public product information that anyone can see without logging in. Check the rules that apply to how you use the data, especially personal data in reviews.
Do I need a Tokopedia account or a proxy? No account or cookies. The default datacenter proxy works well. Switch to residential only if you see blocks.
How many products can I get?
Up to 100,000 per keyword or URL. Tokopedia itself stops one search at about 6,000 results, so for bigger jobs the scraper automatically re-reads the search in price bands and keeps only new products (a broad keyword like kaos gives 10,000 unique products this way). Narrow keywords simply return everything Tokopedia has.
Why is a field empty?
Some fields depend on the listing, for example original_price only appears on discounted products, and stock and variants only appear with details turned on. Products from a single product URL have no page or position.
Can I schedule it or use the API? Yes. Schedule runs to track prices daily and read results through the API, webhooks or integrations.
Which language is the data in?
The language Tokopedia uses: titles, descriptions and labels such as terjual (sold) are mostly in Indonesian. Prices are in Indonesian rupiah.
tokopedia.com/p/komputer-laptop) can include a few listings that are no longer for sale (their status shows WAREHOUSE when details are on). Sub-category URLs and keywords return live listings.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
keywordsarrayOptionalSearch keywords
Words to search on Tokopedia, one per line, for example 'sepatu lari' or 'iphone 15'. Each keyword is a separate search.
startUrlsarrayOptionalTokopedia URLs
Tokopedia search URLs (filters in the URL are kept), category URLs (tokopedia.com/p/...), shop URLs (tokopedia.com/shop-name) or product URLs.
maxItemsintegerOptionaldefault 20Max products per keyword or URL
How many products to save for each keyword or URL. A product URL always gives one product.
sortenumOptionaldefault "relevance"Sort by
Order of search, category and shop results.
minPriceintegerOptionalMin price (Rp)
Only products at or above this price in Indonesian rupiah.
maxPriceintegerOptionalMax price (Rp)
Only products at or below this price in Indonesian rupiah.
locationsarrayOptionalSeller locations
Only sellers shipping from these provinces or cities, for example 'DKI Jakarta', 'Jabodetabek', 'Bandung', 'Surabaya' or 'Jawa Timur'.
shopTypeenumOptionaldefault "all"Shop type
Only official Mall stores, Power Shops, or both.
conditionenumOptionaldefault "any"Condition
New or used products.
fourStarsAndUpbooleanOptionaldefault falseRating 4 stars and up
Only products rated 4 stars or higher.
discountOnlybooleanOptionaldefault falseDiscounted only
Only products with a discount.
codOnlybooleanOptionaldefault falseCash on delivery only
Only products that can be paid on delivery (COD).
includeDetailsbooleanOptionaldefault falseInclude product details
Open each product to add the description, all images, stock, exact sold count, review count, weight, condition, category path, variants and campaign. Slower.
includeReviewsbooleanOptionaldefault falseInclude reviews
Add each product's customer reviews (rating, text, variant, date, photos, seller reply).
maxReviewsPerProductintegerOptionaldefault 10Max reviews per product
How many reviews to add to each product when reviews are included. At most 1,000, because reviews are saved inside the product's row, which has a size limit.
reviewSortenumOptionaldefault "newest"Review order
Which reviews come first.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxy works for Tokopedia. Switch to residential only if you see blocks.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| product_id | string | null | |
| title | string | null | |
| product_url | string | null | |
| price_number | number | null | |
| original_price_number | number | null | |
| discount_percentage | number | null | |
| rating | number | null | |
| sold_count | string | null | |
| shop_name | string | null | |
| shop_city | string | null | |
| image_url | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Product | One Tokopedia product saved to the dataset (details and reviews included when turned on). | $0.0006 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/tokopedia-scraper').call({
"keywords": [
"game"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/tokopedia-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/tokopedia-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Tokopedia products for a keyword with full details.
Products with up to 5 reviews each.
Only new items from Tokopedia Mall shops.
Products in a price range, cheapest first.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.