# Shopee Scraper - Products, Prices & Shops in 9 Countries (`automly/shopee-scraper`) Actor

Scrape Shopee products by keyword, category, shop or link in 9 countries (SG, MY, PH, TH, ID, VN, TW, BR, MX): title, price, discount, rating, ships-from, photos, with optional description, category path, brand and shop.

- **URL**: https://apify.com/automly/shopee-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** E-commerce
- **Stats:** 1 total users, 0 monthly users, 87.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Shopee Scraper

### What is Shopee Scraper?

**Shopee Scraper** is a tool that lets you **scrape products from Shopee** in 9 countries (Singapore, Malaysia, the Philippines, Thailand, Indonesia, Vietnam, Taiwan, Brazil and Mexico): title, price in the local currency, discount, star rating, where it ships from, photo and product link, with an option to add the full description, every photo, the category path and, when Shopee shows them, brand, rating count, stock, condition, variations and the shop's name and rating. Search by keyword, category or shop, or paste any Shopee link, click **Start**, and download the products as Excel, CSV or JSON.

- ⚡ **Fast:** about 7,700 products from one search in under a minute (our tests)
- 🔎 **Deep searches:** thousands of products per keyword, not just the first page Shopee shows
- 🌏 **9 countries:** shopee.sg, shopee.com.my, shopee.ph, shopee.co.th, shopee.co.id, shopee.vn, shopee.tw, shopee.com.br, shopee.com.mx
- 🧹 **Clean data:** prices as numbers in each country's currency, with the currency code
- 🔓 **No login:** no Shopee account or cookies needed

### What can Shopee Scraper do?

- **Scrape Shopee search results** for any keyword, like `phone case`, `sepatu wanita`, `tênis nike` or `kasut`
- **Scrape a Shopee category** from its link, like `shopee.co.id/Sepatu-Pria-cat.11042849`
- **Scrape every product of a Shopee shop** from its link, like `shopee.sg/apple.flagshipstore`
- **Filter by price range** and pick the order read first: relevance, top sales, latest, or price
- **Scrape single Shopee products** from their links
- **Track Shopee prices and discounts** with a daily schedule
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Shopee?

| | | |
|---|---|---|
| 🏷️ Title and product link | 💰 Price, currency and discount | ⭐ Star rating |
| 📍 Ships from | 📸 Main photo | 🆔 Product and shop IDs |
| 📝 Full description\* | 🖼️ Every photo\* | 🗂️ Category path and IDs\* |
| 🏭 Brand\* | 🔢 Rating count\* | 📦 In stock and condition\* |
| 🎨 Number of variations\* | 🏪 Shop name, link and rating\* | 🌏 Country site |

\* With **Include product page details**. Description, photos and categories come for nearly every product; brand, rating count, stock, condition, variations and shop come only for the products whose page shows them (marked `fullDetails: true`).

### How to scrape Shopee

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Shopee Scraper**.
3. Enter search words and pick a country, or paste Shopee links, one per line.
4. Set a price range and how many products you want per search.
5. Click **Start**, then download the products as Excel, CSV, JSON or HTML.

### How much does it cost to scrape Shopee?

You pay per product saved. A product with page details costs a little more than a product from search alone. The **Pricing** tab shows the exact price per 1,000 products on your Apify plan, with lower prices on paid plans. Platform usage is included, so you pay nothing else for the run.

Every Apify account gets **$5 of free usage each month**, which is plenty to try the scraper on real searches. **Max products per search or link** keeps the cost of a run under control, and you can also set a maximum cost per run.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Search words** | What to search for, like `phone case`, one search per line |
| **Country** | Which Shopee site the search words run on (Singapore by default). Links always use their own country |
| **Sort by** | The order read first: relevance (default), top sales, latest, or price |
| **Min / Max price** | Price range in the country's currency, like 10 to 50 for SGD or 50000 to 200000 for IDR |
| **Shopee links** | Search pages, categories (`...-cat.<id>`), shops (`shopee.sg/<shop name>` or `/shop/<id>`) and products (`...-i.<shop>.<item>`) |
| **Max products per search or link** | How many products to save for each search or link (default 100). Set 0 for as many as Shopee shows |
| **Include product page details** | Off by default: opens each product page for the description, photos, categories and more |
| **Proxy configuration** | Leave the default |

