Tokopedia Product Scraper
Under maintenancePricing
from $4.99 / 1,000 results
Tokopedia Product Scraper
Under maintenanceEfficiently scrape product data from Tokopedia search results including prices, shop details, sales metrics, and more.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Extracts source-backed products from public Tokopedia search pages with a rendered browser. Output includes the canonical product URL, visible pricing and commerce metadata, shop details, image, query/sort/page provenance, and capture time. Empty optional values and thin records are not stored.
{"searchQuery": "wireless headphones","sortBy": "relevance","maxItems": 10,"maxPages": 1,"proxyConfiguration": { "useApifyProxy": false }}
Direct access is the default. Configure Apify Proxy or custom proxy URLs only when required. maxItems and maxPages are hard bounds; navigation is sequential and duplicates are removed by canonical product URL. CAPTCHA, access-denied, and rate-limit pages fail the run instead of becoming data.
Searches rendered Tokopedia product results and emits only rich, source-backed product records.
Input
| Field | Required | Description |
|---|---|---|
searchQuery | Yes | Product keyword for Tokopedia search. |
sortBy | No | relevance, price_asc, price_desc, newest, or most_reviewed; defaults to relevance. |
maxItems | No | Unique record cap from 1 to 600; defaults to 60. |
maxPages | No | Bounded search-page count from 1 to 20; defaults to 10. |
proxyConfiguration | No | Apify Proxy settings, custom HTTP(S) proxy URLs, or { "useApifyProxy": false } for explicit direct mode. Direct access is the default everywhere. |
The input is a strict JSON object. Unknown keys, missing queries, invalid sort modes, and invalid limits/proxy settings are rejected.
Output
Every item includes name, canonical url, source, sourcePageUrl, searchQuery, sequential position, and scrapedAt. A record is pushed only when it has at least three additional visible product/shop fields. Depending on the rendered card, these include price, original price, discount, rating, sold text, shop name, city, badge, and image URL.
Fields are omitted when unavailable; the actor never invents numeric zeroes, currency, product IDs, URLs, city, badges, or prices. Product URLs are canonicalized/deduplicated, pagination is bounded, and challenge/blocked/zero-result runs fail rather than silently succeeding.
Structure
src/main.jsowns only Apify lifecycle and input/proxy setup.src/crawl.jsowns the bounded Playwright crawl and pagination.src/extract.jsowns rendered-card extraction and challenge detection.src/normalize.jsowns canonicalization, sanitation, and rich-record validation.src/schema/input.jsowns input validation and URL construction.test/input.test.jscovers input validation and URL normalization.
Example input
{"searchQuery": "wireless headphones","sortBy": "relevance","maxItems": 2,"maxPages": 2}
Example output
{"name": "Example Wireless Headphones","url": "https://www.tokopedia.com/example-shop/example-wireless-headphones","price": "Rp799.000","originalPrice": "Rp999.000","discount": "20%","rating": "4.8","sold": "100+ terjual","shopName": "Example Shop","shopCity": "Jakarta","badge": "Official Store","imageUrl": "https://images.tokopedia.net/example.jpg","source": "tokopedia.com","sourcePageUrl": "https://www.tokopedia.com/search?st=product&q=wireless%20headphones","searchQuery": "wireless headphones","sortBy": "relevance","page": 1,"pagePosition": 1,"position": 1,"scrapedAt": "2026-08-18T12:00:00.000Z"}