Shopee Search Results Scraper
Pricing
from $5.05 / 1,000 results
Shopee Search Results Scraper
Collect products from Shopee search results by keyword or search URL. Each row includes the title, current and original prices, discount, rating, seller location, image, product URL, and shop and item IDs. Supports eight markets and reads public pages without login.
Pricing
from $5.05 / 1,000 results
Rating
0.0
(0)
Developer
Axiom Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Returns: one row per Shopee product with title, price, originalPrice, discountPercent, rating, location, url and image.
Input: {"searchTerms": ["wireless earbuds"], "country": "SG", "maxItems": 50}
Best for: price monitoring across Southeast Asian and Brazilian marketplaces, product research before sourcing, competitor and discount tracking.
{"title": "DES SNEAKERS PROMO Sepatu / sneaker PRIA DAN WANITA NEW MODE API DS20","price": 30328,"originalPrice": 210000,"currency": "IDR","discountPercent": 86,"rating": 4.1,"location": "Kab. Bogor","url": "https://shopee.co.id/DES-SNEAKERS-PROMO-Sepatu-sneaker-PRIA-DAN-WANITA-NEW-MODE-API-DS20-i.651940814.13268587518"}
What does Shopee Product Scraper do?
Shopee Product Scraper is a Shopee scraper for search results. Give it keywords (in any language) and a country, or paste Shopee search URLs, and it returns one row per product card: the product title, current price, strike-through price, discount, star rating, the seller's ship-from location, the product image, the product URL and the shop and item IDs. It works on eight Shopee markets: Singapore (shopee.sg), Malaysia (shopee.com.my), the Philippines (shopee.ph), Indonesia (shopee.co.id), Thailand (shopee.co.th), Vietnam (shopee.vn), Taiwan (shopee.tw) and Brazil (shopee.com.br).
It reads the public search result pages, with no login, no cookies and no Shopee account. Each search page holds 40 products and the Actor walks through the pages (up to 16 per search) until it has as many results as you asked for. Prices come back both as shown on the page (priceText, in the local number format) and as plain numbers (price), with the ISO currency code of the market, so a spreadsheet or database can use them directly.
Use it as a lightweight Shopee API alternative when you need search results: what is listed for a keyword, at what price, how deep the discounts are, how products are rated and where sellers ship from. It is built for fast, repeatable runs that you can schedule or call from AI agents.
What data can you get from Shopee?
| Field | Description | Example |
|---|---|---|
id | Shopee item ID (same as itemId), unique within a run | 52518535489 |
itemId | Item ID from the product link | 52518535489 |
shopId | Seller shop ID from the product link | 177674139 |
title | Product name shown on the result card | Jabra Elite 85t ... Wireless Earbuds |
url | Product page URL on the market's site | https://shopee.sg/...-i.177674139.52518535489 |
image | Main product image URL | https://down-sg.img.susercontent.com/file/... |
price | Current (promotion) price as a number | 33.49 |
priceText | Current price as shown, local number format | 33.49, 30.328, 79,90 |
originalPrice | Strike-through price before discount, as a number | 210000 |
originalPriceText | Strike-through price as shown | 210.000 |
currency | ISO currency code of the market | SGD, IDR, BRL |
discountPercent | Discount from the card's badge | 52 |
discountText | Discount badge as shown | -52%, 5折 |
rating | Star rating shown on the card (0-5) | 4.5 |
location | Seller's ship-from location | Mainland China, Minas Gerais |
market | Shopee site the product came from | shopee.sg |
searchKeyword | Keyword that returned the product | wireless earbuds |
position | 1-based rank in the results for that keyword | 1 |
scrapedAt | Time the search page was fetched (ISO 8601) | 2026-10-14T19:39:23.973Z |
sourceUrl | Search page the product card was read from | https://shopee.sg/search?keyword=wireless%20earbuds&page=0 |
A few notes on coverage, measured on real runs:
originalPriceandoriginalPriceTextare filled when the card shows a strike-through price. Cards in Indonesia, Vietnam, Thailand, Malaysia and Brazil usually do; cards in Singapore, the Philippines and Taiwan usually show only the current price and a discount badge, sooriginalPriceis mostlynullthere.discountTextkeeps the badge as Shopee shows it. Taiwan shows discounts as折(for example5折means you pay 50%), sodiscountPercentisnullon those cards anddiscountTextholds the original badge.locationisnullon cards that don't show a ship-from location (some Singapore listings).
How to use Shopee Product Scraper
- Open Shopee Product Scraper in Apify Console and go to the Input tab.
- Type one or more keywords in Search keywords, for example
wireless earbuds, and pick the Country market. Or paste Shopee search URLs into Shopee search URLs (each URL keeps its own market and sort order). - Optionally choose Sort by (relevance, top sales, newest, price low to high or high to low) and set Maximum results.
- Click Start. Small runs finish in seconds; each search page adds about two seconds because the Actor paces its requests politely.
- Open the Output tab to see the table, and export the results as JSON, CSV, Excel, XML or RSS, or read them through the API.
Some tips:
maxItems is a total for the whole run. With several keywords it is split evenly between them, and if one keyword runs out early the remaining keywords get the leftover.
Shopee search is fuzzy: a keyword with no matching products still returns unrelated items on Shopee's own site. The Actor checks the first page, and if no product title shares a word with your keyword it returns 0 rows for that keyword with a warning, so you don't pay for unrelated products.
Keywords work in the local language of each market: sepatu on Indonesia, 鞋子 on Taiwan, tênis on Brazil, giày on Vietnam.
The Actor uses Apify Proxy (datacenter) by default and retries blocked requests on a new IP. If your runs get blocked, switch the proxy to a residential group.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchTerms | array of strings | One of searchTerms / startUrls | Keywords to search, in any language, on the country market. |
country | string | No | Market for searchTerms: SG, MY, PH, ID, TH, VN, TW or BR. Default SG. |
startUrls | array | One of searchTerms / startUrls | Shopee search URLs (https://shopee.<market>/search?keyword=...), as strings or {"url": ...} objects. sortBy and order in the URL are kept. Category, shop and product URLs are skipped with a warning. |
sortBy | string | No | Order for searchTerms: relevancy (default), sales, ctime (newest), price_asc, price_desc. |
minPrice / maxPrice | integer | No | Price range in the market's currency, applied by Shopee to searchTerms. Start URLs keep their own minPrice / maxPrice. |
minRating | integer | No | Only products rated this many stars or more (1-5), applied by Shopee to searchTerms. Start URLs keep their own ratingFilter. |
maxItems | integer | No | Maximum number of products in total, shared across all keywords and URLs, 1-10000, default 50. |
proxyConfiguration | object | No | Proxy settings. Default: Apify Proxy (datacenter). |
Search several keywords on one market, sorted by top sales:
{"searchTerms": ["sepatu", "tas wanita"],"country": "ID","sortBy": "sales","maxItems": 100,"proxyConfiguration": { "useApifyProxy": true }}
Or start from a Shopee search URL you already have:
{"startUrls": [{ "url": "https://shopee.com.br/search?keyword=t%C3%AAnis&sortBy=sales" }],"maxItems": 20}
Output
Each product is one row in the dataset. These items come from real runs of the Actor (Singapore, keyword wireless earbuds; Indonesia, keyword sepatu; Brazil, start URL for tênis sorted by sales):
[{"id": "28693913633","itemId": "28693913633","shopId": "1120328630","title": "Monster MQT68 TWS Bluetooth Earphone Wireless 6.0 Noise Reduction Touch Control HD Calls Headphone","url": "https://shopee.sg/Monster-MQT68-TWS-Bluetooth-Earphone-Wireless-6.0-Noise-Reduction-Touch-Control-HD-Calls-Headphone-i.1120328630.28693913633","image": "https://down-sg.img.susercontent.com/file/cn-11134207-820l4-miqzmmqrrf2ba9","price": 0.01,"priceText": "0.01","originalPrice": null,"originalPriceText": null,"currency": "SGD","discountPercent": 99,"discountText": "-99%","rating": 4.8,"location": "SG","market": "shopee.sg","searchKeyword": "wireless earbuds","position": 1,"scrapedAt": "2026-10-14T19:39:23.973Z","sourceUrl": "https://shopee.sg/search?keyword=wireless%20earbuds&page=0"},{"id": "13268587518","itemId": "13268587518","shopId": "651940814","title": "DES SNEAKERS PROMO Sepatu / sneaker PRIA DAN WANITA NEW MODE API DS20","url": "https://shopee.co.id/DES-SNEAKERS-PROMO-Sepatu-sneaker-PRIA-DAN-WANITA-NEW-MODE-API-DS20-i.651940814.13268587518","image": "https://down-id.img.susercontent.com/file/sg-11134253-7rdx8-mcn7xqbaf60w58","price": 30328,"priceText": "30.328","originalPrice": 210000,"originalPriceText": "210.000","currency": "IDR","discountPercent": 86,"discountText": "-86%","rating": 4.1,"location": "Kab. Bogor","market": "shopee.co.id","searchKeyword": "sepatu","position": 1,"scrapedAt": "2026-10-14T19:39:32.763Z","sourceUrl": "https://shopee.co.id/search?keyword=sepatu&page=0"},{"id": "58265422164","itemId": "58265422164","shopId": "1284939254","title": "TÊNIS FEMININO ESPORTIVO PASSEIOS E CAMINHADAS","url": "https://shopee.com.br/TÊNIS-FEMININO-ESPORTIVO-PASSEIOS-E-CAMINHADAS-i.1284939254.58265422164","image": "https://down-br.img.susercontent.com/file/br-11134207-820lx-mq3q9845dekjd0","price": 79.9,"priceText": "79,90","originalPrice": null,"originalPriceText": null,"currency": "BRL","discountPercent": null,"discountText": null,"rating": 4.9,"location": "Minas Gerais","market": "shopee.com.br","searchKeyword": "tênis","position": 42,"scrapedAt": "2026-10-14T19:38:07.026Z","sourceUrl": "https://shopee.com.br/search?keyword=t%C3%AAnis&sortBy=sales&page=1"}]
Prices are parsed per market. Indonesia, Vietnam and Brazil write 30.328 or 79,90 (dot for thousands, comma for decimals); the other markets write 1,127.90. The price field is always a plain number, so 30.328 in Indonesia becomes 30328 and 79,90 in Brazil becomes 79.9.
How much does it cost to scrape Shopee?
Shopee Product Scraper is charged per result. You pay only for the products returned, and maxItems caps how many that can be. A keyword that matches nothing returns 0 rows and costs nothing in results. See the Pricing tab for the current price.
If you set a maximum cost per run in the run options, the Actor stops cleanly when that budget is reached and keeps the results it already saved.
Use with AI agents (MCP)
Connect Shopee Product Scraper to Claude, Cursor or any MCP client through the Apify MCP server:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=axiomworks/shopee-product-scraper"}}}
Example prompts:
- "Find the 30 best-selling wireless earbuds on Shopee Singapore and list title, price and rating."
- "Search Shopee Indonesia for 'sepatu' sorted by price low to high and show which products have a discount above 50%."
- "Compare the prices of 'iphone 15 case' on Shopee Malaysia and Shopee Philippines and tell me where sellers ship from."
The input schema is written for agents: each field says what it does, its limits and its default, and an agent only needs searchTerms plus country (or one search URL) to get results.
Integrations and API
Run Shopee Product Scraper from your own code with the Apify API. Set APIFY_TOKEN to your Apify API token (send it in the Authorization header, never in the URL).
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("axiomworks/shopee-product-scraper").call(run_input={"searchTerms": ["wireless earbuds"], "country": "SG", "maxItems": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["price"], item["currency"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('axiomworks/shopee-product-scraper').call({searchTerms: ['wireless earbuds'],country: 'SG',maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
cURL
curl -X POST "https://api.apify.com/v2/acts/axiomworks~shopee-product-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms": ["wireless earbuds"], "country": "SG", "maxItems": 50}'
You can also connect the Actor to Make, Zapier, n8n, Google Sheets, Slack or your own webhooks from the Integrations tab, and run it on a schedule (for example every morning) to track prices and discounts over time.
FAQ
Which Shopee countries are supported?
Singapore, Malaysia, the Philippines, Indonesia, Thailand, Vietnam, Taiwan and Brazil. Pick one with country for keywords, or mix markets freely with startUrls.
Does it need a Shopee account or cookies? No. It reads public search result pages without logging in.
Why are there no stock counts, units sold, descriptions or variants? Those live on Shopee's product pages and private API, which are not publicly readable without signed requests. This Actor focuses on what search results show publicly: title, price, discount, rating, location and links.
Why did a keyword return 0 results? Shopee fills empty searches with unrelated products. When no product on the first page shares a word with your keyword, the Actor treats the keyword as having no results, logs a warning and moves on. Check the spelling, try the local language of the market, or use a broader keyword.
How many results can I get per keyword? Shopee shows 40 products per page; the Actor reads up to 16 pages per keyword or URL. Duplicate products across pages are removed. Deep pages of a narrow keyword may contain loosely related items, because Shopee pads its results.
What does position mean?
It is the product's rank in the results for its keyword, counted across pages after duplicates are removed, so you can track how a product moves in search over time.
Why is originalPrice empty for Singapore results?
Singapore, Philippine and Taiwanese cards usually don't show a strike-through price, only the discount badge. discountText and discountPercent still tell you the discount.
What if a run gets blocked? Blocked pages are retried with backoff on a new proxy IP. If a keyword stays blocked, the run still finishes, keeps the results of the other keywords and says which one failed. Switching the proxy to a residential group usually helps.
Is it legal to scrape Shopee?
Shopee Product Scraper collects only publicly available product listing data from Shopee search pages, without logging in. Product listings are business data, not personal data, but you are responsible for how you use the results, including compliance with Shopee's terms and with laws such as GDPR or local data protection rules. This is not legal advice; ask a lawyer if you are unsure about your use case.
Shopee Product Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Shopee.
Related Actors
| Actor | What it does |
|---|---|
| Newegg Products Scraper | Product listings and prices from Newegg |
| Made-in-China Product Scraper | Supplier product listings from Made-in-China.com |
| Wayfair Product Scraper | Product data from Wayfair |
Feedback
Found a bug or need a field that isn't here? Open an issue on the Issues tab and we'll look at it.