Shopee Scraper — Products, Prices & Sellers avatar

Shopee Scraper — Products, Prices & Sellers

Pricing

from $4.00 / 1,000 product scrapeds

Go to Apify Store
Shopee Scraper — Products, Prices & Sellers

Shopee Scraper — Products, Prices & Sellers

Scrape Shopee product listings in Singapore, Malaysia, the Philippines, Thailand, Vietnam, Indonesia, Brazil and Mexico. Returns flat records with price, previous price, discount, rating, seller and Shopee link where available.

Pricing

from $4.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

1

Bookmarked

295

Total users

29

Monthly active users

13 hours ago

Last modified

Security

Limited permissions

Share

What is Shopee Scraper?

Shopee Scraper is an Apify Actor for Shopee product listings with price and rating in Brazil, Singapore, Malaysia, Indonesia, Mexico, Thailand, the Philippines and Vietnam. It accepts keyword queries and full Shopee product URLs and returns one flat record per Shopee listing with price, previous price, discount, rating, number of ratings, seller label, image and source metadata. Price and rating come from the listings Shopee publishes to Google Shopping, because Shopee hides them from logged-out product pages. See what is and is not available under How it works.

Each dataset record represents one Shopee product. That makes it useful when you need a single, MCP-ready row per item for pricing analysis, assortment research, seller review, or downstream AI workflows that prefer structured product records over nested pages.

Best fit and connected workflows

This Actor fits workflows that start from a Shopee marketplace view and end with normalized product records. Common routes include:

  • Keyword research into product monitoring, using searchQueries and maxProducts.
  • Looking up a full product URL by its product name, using startUrls (see How it works for the limits).
  • Several searches in one run (up to 30 per run), each returning about 20 to 43 listings.
  • Marketplace comparison across supported Shopee country domains by switching country.
  • LLM or agent pipelines that need compact, flat output through Apify MCP.

If your workflow begins with Shopee search intent, category browsing, or direct product references, this Actor gives you a single product-level dataset with consistent field names.

Practical scenario

A marketplace analyst starts with a list of Shopee Singapore keywords for wireless accessories. They set searchQueries to those terms and limit the run with maxProducts.

The returned records include title, price, priceBeforeDiscount, discount, rating, ratingCount, seller and, for enriched rows, productUrl. From that output, the analyst can compare item prices and ratings, then open the strongest candidates in Shopee for manual review or a follow-up dashboard.

Input fields

FieldTypePurpose
countrystringSelects the Shopee marketplace: SG, MY, PH, TH, VN, ID, BR or MX
countriesarray of stringRuns the same searches in several marketplaces at once
searchQueriesarray of stringKeywords to search, one per line
startUrlsarray of request sourcesShopee search URLs, or full product URLs ending in the product name and IDs
shopItemIdsarray of objectsNot supported: pairs carry no product name, so they are reported as unresolved and not charged
maxProductsintegerCaps returned and charged product records
enrichProductsbooleanAdds the Shopee product URL, shop and item IDs, images and specifications where available (on by default)
minPrice, maxPrice, minRating, minRatingCount, discountedOnlynumber / booleanFilters; filtered-out listings are not charged
includeKeywords, excludeKeywordsarray of stringTitle must or must not contain these words
sortResultsstringRelevance, lowest or highest price, best rating, biggest discount
trackPriceChangesbooleanCompares each search with your previous run of it
includeRawDatabooleanAdds the trimmed raw listing for debugging

Focused JSON input example

{
"country": "SG",
"searchQueries": [
"wireless earbuds",
"mechanical keyboard"
],
"maxProducts": 100,
"enrichProducts": true,
"sortResults": "price_asc"
}

Output fields

FieldTypePurpose
productIdstring or nullShopee item identifier when available
shopIdstring or nullShopee shop identifier when available
productUrlstring or nullCanonical Shopee product URL
titlestring or nullProduct title shown by Shopee
pricenumber or nullCurrent product price
priceMinnumber or nullMinimum variant price when a range is present
priceMaxnumber or nullMaximum variant price when a range is present
priceBeforeDiscountnumber or nullOriginal price before discount when available
currencystringMarketplace currency code
discountstring or nullDiscount label returned by Shopee
ratingnumber or nullAverage product rating
ratingCountinteger or nullCount of ratings or reviews
soldnullAlways null: sold counts are not in the listings
historicalSoldnullAlways null for the same reason
stocknullAlways null: stock is not in the listings
shopNamestring or nullSeller or shop display name
shopLocationstring or nullSeller location shown by Shopee
isOfficialShopboolean or nullpublic shop marker
isShopeeMallboolean or nullShopee Mall marker
imageUrlstring or nullMain product image URL
descriptionstring or nullAlways null on the listings route
categoriesarray of stringCategory breadcrumbs when available
sourceTypestringDiscovery path such as search, url, api, or fallback
sourceUrlstringInput or generated Shopee URL that produced the record
scrapedAtstringISO 8601 timestamp for the record

