# Shopee Scraper: Products, Prices and Reviews

> Shopee scraper: type keywords or paste Shopee links. Get price, original price, discount, rating and seller for each product. No login or account.

URL: https://cliqtomedia.com/actors/shopee-scraper/

Category: E-commerce & prices · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/shopee-scraper?fpr=cliqto

Get public Shopee products from keywords or links. Each row has the price, original price, discount, rating and seller. You can also read shop reviews, flash sales and changes since your last run.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `phone case` in Search keywords. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Type keywords or paste Shopee links, and get Shopee products as rows with price, original price, discount, rating, seller name and seller rating. No login and no Shopee account are needed. The prefilled search for 10 phone cases in Thailand takes 20 to 40 seconds and costs about $0.006 on the Free plan.

- Products from keywords, search links, shop links and category links.
- Product details such as description, gallery, categories, attributes and variants.
- Seller data: name and rating, and on request followers, response rate and other shop metrics.
- Shop reviews with stars, text, seller reply and a summary row.
- Flash sales with promotion time, sale price and remaining promotional stock.
- Keyword hints and the category tree of a market.
- Changes since your last run: new products and new prices.

### Good for

- You sell on Shopee and want to check rival prices and discounts each day.
- You research a product niche in Southeast Asia, Taiwan, Brazil or Mexico.
- You want to read what buyers say about a shop.

### Not a good fit

- You need order data, your own seller account data or buyer contacts. The Actor reads only public guest pages.
- You need exact stock and exact sold counts for every product. Shopee often hides these from guests, so these fields can be empty.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Product | $0.00036 (from $0.000252 on paid Apify plans) | One unique product card delivered to the Dataset. |
| Detailed product | $0.0006 (from $0.00042 on paid Apify plans) | One product with detailed page fields delivered instead of the product-card event. |
| Detailed product lookup | $0.0006 (from $0.00042 on paid Apify plans) | One requested detailed product page, including missing products, failed requests and products excluded by filters. A delivered product also incurs its product-detail result event. |
| Product listing page | $0.0014 (from $0.00098 on paid Apify plans) | One requested search, category or shop listing page, including empty pages. The product limit does not limit scanned pages. |
| Basic seller lookup | $0.00005 (from $0.000035 on paid Apify plans) | One public shop-name and rating lookup per seller in the run, including a lookup that fails. |
| Full seller profile lookup | $0.001 (from $0.0007 on paid Apify plans) | One requested full public seller profile per shop in the run, including a lookup that fails. Used by detailed shop metrics and profile mode instead of the basic seller lookup. |
| Review | $0.0027 (from $0.00189 on paid Apify plans) | One unique public customer review delivered to the Dataset. Summary rows are included. |
| Review feed page | $0.0009 (from $0.00063 on paid Apify plans) | One public review feed page processed, including pages with no matching reviews. |
| Keyword suggestion | $0.00045 (from $0.000315 on paid Apify plans) | One unique Shopee keyword suggestion delivered to the Dataset. |
| Keyword prefix request | $0.0003 (from $0.00021 on paid Apify plans) | One keyword autocomplete prefix processed, including prefixes with no new suggestions. |
| Category | $0.00045 (from $0.000315 on paid Apify plans) | One public category delivered to the Dataset. |
| Category tree request | $0.0003 (from $0.00021 on paid Apify plans) | One public category-tree response processed. |
| Flash sale item | $0.0018 (from $0.00126 on paid Apify plans) | One product in one public flash-sale promotion delivered with the available price, sales and promotional-stock fields. |
| Flash sale request | $0.0003 (from $0.00021 on paid Apify plans) | One requested public flash-sale calendar or item feed response. |
| Additional detailed page data (100 KiB) | $0.0045 (from $0.00315 on paid Apify plans) | Each started 100 KiB of compressed response data when an automatic protected connection is needed. At least one unit per protected request, including failed requests. Direct successful pages do not incur this event. |
| Start fee | $0.0008 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| History storage request | $0.0005 (from $0.00035 on paid Apify plans) | One history record read or write when only-new or only-changed monitoring is enabled, including empty and failed requests. History is stored in small parts; old records are evicted when full. |

- One result: about $0.0012.
- 1,000 results: about $0.36.
- Every day 100 results, for 30 days: about $1.10 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 8 November 2026. Current price: https://apify.com/cliqtomedia/shopee-scraper?fpr=cliqto

## Questions

### Do I need a Shopee login or cookies?

No. The Actor reads public guest pages only.

### Why are sold and stock empty?

Shopee hides them from guests on many products. The Actor returns null, not 0.

