Shopee Search Results Scraper avatar

Shopee Search Results Scraper

Pricing

from $5.05 / 1,000 results

Go to Apify Store
Shopee Search Results Scraper

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

Axiom Works

Maintained by Community

Actor 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?

FieldDescriptionExample
idShopee item ID (same as itemId), unique within a run52518535489
itemIdItem ID from the product link52518535489
shopIdSeller shop ID from the product link177674139
titleProduct name shown on the result cardJabra Elite 85t ... Wireless Earbuds
urlProduct page URL on the market's sitehttps://shopee.sg/...-i.177674139.52518535489
imageMain product image URLhttps://down-sg.img.susercontent.com/file/...
priceCurrent (promotion) price as a number33.49
priceTextCurrent price as shown, local number format33.49, 30.328, 79,90
originalPriceStrike-through price before discount, as a number210000
originalPriceTextStrike-through price as shown210.000
currencyISO currency code of the marketSGD, IDR, BRL
discountPercentDiscount from the card's badge52
discountTextDiscount badge as shown-52%, 5折
ratingStar rating shown on the card (0-5)4.5
locationSeller's ship-from locationMainland China, Minas Gerais
marketShopee site the product came fromshopee.sg
searchKeywordKeyword that returned the productwireless earbuds
position1-based rank in the results for that keyword1
scrapedAtTime the search page was fetched (ISO 8601)2026-10-14T19:39:23.973Z
sourceUrlSearch page the product card was read fromhttps://shopee.sg/search?keyword=wireless%20earbuds&page=0

A few notes on coverage, measured on real runs:

  • originalPrice and originalPriceText are 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, so originalPrice is mostly null there.
  • discountText keeps the badge as Shopee shows it. Taiwan shows discounts as 折 (for example 5折 means you pay 50%), so discountPercent is null on those cards and discountText holds the original badge.
  • location is null on cards that don't show a ship-from location (some Singapore listings).

How to use Shopee Product Scraper

  1. Open Shopee Product Scraper in Apify Console and go to the Input tab.
  2. 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).
  3. Optionally choose Sort by (relevance, top sales, newest, price low to high or high to low) and set Maximum results.
  4. Click Start. Small runs finish in seconds; each search page adds about two seconds because the Actor paces its requests politely.
  5. 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

FieldTypeRequiredDescription
searchTermsarray of stringsOne of searchTerms / startUrlsKeywords to search, in any language, on the country market.
countrystringNoMarket for searchTerms: SG, MY, PH, ID, TH, VN, TW or BR. Default SG.
startUrlsarrayOne of searchTerms / startUrlsShopee 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.
sortBystringNoOrder for searchTerms: relevancy (default), sales, ctime (newest), price_asc, price_desc.
minPrice / maxPriceintegerNoPrice range in the market's currency, applied by Shopee to searchTerms. Start URLs keep their own minPrice / maxPrice.
minRatingintegerNoOnly products rated this many stars or more (1-5), applied by Shopee to searchTerms. Start URLs keep their own ratingFilter.
maxItemsintegerNoMaximum number of products in total, shared across all keywords and URLs, 1-10000, default 50.
proxyConfigurationobjectNoProxy 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:

  1. "Find the 30 best-selling wireless earbuds on Shopee Singapore and list title, price and rating."
  2. "Search Shopee Indonesia for 'sepatu' sorted by price low to high and show which products have a discount above 50%."
  3. "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 ApifyClient
client = 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.

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.

ActorWhat it does
Newegg Products ScraperProduct listings and prices from Newegg
Made-in-China Product ScraperSupplier product listings from Made-in-China.com
Wayfair Product ScraperProduct 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.