Illustrative output record

{
"productId": "3429677176821468165",
"shopId": null,
"productUrl": null,
"title": "Fone De Ouvido E6s Bluetooth Bt5.0 Sem Fio Para Corrida",
"price": 23.99,
"priceMin": null,
"priceMax": null,
"priceBeforeDiscount": 39.9,
"currency": "BRL",
"discount": "40%",
"rating": 4.7,
"ratingCount": 6100,
"sold": null,
"historicalSold": null,
"stock": null,
"shopName": null,
"shopLocation": null,
"isOfficialShop": null,
"isShopeeMall": null,
"imageUrl": "https://encrypted-tbn2.gstatic.com/shopping?q=tbn:example",
"description": null,
"categories": [],
"sourceType": "search",
"sourceUrl": "https://google.com.br/search?ibp=oshop&q=fone+de+ouvido+shopee",
"scrapedAt": "2026-11-06T08:00:00.000Z",
"seller": "Shopee",
"googleProductId": "3429677176821468165"
}

Search rows carry productUrl, shopId and productId from Shopee when product details were added, and otherwise null (with the listing ID in googleProductId). URL lookups fill them from the URL you supplied and add requestedUrl and matchConfidence.

How it works

Shopee hides price, rating and sold counts from logged-out product pages and blocks anonymous access to its own product data. This Actor therefore reads the Shopee listings published in Google Shopping through a managed data service. It never logs in to Shopee, never opens Shopee pages and never relies on another developer's Actor.

What you get per keyword search (about 20 to 43 Shopee listings per search): title, current price, previous price and discount when shown, currency, rating and number of ratings when shown, seller label and one image. Verified marketplaces: Brazil (BR), Singapore (SG), Malaysia (MY), Indonesia (ID), Mexico (MX), Thailand (TH), the Philippines (PH) and Vietnam (VN). A single search returns up to about 100 listings when you ask for more than 40.

Shopee links, IDs and specifications (on by default, enrichProducts): for the listings where Google provides a product ID (the share varies a lot by search, from a few percent to about three quarters) the Actor also returns the real Shopee product URL, shop ID and item ID, up to 12 images and a specification list (for example noise cancellation, connection type). Other rows keep the listing fields only, and enrichedRows in the run summary tells you how many rows got the extra data. This step adds roughly a minute to a run; set enrichProducts to false for the fastest run. It is included in the per-product price.

Filters, sorting, several marketplaces and price tracking (all included in the per-product price):

  • Filters: minPrice, maxPrice, minRating, minRatingCount, discountedOnly, includeKeywords (the title must contain at least one) and excludeKeywords. A listing missing a value a filter needs, such as no rating when minRating is set, is dropped. Filtered-out listings are never saved or charged, and enrichment is only bought for the rows you keep.
  • Sorting: sortResults orders rows by lowest price, highest price, best rating or biggest discount. It is applied within each marketplace, because prices in different currencies cannot be compared, and before the maxProducts cap, so "lowest price" returns the cheapest listings found.
  • Several marketplaces in one run: set countries (for example ["BR","SG","ID"]). Every search runs in each marketplace, every row carries a country column and prices stay in local currency. A product URL is looked up in the marketplace of its own domain.
  • Price tracking: turn on trackPriceChanges and schedule the Actor. Listings that also appeared in your previous run of the same search in the same marketplace get trackedPreviousPrice, priceChange, priceChangePct, firstSeenAt and previousRunAt. Google Shopping returns a rotating subset of Shopee listings for broad searches (two runs of the same broad search can share very few listings), so tracking works best for specific searches such as a model name; priceTracking.comparedWithPreviousRun in the run summary tells you how many rows were compared. History is stored in a key-value store called shopee-price-history in your own account, and entries not seen for 60 days are dropped. The first run has nothing to compare with.

What it cannot provide:

  • Stock, sold counts, descriptions and shop details. They are not in the listings, and Shopee hides them from logged-out visitors.
  • Shopee product URLs and IDs on every search row. Only the rows where Google provides a product ID get them (see enrichedRows); the rest carry the listing ID only.
  • Every Shopee product. Only products that Shopee has published to Google Shopping are covered, so a search returns the listed subset, not the full Shopee catalog.
  • Shopee Taiwan. It is not supported.