### How many products can I get?

Up to 5,000 per run.

### Are the rows complete and fresh?

The rows show what a guest sees at the time of the run, and `fetchedAt` gives that time. Prices can change at any moment, and sponsored cards can change the order. Search does not promise every product on Shopee.

### Can I watch prices over time?

Yes. Use `onlyChanges` with a `stateName` and an Apify schedule. The first run saves the history, and later runs return only new products and price changes.

## Data fields

- `flashSaleStock` (number): Units allocated to this flash-sale promotion, or null.
- `stockRemainingPercent` (number): Remaining promotional stock as a percentage from 0 to 100, or null.
- `flashDetailsStatus` (string): Whether the Flash Sale API reported details for this promotion item.
- `promotionName` (string): Session name reported by Shopee.
- `promotionIsOngoing` (boolean): Whether Shopee identifies the promotion as ongoing.
- `promotionTimeZone` (string): UTC for normalized session timestamps.
- `tierVariations` (array): Variation axes with name, options and image links.
- `likedCount` (number): Public product like count, or null.
- `categoryPath` (array): Category path from the root to this category.
- `childCount` (number): Number of direct child categories.
- `isLeaf` (boolean): Whether this category has no children.
- `rankPosition` (number): Position value reported by Shopee for this keyword suggestion, or null.
- `promotionId` (string): Public flash-sale promotion identifier.
- `promotionStart` (string): Session start time in UTC when reported by the API.
- `promotionEnd` (string): Session end time in UTC when reported by the API.
- `changeStatus` (string): Whether a monitored product is new, price_changed or unchanged.
- `previousPrice` (number): Price from the last delivered snapshot, or null.
- `sellerId` (string): Public seller profile identifier, or null.
- `shopUsername` (string): Public shop username, or null.
- `shopFollowing` (number): Number of accounts followed by the shop, or null.
- `shopProductCount` (number): Number of products reported by the shop.
- `shopResponseRate` (number): Seller response rate as a percentage, or null.
- `shopResponseTimeSeconds` (number): Seller response time in seconds, or null.
- `shopCancellationRate` (number): Seller cancellation rate as reported by Shopee, or null.
- `shopRatingCount` (number): Sum of reported good, neutral and bad shop ratings, or null.
- `shopCreatedAt` (string): Shop creation time in UTC, or null.
- `shopLastActiveAt` (string): Last reported seller activity in UTC, or null.
- `isOnVacation` (boolean): Whether the shop is on vacation, or null.
- `shopLookupStatus` (string): Whether the public seller profile was collected.
- `reviewId` (string): Public review identifier.
- `productName` (string): Product title associated with this review, or null.
- `productUrl` (string): Product link associated with this review, or null.
- `reviewedProducts` (array): Products mentioned in this review, with itemId, name, variation and url.
- `variation` (string): Purchased variation shown in the review.
- `comment` (string): Public review text. Contact details are removed.
- `hasText` (boolean): Whether the review contains text.
- `hasMedia` (boolean): Whether the review contains photos or videos.
- `updatedAt` (string): Review update time in UTC.
- `sellerReply` (object): Seller reply with comment and createdAt, or null.
- `productQualityRating` (number): Product quality rating, or null.

## Input settings