Phone cases in Singapore between 5 and 30 SGD, top sales first:

```json
{
  "searchQueries": ["phone case"],
  "country": "SG",
  "sortBy": "best_selling",
  "minPrice": 5,
  "maxPrice": 30,
  "maxItems": 500
}
```

A category in Indonesia, a shop in Singapore and a search copied from Shopee Brazil, with product details:

```json
{
  "startUrls": [
    "https://shopee.co.id/Sepatu-Pria-cat.11042849.11042850",
    "https://shopee.sg/apple.flagshipstore",
    "https://shopee.com.br/search?keyword=tenis&sortBy=sales&minPrice=50&maxPrice=80"
  ],
  "includeDetails": true,
  "maxItems": 200
}
```

### ⬆️ Output

Every product is one row. A product with page details:

```json
{
  "itemId": "57717808852",
  "shopId": "442800909",
  "title": "Apple iPhone 18 Pro Max",
  "url": "https://shopee.sg/Apple-iPhone-18-Pro-Max-i.442800909.57717808852",
  "price": 2098.9,
  "currency": "SGD",
  "priceText": "$2,098.90",
  "discountPercent": 1,
  "rating": 5.0,
  "shipsFrom": "SG",
  "image": "https://down-sg.img.susercontent.com/file/sg-11134301-825ac-msx6rmw8pt6yaf",
  "brand": "Apple",
  "description": "[Attention] This is a pre-order item and will be fulfilled by October 2026, at its earliest stock availability.\n\n...",
  "images": [
    "https://down-sg.img.susercontent.com/file/sg-11134301-825ac-msx6rmw8pt6yaf",
    "https://down-sg.img.susercontent.com/file/sg-11134301-8259h-msxs7u8481zdf4"
  ],
  "categories": ["Mobile & Gadgets", "Mobile Phones & Tablets", "Others"],
  "categoryIds": ["11013350", "11013448", "11013460"],
  "ratingCount": 661,
  "inStock": true,
  "condition": "new",
  "variations": 4,
  "shopName": "Apple Flagship Store",
  "shopUrl": "https://shopee.sg/apple.flagshipstore",
  "shopRating": 4.93,
  "shopRatingCount": 307956,
  "fullDetails": true,
  "country": "SG",
  "source": "https://shopee.sg/apple.flagshipstore",
  "scrapedAt": "2026-10-18T06:35:46Z"
}
```

Prices are the ones Shopee shows on the product, after the shop's own discount, in the country's currency (`currency` gives the code). Rows without page details stop at `image`. The **Overview** and **Details** tabs show the main fields as tables; every field is in the downloads. The run report lists, for each search, how many products were found and saved, and names any link that does not exist.

### How can I use Shopee data?

- **Price monitoring:** follow prices and discounts of your products and your competitors' across Southeast Asia and Latin America
- **Market research:** which products, brands and price points fill a category in each country
- **Product sourcing and dropshipping:** find products, their price range and where they ship from
- **Shop and competitor analysis:** everything a shop sells and at what prices
- **Catalog building:** titles, photos, descriptions and categories for comparison sites and apps

### How many products can I scrape from one search?

Thousands. Shopee shows only a few dozen products per search page, so the scraper also reads the other orders and price ranges of the same search until it stops finding new products: a broad keyword like `phone case` gives 7,000+ products. A narrow search ends sooner, with everything Shopee shows for it. Each product is saved once per run, even when several searches find it.

### Use with AI agents (MCP)

AI agents can run this scraper through the Apify MCP server. Ask for example "Find the best-selling wireless earbuds under 50 ringgit on Shopee Malaysia" and the agent sends:

```json
{
  "searchQueries": ["wireless earbuds"],
  "country": "MY",
  "sortBy": "best_selling",
  "maxPrice": 50,
  "maxItems": 50
}
```

### Integrations and API

Run the scraper from your own code with the [Apify API](https://docs.apify.com/api/v2), or connect it to Make, Zapier, n8n, Google Sheets, Airtable, Slack and webhooks from the **Integrations** tab. Schedules run it every hour, day or week.

### ❓FAQ

#### How much does it cost to scrape Shopee?

See the **Pricing** tab for the price per 1,000 products on your plan. You only pay for products saved, and free accounts get $5 of usage every month.

#### Which countries are supported?

Singapore, Malaysia, the Philippines, Thailand, Indonesia, Vietnam, Taiwan, Brazil and Mexico. Pick one in **Country** for search words; links can mix countries.

#### Do I need a Shopee account?

No. The scraper reads only what anyone can see on Shopee without logging in.

#### Does it give units sold or reviews?

No. Units sold and buyer reviews are not part of the data. The star rating comes with every product, and the rating count with page details for many products.

#### Why do some products have no brand or stock with details on?

Shopee shows the full product record (brand, rating count, stock, condition, variations, shop) only on some product pages. Those rows have `fullDetails: true`; the others still get the description, every photo and the category path.

#### Are product details available in every country?

In every country except Taiwan, where the scraper gives the search data only.

#### What happens with a product that was deleted?

It is listed in the run report as not found, and the run still succeeds with everything else.

#### Is it legal to scrape Shopee?

The scraper collects public product listings that anyone can see without logging in, and no personal data. You are responsible for how you use the data. Shopee Scraper is not affiliated with or endorsed by Shopee or Sea Limited.

#### Something does not work. What can I do?

Open the **Issues** tab and tell us the input you used.

If the scraper saves you time, a short review on the Store helps other people find it.

# Actor input Schema

## `searchQueries` (type: `array`):

What to search Shopee for, one search per line, e.g. phone case, sepatu wanita, tênis nike. Each search runs in the country chosen below.

## `country` (type: `string`):

Which Shopee site the search words run on, e.g. SG for shopee.sg. Prices come in that country's currency. Links below always use their own country.

## `sortBy` (type: `string`):

Which order is read first, e.g. Top sales. Runs that ask for more than about 40 products also read the other orders to find more.

## `minPrice` (type: `integer`):

Lowest price in the country's currency, e.g. 10 (SGD) or 50000 (IDR).

## `maxPrice` (type: `integer`):

Highest price in the country's currency, e.g. 100 (SGD) or 500000 (IDR).

## `startUrls` (type: `array`):

Paste Shopee links in any mix, e.g. a search page with your filters (shopee.sg/search?keyword=iphone\&sortBy=sales), a category (shopee.co.id/Sepatu-Pria-cat.11042849), a shop (shopee.sg/apple.flagshipstore or shopee.sg/shop/442800909) or a product (shopee.com.br/...-i.123.456). Any of the 9 countries.

## `maxItems` (type: `integer`):

How many products to save for each search or link, e.g. 100. Set 0 for as many as Shopee shows (often 5,000+ for a broad search).

## `includeDetails` (type: `boolean`):

Open each product's page and add its full description, every photo and its category path; for some products also brand, rating count, stock, condition, variations and the shop's name and rating. Slower and charged as a detailed product. Not available on Shopee Taiwan.

## `proxyConfiguration` (type: `object`):

Leave the default.

## Actor input object example

```json
{
  "searchQueries": [
    "phone case"
  ],
  "country": "SG",
  "sortBy": "relevance",
  "maxItems": 20,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `details` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "phone case"
    ],
    "country": "SG",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/shopee-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["phone case"],
    "country": "SG",
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/shopee-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "phone case"
  ],
  "country": "SG",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/shopee-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/shopee-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YPBcZnWOHFKSndLoi/builds/whVmKZXfYVbPPap04/openapi.json