Looking up a product URL: a full product URL that ends in the product name and IDs (.../Product-Name-i.<shopId>.<itemId>) is looked up by its name. The row is returned only when a listing's title matches the name in the URL closely (matchConfidence of 0.7 or higher), and it carries requestedUrl and matchConfidence so you can judge it. Short URLs of the form /product/<shopId>/<itemId> and bare shop/item ID pairs contain no product name and cannot be looked up on this route; they are listed in unresolvedInputs in the run summary and are not charged.

Run outcomes: you are charged only for rows that are saved. COMPLETE means every search or URL returned data, PARTIAL means some inputs returned nothing, VALID_EMPTY means no listing matched, INVALID_INPUT means none of the inputs could be read, and UPSTREAM_FAILED (run fails, nothing charged) means the data service could not answer. The run summary lists providerRequests and the fields that are not available.

It can start from keyword searches, Shopee search URLs or full Shopee product URLs. The dataset is intentionally flat so each record is easy to consume in Apify datasets, SQL-style pipelines, and Apify MCP tool workflows.

Pricing

Shopee Scraper uses Pay per event plus Apify platform usage.

  • Actor start: charged per run start event.
  • Product scraped: charged for each product record successfully returned to the dataset.

For example, a run that returns one hundred product records is charged for one hundred product events, plus the start event, plus Apify platform usage. To see the live pricing tab for the current run cost details, open the Actor's Pricing tab in Apify.

Free Apify plan

Runs started from a free Apify plan return up to 50 results per run, with every input mode and output field available. Paid Apify plans have no per-run limit, so your usual result settings apply.

Use with AI agents (MCP)

This Actor is available as an Apify Actor usable through Apify MCP. The tool is designed to fetch Shopee product records with stable field names that are easy for agents to parse and pass downstream.

Actor identity: khadinakbar/shopee-scraper

Tool description: run Shopee keyword, URL, or batch item lookup jobs and read flat product records from the dataset output. The dataset contains product-level provenance such as sourceType, sourceUrl, and scrapedAt, which helps an agent explain where each record came from.

Search Shopee Singapore for wireless earbuds, return up to 20 products, and keep the output focused on price, discount, rating, seller, and product URL.

Output interpretation:

  • productUrl points to the canonical Shopee product page.
  • sourceUrl shows the input or generated Shopee URL behind the record.
  • sourceType tells you whether the record came from search, URL, API, or fallback discovery.
  • scrapedAt records when the item was produced.

Provenance and scope:

  • Verified marketplaces: BR, SG, MY, ID, MX, TH, PH and VN.
  • The dataset schema is product-focused and MCP-ready, with one record per product.
  • includeRawData can add trimmed raw payloads for debugging schema changes.

Pagination and cost guidance:

  • Each search returns up to about 40 listings, or about 100 when maxProducts is above 40.
  • maxProducts caps the number of product records returned and charged.
  • For agent workflows, start with a smaller cap, inspect the first records, and expand only when the source coverage looks right.

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
country: 'SG',
searchQueries: ['wireless earbuds'],
maxProducts: 10,
};
const run = await client.actor('khadinakbar/shopee-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems({ clean: true });
console.log(items);

Best results and outcome guidance

Use country that matches the Shopee marketplace you want to inspect, since it controls the marketplace domain and currency context. Use searchQueries for discovery and a full product URL in startUrls when you already know the product.

A practical setup is:

  • When you only paste product URLs or ID pairs, clear the example search query in the form, or leave it: the untouched example is ignored automatically when URLs or IDs are present.
  • includeRawData: false for compact, stable output.
  • maxProducts sized to the smallest useful set for your workflow.

Continue the workflow

Design note

I found that categories, sourceType, sourceUrl, and scrapedAt are required output fields in the dataset contract, which is a clear sign that the Actor is meant to produce provenance-aware product records rather than only price fields.

FAQ

Can I use this Actor for Shopee search pages and product pages?

Yes for keyword searches and full product URLs. Short product URLs and ID pairs are not supported (see How it works).

Does this Actor work across multiple Shopee country domains?

Eight marketplaces are verified: BR, SG, MY, ID, MX, TH, PH and VN.

When should I use shopItemIds instead of searchQueries?

Not on the listings route: ID pairs contain no product name, so they cannot be looked up. Use searchQueries, or a full product URL in startUrls.

Does it return stock or sold counts?

No. They are not in the listings, and Shopee hides them from logged-out visitors, so stock, sold and historicalSold are always null.

Responsible use

Use this Actor for publicly accessible Shopee product information and for workflows that respect applicable laws, Shopee terms, privacy rules, and marketplace policies. Keep your runs focused on product research, catalog monitoring, and agent consumption, and apply the results in ways that fit your organization or project's compliance requirements.