- `country` (string): Choose the Shopee market for keywords. Each pasted URL keeps its own market.
- `mode` (string): Auto reads the URL type. Reviews and profiles use shop or product links. Hints use keywords as prefixes. Categories and flash sales use the selected country.
- `keywords` (array): Product search terms, one per line. Results share one total limit. Each keyword receives a share before remaining results are collected.
- `startUrls` (array): HTTPS Shopee search, category, shop or product links, such as https://shopee.co.th/search?keyword=phone%20case. A link that is not on a supported Shopee market is skipped and reported.
- `productUrls` (array): HTTPS Shopee product links with shop and product IDs, such as https://shopee.co.th/product/333239573/56366098260. Each page lookup is charged; delivered products use the detailed-product rate. Extra page-data charges can apply.
- `shopUrls` (array): HTTPS Shopee shop links, such as https://shopee.co.th/shop/333239573. Collect product cards from each shop.
- `categoryUrls` (array): HTTPS Shopee category links, such as https://shopee.co.th/Mobile-Gadgets-cat.11044458. Collect the products shown in each category.
- `shopId` (string): Shopee shop ID. Use it alone for shop products, or add an item ID for one product.
- `itemId` (string): Shopee product ID. A shop ID is also required.
- `categoryId` (string): Shopee category ID for the chosen market.
- `maxItems` (integer): Stop after this many product rows, categories or keyword hints across the run. A flash-sale item in two promotions is two rows. Explicit links are processed before keywords. Shop profiles and review summaries do not count. Review rows use Max reviews per shop.
- `includeSellerDetails` (boolean): Add seller name and rating from public shop pages. Turn on detailed shop metrics for followers and response metrics. One public shop lookup is charged per seller in the run. Detailed shop metrics are a separate option. This lookup is best effort: a blocked shop does not discard the product.
- `includeShopMetrics` (boolean): Add shop followers, response metrics and other available profile fields. One full profile lookup is charged per shop. If a direct page cannot be read, additional page data is charged per started 100 KiB of compressed response, with at least one block per request. The default already adds shop name and rating.
- `ongoingOnly` (boolean): For flash sales, collect the current session only. Turn off to also visit the other sessions listed by Shopee. All sessions share the product limit.
- `promotionId` (string): Optional public flash-sale promotion ID. Leave empty for the current session.
- `includeShopProfile` (boolean): For shop links, also return one shop profile row. Product limits count products, not shop profiles.
- `includeListingPrice` (boolean): For a product URL with hidden prices, look for the same product ID on its shop page and in search. Extra listing pages are charged. A price can still be unavailable.
- `includeDetails` (boolean): Open each product page for descriptions, gallery, categories, attributes and variants. Prices and stock may remain hidden. Each detailed page lookup is charged. A delivered product also uses the product-detail price instead of the product-card price. If a direct page cannot be read, additional page data is charged per started 100 KiB of compressed response, with at least one block per request.
- `sortBy` (string): Ask Shopee to sort listing results. Sponsored cards and changing prices can affect the order.
- `minPrice` (number): Keep cards whose displayed price is at least this amount in the local currency. Products without a price are excluded.
- `maxPrice` (number): Keep cards whose displayed price is at most this amount in the local currency. Products without a price are excluded.
- `minRating` (number): Keep cards with at least this star rating. Products without a rating are excluded.
- `minSold` (number): Keep products with at least this many reported units sold. Products with a hidden sold count are excluded. Adds product-detail lookups.
- `condition` (string): Ask Shopee for new products, used products, or either.
- `discountedOnly` (boolean): Keep products with a reported discount or a price below the original price.

## Step by step on Apify

1. Open the Input tab and keep Country set to `Thailand`.
2. Keep `phone case` in Search keywords.
3. Open Result limits and keep Maximum results at `10`.
4. Run the Actor.
5. When the run ends, open Output and choose the Products view.
6. Check `price`, `originalPrice` and `discountPercent`.
7. Check `shopName` and `shopRating`.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Watch rival prices each day | `keywords` or `shopUrls` with `onlyChanges: true` | Product | `price`, `previousPrice`, `changeStatus`, `discountPercent`, `shopName` | Schedule the run, then send a summary to Slack |
| Research a product niche | `keywords`, `country`, `minRating`, `sortBy` | Product | `price`, `rating`, `location`, `shopRating` | Export CSV to a spreadsheet |
| Read what buyers say about a shop | `mode: reviews` with `shopUrls` | Review and summary | `rating`, `comment`, `sellerReply`, `ratingCountsByStar` | Send the rows to a text analysis tool |
| Check a shop before you work with it | `mode: profile` with `shopUrls` | Shop | `shopRating`, `shopFollowers`, `shopResponseRate`, `shopProductCount` | Add the rows to a supplier sheet |
| Watch the current flash sale | `mode: flash_sale`, `country` | Flash-sale product | `price`, `stockRemainingPercent`, `promotionEnd` | Run on a schedule and export JSON |

## Tips

- Turn sellers off for a faster run. With sellers on, expect about 20 products a minute.
- Use onlyChanges with a stateName and a schedule to see new products and price changes.
- Use many keywords for large runs. One results page gave about 25 new products.

## Limits



