# Shopee Scraper - All In One (`xtracto/shopee-scraper`) Actor

All-in-one Shopee scraper to extract product, search, category, and shop data across multiple countries. fast, lightweight, and no browser or account required.

- **URL**: https://apify.com/xtracto/shopee-scraper.md
- **Developed by:** [Farhan Febrian Nauval](https://apify.com/xtracto) (community)
- **Categories:** E-commerce, Lead generation
- **Features:** Limited permissions
- **Stats:** 3,514 total users, 284 monthly users, 95.3% runs succeeded, 17 bookmarks
- **User rating**: 4.08 out of 5 stars

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

Extract product data from Shopee across **11 countries** - keyword search, category browsing, product detail, and shop listings. No browser automation, no proxy required for most regions.

***

### Related Actors

<table>
  <tr>
    <td colspan="4"><strong>Shopee Scraper Suite</strong> &nbsp;·&nbsp; Search, browse, get product details, and extract entire shop catalogs across 11 Shopee countries</td>
  </tr>
  <tr valign="top">
    <td width="25%"><strong>All-in-One</strong><br/><strong>&#9656; You are here</strong><br/><sub>Every mode in one actor</sub></td>
    <td width="25%"><a href="https://apify.com/xtracto/shopee-search"><strong>Search &amp; Category</strong></a><br/><sub>Keyword &amp; category listings</sub></td>
    <td width="25%"><a href="https://apify.com/xtracto/shopee-product-detail"><strong>Product Detail</strong></a><br/><sub>Full single-product data</sub></td>
    <td width="25%"><a href="https://apify.com/xtracto/shopee-shop-scraper"><strong>Shop Scraper</strong></a><br/><sub>Every product from a shop</sub></td>
  </tr>
</table>

***

### Why Use This Actor?

Shopee does not provide a public API. Most scraping solutions rely on full browser automation (Playwright/Puppeteer), which is slow, expensive, and fragile. This actor works without launching a browser at all, making it:

- **Fast** - lightweight HTTP requests instead of rendering a full browser
- **Cost-efficient** - lower compute unit consumption
- **Stable** - no dependency on browser fingerprinting or JS rendering pipelines

#### Supported Countries

| Code | Domain |
|------|--------|
| `id` | shopee.co.id (Indonesia) |
| `sg` | shopee.sg (Singapore) |
| `my` | shopee.com.my (Malaysia) |
| `th` | shopee.co.th (Thailand) |
| `ph` | shopee.ph (Philippines) |
| `vn` | shopee.vn (Vietnam) |
| `br` | shopee.com.br (Brazil) |
| `tw` | shopee.tw (Taiwan) |
| `mx` | shopee.com.mx (Mexico) |
| `co` | shopee.com.co (Colombia) |
| `cl` | shopee.cl (Chile) |

***

#### ⚠️ Important: what Shopee still shows publicly (checked 9 Nov 2026)

Shopee has been removing numbers from its public pages through 2026. These are
Shopee platform changes, not actor bugs, and no proxy brings the fields back:
the data is simply no longer in the page.

**No longer available for any country (returned as `null`):** sold count
(`sold`, `sold_count`, `historical_sold`), stock, likes, views, rating count,
and seller statistics (shop rating, followers, item count, response rate).

**`shopee.co.id` detail** (`detail` mode and `fetchDetail: true`): title,
description, brand, attributes, variants (`models`, `tier_variations`), full
image gallery, categories, price, original price, discount, rating, and the
shop name and location.

**Other countries detail:** title, price, original price, discount, rating and
primary image, taken from the product's listing card. Description, brand,
variants, attributes and the gallery are not shown publicly there.

##### What you get per country × mode

| Country | `keyword` | `category` | `shop` | `detail` | `fetchDetail: true` |
|---------|:---------:|:----------:|:------:|:--------:|:-------------------:|
| `id` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `sg` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `my` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `th` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `ph` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `vn` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `br` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `tw` | ✅ | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `mx` | ✅ (60–70% have a price) | ✅ | ✅ | ⚠️ Partial | ⚠️ Partial |
| `co` | ✅ | ❌ Not available | ✅ | ⚠️ Partial | ⚠️ Partial |
| `cl` | ✅ | ❌ Not available | ✅ | ⚠️ Partial | ⚠️ Partial |

**Legend:**

- ✅ = works and returns the fields documented for that mode.
- ⚠️ **Partial** = see the note above. `id` returns full product content without sales numbers; other countries return the listing-card fields only.
- ❌ **Not available** = the mode is rejected with a clear error message in the run log. Use `keyword` or `shop` mode for these regions instead.

***

### Use Cases

- **Price monitoring** - track price changes across products or categories over time
- **Competitor research** - analyze competitor shop listings, pricing tiers, and discount strategies
- **Market research** - discover bestselling products in a category or keyword segment
- **Product catalog extraction** - pull product titles, images, attributes, and variants from a shop or search result
- **Seller discovery** - collect shop IDs, names and locations from search and category results

***

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country` | select | No (default: `id`) | Shopee regional domain to scrape |
| `mode` | select | **Yes** | Scraping mode (see below) |
| `keyword` | string | mode=keyword | Search term, e.g. `"laptop gaming"` |
| `url` | string | mode=url | Any Shopee URL - product, search, category, or shop page |
| `shopId` | integer | mode=detail | Seller's numeric shop ID |
| `itemId` | integer | mode=detail | Product's numeric item ID |
| `category` | string | mode=category | Category slug, e.g. `/Laptop-cat.11044364.11044440` |
| `shop` | string | mode=shop | Shop username or numeric shop ID |
| `sort` | select | No (default: `relevancy`) | Sort order for search/category results |
| `maxProducts` | integer | No (default: `40`) | Maximum products to return |
| `minPrice` | integer | No | Minimum price filter in local currency (keyword mode only) |
| `maxPrice` | integer | No | Maximum price filter in local currency (keyword mode only) |
| `fetchDetail` | boolean | No (default: `false`) | If `true`, each product card in keyword/category/shop/url modes is enriched with its product page. For `id` that adds description, brand, attributes, variants, gallery, categories and shop name; for other countries it adds little beyond the card. Slower — each product adds up to 3 requests. Recommended for ≤ 20 products. |
| `delay` | number | No (default: `1.0`) | Delay in seconds between requests |

#### Modes Explained

##### `keyword` - Search by keyword

Searches Shopee for a keyword and returns product cards (name, price, discount, images, IDs, location).

> **Note:** Results are capped at ~40 products per sort variant. To get more products, increase `maxProducts` - the actor will automatically cycle through additional sort orders (`sales`, `newest`, `price_asc`, `price_desc`) to surface more unique results.

##### `url` - Auto-detect from any Shopee URL

Paste any Shopee URL and the actor auto-detects whether it's a product page, search result, category, or shop listing. Country is also auto-detected from the URL domain, so you can paste a `shopee.sg` URL even when the country input is set to `id`.

##### `detail` - Product detail by Shop ID + Item ID

Fetches the detail for a single product. What it contains depends on the country — see the note on what Shopee still shows publicly above. You need the **Shop ID** and **Item ID**, which can both be found in the product URL:

```
https://shopee.co.id/Product-Name-i.{SHOP_ID}.{ITEM_ID}
                                     ↑          ↑
```

##### `category` - Browse a category page

Provide a category slug (e.g. `/Laptop-cat.11044364.11044440`) or a full category URL. Returns up to `maxProducts` product cards from that category.

##### `shop` - Fetch a shop's product listing

Provide a shop username (e.g. `rasyidjaya_computer`) or a numeric shop ID. Returns product cards from that shop's storefront.

***

### fetchDetail — Rich Enrichment Mode

By default, modes `keyword`, `category`, `shop`, and `url` return lightweight **ProductCard** data (name, price, discount, rating, image URL). This is fast and suitable for large-scale discovery.

Set `fetchDetail: true` to enrich each card with its **ProductDetail** fields. For `shopee.co.id` that means description, brand, attributes, variants, gallery, categories and shop name. For other countries it adds little beyond the card. Sales numbers and seller statistics are not available in either case.

#### Speed & Cost

| Mode | fetchDetail | ~Time for 40 products | Requests |
|------|-------------|----------------------|----------|
| keyword | `false` | ~40–60 sec | ~2 |
| keyword | `true` | ~6–10 min | ~122 |
| detail | — | ~5–10 sec | 3 |

> Each enriched product requires up to 3 requests (product page, shop listing, category lookup). With the default 1 second delay, expect ~8–12 seconds per product.
>
> **Recommendation:** Use `fetchDetail: false` for discovery (large keyword/category runs), and `fetchDetail: true` on `id` when you need descriptions, attributes or variants.

#### What fetchDetail Adds

| Field | ProductCard | ProductDetail `id` | ProductDetail other countries |
|-------|:-----------:|:------------------:|:-----------------------------:|
| name / title, price, discount_pct, rating, image | ✓ | ✓ | ✓ |
| original price | ✓ (when discounted) | ✓ | ✓ |
| categories\[], cat_id | ✗ | ✓ | sometimes |
| description, brand, attributes\[] | ✗ | ✓ | ✗ |
| models\[], tier_variations\[], images\[] (gallery) | ✗ | ✓ | ✗ |
| shop name and location | location | ✓ | ✗ |
| sold, historical_sold, stock, liked_count, view_count, rating count | ✗ | ✗ | ✗ *(removed by Shopee, 2026)* |
| shop rating, followers, response rate | ✗ | ✗ | ✗ *(removed by Shopee, Nov 2026)* |

#### Example — fetchDetail enabled

**Input:**

```json
{
  "country": "id",
  "mode": "keyword",
  "keyword": "laptop gaming",
  "maxProducts": 5,
  "fetchDetail": true
}
```

**Output (one item, enriched):**

```json
{
  "shop_id": 250649369,
  "item_id": 10547676232,
  "title": "ASUS VIVOBOOK GO 14 E1404FA RYZEN 3 7320 8GB 512GB W11+OHS 14.0FHD",
  "currency": "IDR",
  "price": 11648000.0,
  "price_min": 11648000.0,
  "price_max": 11648000.0,
  "discount_pct": 49,
  "rating_star": 5.0,
  "sold": null,
  "images": ["https://down-id.img.susercontent.com/file/id-11134207-7ra0o-xxx"],
  "cat_id": 11044443,
  "categories": [
    { "catid": 11044364, "name": "Komputer & Aksesoris", "url": "https://shopee.co.id/Komputer-Aksesoris-cat.11044364" },
    { "catid": 11044440, "name": "Laptop", "url": "https://shopee.co.id/Laptop-cat.11044364.11044440" },
    { "catid": 11044443, "name": "Laptop Gaming", "url": "https://shopee.co.id/Laptop-Gaming-cat.11044364.11044440.11044443" }
  ],
  "breadcrumb": [
    { "position": 1, "name": "Shopee", "url": "https://shopee.co.id/" },
    { "position": 2, "name": "Komputer & Aksesoris", "url": "https://shopee.co.id/Komputer-Aksesoris-cat.11044364" },
    { "position": 3, "name": "Laptop", "url": "https://shopee.co.id/Laptop-cat.11044364.11044440" },
    { "position": 4, "name": "Laptop Gaming", "url": "https://shopee.co.id/Laptop-Gaming-cat.11044364.11044440.11044443" }
  ],
  "shop": {
    "shopid": 250649369,
    "name": "Agres Official Shop",
    "username": "agresid",
    "rating_star": null,
    "item_count": null,
    "follower_count": null,
    "is_official_shop": true
  }
}
```

> Example from a country other than `id`: `description`, `brand`, `models`, `attributes` and `tier_variations` come back empty there. On `id` they are filled. Sales numbers and seller statistics are `null` everywhere (see the note near the top).

***

### Sample Input & Output

#### Example 1 - Keyword Search

**Input:**

```json
{
  "country": "id",
  "mode": "keyword",
  "keyword": "laptop gaming",
  "sort": "sales",
  "maxProducts": 40
}
```

**Output (one item):**

```json
{
  "shop_id": 12345678,
  "item_id": 98765432100,
  "name": "Laptop Gaming ASUS ROG Strix G15 Ryzen 7 16GB 512GB RTX3060",
  "url": "https://shopee.co.id/Laptop-Gaming-ASUS-ROG-i.12345678.98765432100",
  "image_url": "https://down-id.img.susercontent.com/file/id-11134207-xxx",
  "price": 14999000,
  "original_price": 17500000,
  "discount_pct": 14,
  "rating": 4.9,
  "rating_count": 312,
  "sold_count": null,
  "location": "Jakarta Barat",
  "is_mall": false,
  "currency": "IDR"
}
```

#### Example 2 - Product Detail

**Input:**

```json
{
  "country": "id",
  "mode": "detail",
  "shopId": 196846900,
  "itemId": 11089699432
}
```

**Output:**

```json
{
  "shop_id": 250649369,
  "item_id": 10547676232,
  "title": "ASUS VIVOBOOK GO 14 E1404FA RYZEN 3 7320 8GB 512GB W11+OHS 14.0FHD GRN GRY",
  "currency": "IDR",
  "shop_location": "KOTA JAKARTA UTARA",
  "price": 11648000.0,
  "price_min": 11648000.0,
  "price_max": 11648000.0,
  "discount_pct": 49,
  "rating_star": 5.0,
  "sold": null,
  "images": [
    "https://down-id.img.susercontent.com/file/id-11134207-7ra0o-xxx"
  ],
  "cat_id": 11044443,
  "categories": [
    { "catid": 11044364, "name": "Komputer & Aksesoris", "url": "https://shopee.co.id/Komputer-Aksesoris-cat.11044364" },
    { "catid": 11044440, "name": "Laptop", "url": "https://shopee.co.id/Laptop-cat.11044364.11044440" },
    { "catid": 11044443, "name": "Laptop Gaming", "url": "https://shopee.co.id/Laptop-Gaming-cat.11044364.11044440.11044443" }
  ],
  "breadcrumb": [
    { "position": 1, "name": "Shopee", "url": "https://shopee.co.id/" },
    { "position": 2, "name": "Komputer & Aksesoris", "url": "https://shopee.co.id/Komputer-Aksesoris-cat.11044364" },
    { "position": 3, "name": "Laptop", "url": "https://shopee.co.id/Laptop-cat.11044364.11044440" },
    { "position": 4, "name": "Laptop Gaming", "url": "https://shopee.co.id/Laptop-Gaming-cat.11044364.11044440.11044443" }
  ],
  "shop": {
    "shopid": 250649369,
    "name": "Agres Official Shop",
    "username": "agresid",
    "location": "KOTA JAKARTA UTARA",
    "rating_star": null,
    "item_count": null,
    "follower_count": null,
    "response_rate": null,
    "is_official_shop": true
  }
}
```

> Example from a country other than `id`: `description`, `brand`, `models`, `attributes` and `tier_variations` come back empty there. On `id` they are filled. Sales numbers and seller statistics are `null` everywhere (see the note near the top).

#### Example 3 - URL Auto-detect

**Input:**

```json
{
  "mode": "url",
  "url": "https://shopee.co.id/search?keyword=mouse+wireless",
  "maxProducts": 20
}
```

Returns the same format as keyword search. Country is auto-detected from the URL.

***

### Known Limitations

- **Per-variant prices and stock are hidden by Shopee.** For products
  with multiple variants (size, color, spec), each variant entry will
  have `price: null` and `stock: null`. You receive an overall price
  range (`price_min` / `price_max`) for most products, plus a single
  aggregate `stock` value.

- **The price in detail mode comes from the product's listing card.**
  The product page itself no longer carries a price, so the actor finds
  the item in a title search or its shop's listing. If the item is in
  neither, `price` is `null`.

- **Sold count is no longer available.** Since November 2026 Shopee
  shows no sold figure on any public page, so `sold_count`, `sold` and
  `historical_sold` are `null`.

- **Keyword search returns around 40 products per page.** The actor
  rotates through different sort orders (sales, newest, price low,
  price high) to surface more unique items, but the total can fall
  short of `maxProducts` for narrow queries.
  > **Tip — to collect more varied results, run several related keywords**
  > instead of one broad term. For example, rather than only `laptop`,
  > run separate runs for `laptop`, `laptop gaming`, `laptop bekas`,
  > `laptop asus`, `notebook`, etc., then merge the datasets. Each keyword
  > surfaces a different slice of Shopee's catalog, so combining them gives
  > far broader coverage than a single search.

- **Category pages have only one page of results** in `category` mode.
  Deeper navigation is not available through public access.

- **`category` mode is not available for Colombia (`co`) and Chile
  (`cl`).** These regions do not expose category pages publicly. Use
  `keyword` or `shop` mode for those countries.

- **Product detail depends on the country.** `shopee.co.id` still
  publishes description, brand, attributes, variants and the gallery;
  other countries do not, so detail there is the listing-card data. Seller
  statistics (shop rating, followers, response rate) were removed for every
  country in November 2026; the shop name and location remain on `id`.

- **Flash sale and voucher prices are not available.** These require an
  authenticated browser session and cannot be obtained through public
  access

# Actor input Schema

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

Shopee regional site. Notes: (1) mode=category is NOT available for Colombia (co) and Chile (cl) — these regions do not expose category pages publicly. (2) mode=detail and fetchDetail=true return full product information (description, brand, all variants, attributes, image gallery) only for id/sg/my/th/ph when running on Apify Cloud (residential proxy is used automatically); for other countries you receive a lighter set: title, price, primary image, rating, sold count, seller info.

## `mode` (type: `string`):

Choose what to scrape:
• **Keyword search** — search products by keyword
• **Any Shopee URL** — paste any Shopee link, auto-detected
• **Product detail** — get product data (title, price, categories, breadcrumb, seller) by Shop ID + Item ID
• **Category page** — scrape all products in a category
• **Shop listing** — scrape all products from a shop

## `keyword` (type: `string`):

Keyword to search for (e.g. "laptop gaming", "iphone 15"). Required when mode = keyword.

## `sort` (type: `string`):

Sort order for keyword search results.

## `maxProducts` (type: `integer`):

Maximum number of products to collect. Shopee shows ~40 per page; the scraper auto-paginates to reach this limit.

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

Minimum price in local currency (e.g. 100000 for IDR 100.000). Leave empty for no minimum. Only applies to keyword search.

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

Maximum price in local currency. Leave empty for no maximum. Only applies to keyword search.

## `url` (type: `string`):

Any Shopee URL — product page, search results, category, or shop. Required when mode = url.

## `shopId` (type: `string`):

Numeric seller shop ID (entered as text to preserve every digit). Required when mode = detail. Example: 196846900

## `itemId` (type: `string`):

Numeric product item ID (entered as text to preserve every digit — number fields round off long IDs). Required when mode = detail. Example: 11089699432

## `category` (type: `string`):

Category slug or full URL. Example: /Laptop-cat.11044364.11044440. Required when mode = category.

## `shop` (type: `string`):

Shop username (e.g. xiaomi.sg) or numeric Shop ID. Required when mode = shop.

## `fetchDetail` (type: `boolean`):

If enabled, each product card from keyword/category/shop/url mode is enriched with the detail fields still reachable over HTTP: price_min/price_max, availability, categories + cat_id + breadcrumb, and full seller/shop info. Uses more requests and takes longer. Note: description, brand, variants and attributes are no longer available for any country (Shopee moved them behind a browser-only API in mid-2026).

## `delay` (type: `number`):

Minimum delay between HTTP requests. Increase if you hit rate limits; decrease for faster scraping. Default 1.0s is safe for most runs.

## Actor input object example

```json
{
  "country": "id",
  "mode": "keyword",
  "keyword": "laptop gaming",
  "sort": "relevancy",
  "maxProducts": 40,
  "url": "https://shopee.co.id/search?keyword=laptop",
  "shopId": "196846900",
  "itemId": "11089699432",
  "category": "/Laptop-cat.11044364.11044440",
  "shop": "rasyidjaya_computer",
  "fetchDetail": false,
  "delay": 1
}
```

# Actor output Schema

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

One row per product. Keyword, category and shop modes return product cards (name, price, rating, sold_count, location); detail/url modes and fetchDetail=true return the full product detail (variants, stock, attributes, images, seller).

# 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 = {
    "country": "id",
    "mode": "keyword",
    "keyword": "laptop gaming",
    "sort": "relevancy",
    "maxProducts": 40,
    "url": "https://shopee.co.id/search?keyword=laptop",
    "shopId": "196846900",
    "itemId": "11089699432",
    "category": "/Laptop-cat.11044364.11044440",
    "shop": "rasyidjaya_computer",
    "fetchDetail": false,
    "delay": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/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 = {
    "country": "id",
    "mode": "keyword",
    "keyword": "laptop gaming",
    "sort": "relevancy",
    "maxProducts": 40,
    "url": "https://shopee.co.id/search?keyword=laptop",
    "shopId": "196846900",
    "itemId": "11089699432",
    "category": "/Laptop-cat.11044364.11044440",
    "shop": "rasyidjaya_computer",
    "fetchDetail": False,
    "delay": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("xtracto/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 '{
  "country": "id",
  "mode": "keyword",
  "keyword": "laptop gaming",
  "sort": "relevancy",
  "maxProducts": 40,
  "url": "https://shopee.co.id/search?keyword=laptop",
  "shopId": "196846900",
  "itemId": "11089699432",
  "category": "/Laptop-cat.11044364.11044440",
  "shop": "rasyidjaya_computer",
  "fetchDetail": false,
  "delay": 1
}' |
apify call xtracto/shopee-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,xtracto/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/cZrxaxPbcqHwGwSlm/builds/N1OHYWhByegpTkZSX/openapi.json