- Markets: keyword search was confirmed in 9 markets: Thailand, Indonesia, Singapore, Malaysia, Philippines, Vietnam, Taiwan, Brazil and Mexico. Rich product pages, reviews and flash sales were confirmed only in Thailand. Colombia and Chile are not supported.
- Result limit: 5,000 products per run. `maxItems` counts rows, not pages read, so strict filters can read many pages.
- Speed: with sellers on, expect about 20 products a minute. In tests, 300 products took 751 s, and a run with 6 keywords and a limit of 1,000 stopped at 313 products when it reached its 900 s timeout. With sellers off, expect about 250 a minute: 5,000 products took 1,230 s. Product links and `includeDetails` read a full product page, so expect about 2 products a minute: 3 links took 92 s, and a list of 20 links stopped at 11 products at the default timeout.
- Default timeout: 300 s fit 99 products with sellers on, 1,040 with sellers off, and 11 full product pages. For more, raise the timeout. If the timeout comes first, you keep the rows with `DEADLINE`.
- Page depth: one results page gave about 25 new products in tests. Use many keywords for large runs: the 5,000-product test used 198 keywords.
- Memory: 256 MB by default. The highest we saw in the final test series was 149 MB, and an earlier run reached 205 MB. The Actor allows up to 512 MB.
- Hidden data: guests may not see stock, sold counts or variant prices. These stay `null`, not `0`.
- Hidden prices: the lookup fills a price only if the same product ID and shop ID are found on a listing page.

## Sample result

```json
{
  "recordType": "product",
  "status": "complete",
  "country": "th",
  "currency": "THB",
  "shopId": "333807292",
  "itemId": "44812090805",
  "name": "สำหรับ iPhone 17 Pro Max 17Air 17Pro 17Promax 13/14/15 Xs Max Xr เคสกำมะหยี่ สีพื้น ลบรอยปากกาได้ สำหรับ ไอโฟน 024",
  "price": 51,
  "originalPrice": 55,
  "discountPercent": 7.27,
  "rating": 5,
  "ratingCount": null,
  "sold": null,
  "soldStatus": "not_reported",
  "stock": null,
  "stockStatus": "not_reported",
  "location": "จังหวัดกรุงเทพมหานคร",
  "images": [
    "https://down-th.img.susercontent.com/file/sg-11134201-823pn-mpcj1sybegwbe8"
  ],
  "url": "https://shopee.co.th/%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A-iPhone-17-Pro-Max-17Air-17Pro-17Promax-13-14-15-Xs-Max-Xr-%E0%B9%80%E0%B8%84%E0%B8%AA%E0%B8%81%E0%B8%B3%E0%B8%A1%E0%B8%B0%E0%B8%AB%E0%B8%A2%E0%B8%B5%E0%B9%88-%E0%B8%AA%E0%B8%B5%E0%B8%9E%E0%B8%B7%E0%B9%89%E0%B8%99-%E0%B8%A5%E0%B8%9A%E0%B8%A3%E0%B8%AD%E0%B8%A2%E0%B8%9B%E0%B8%B2%E0%B8%81%E0%B8%81%E0%B8%B2%E0%B9%84%E0%B8%94%E0%B9%89-%E0%B8%AA%E0%B8%B3%E0%B8%AB%E0%B8%A3%E0%B8%B1%E0%B8%9A-%E0%B9%84%E0%B8%AD%E0%B9%82%E0%B8%9F%E0%B8%99-024-i.333807292.44812090805",
  "shopUrl": "https://shopee.co.th/shop/333807292",
  "searchTerm": "phone case",
  "description": null,
  "brand": null,
  "categoryId": null,
  "categories": null,
  "attributes": null,
  "variants": null,
  "videos": null,
  "shopName": "888_shop1",
  "shopRating": 4.65,
  "shopFollowers": null,
  "isOfficialShop": null,
  "isPreferredSeller": null,
  "source": "shopee",
  "sourceRoute": "social_crawler_html",
  "fetchedAt": "2026-11-04T11:44:13.818Z",
  "shopRatingCount": 255758,
  "shopLookupStatus": "reported"
}
```

## Use it from code

Actor ID: `cliqtomedia/shopee-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/shopee-scraper").call(run_input={
    "country": "th",
    "mode": "auto"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~shopee-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"country": "th", "mode": "auto"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/shopee-scraper")
result = tool.invoke({"run_input": {"country": "th", "mode": "auto"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [AliExpress Scraper: Products, Prices & Reviews, No Login](https://cliqtomedia.com/actors/aliexpress-scraper/)
- [Trendyol Scraper: Products, Prices & Reviews (No login)](https://cliqtomedia.com/actors/trendyol-scraper/)
- [Wildberries Scraper: Products, Prices, Reviews, No Login](https://cliqtomedia.com/actors/wildberries-scraper/)
- [eBay Search Scraper: Active Listings & Prices, No Login](https://cliqtomedia.com/actors/ebay-browse-search/)
- [Amazon Product Scraper: Prices, Reviews, BSR, No Login](https://cliqtomedia.com/actors/amazon-scraper/)
- [Coles, Woolworths & Aldi Price Scraper - No Login](https://cliqtomedia.com/actors/au-supermarket-prices/)
