Shopee Scraper - All In One avatar

Shopee Scraper - All In One

Pricing

from $10.00 / 1,000 results

Go to Apify Store
Shopee Scraper - All In One

Shopee Scraper - All In One

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

Pricing

from $10.00 / 1,000 results

Rating

3.5

(3)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

3

Bookmarked

238

Total users

113

Monthly active users

6 hours ago

Last modified

Share

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.


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

CodeDomain
idshopee.co.id (Indonesia)
sgshopee.sg (Singapore)
myshopee.com.my (Malaysia)
thshopee.co.th (Thailand)
phshopee.ph (Philippines)
vnshopee.vn (Vietnam)
brshopee.com.br (Brazil)
twshopee.tw (Taiwan)
mxshopee.com.mx (Mexico)
coshopee.com.co (Colombia)
clshopee.cl (Chile)

Where the request comes from matters

Shopee shows different amounts of product information depending on the country your request comes from. To get the richest data (description, brand, full specifications, all variants, image gallery), requests must originate inside the country you are scraping.

When you run this actor on Apify Cloud, it automatically uses an Apify Residential Proxy in the selected country for id, sg, my, th, ph — no setup needed. Local runs from a mismatched IP, and all SPA-only countries (vn, br, tw, mx, co, cl), fall back to a lighter data set (title, price, primary image, rating, sold count, seller info).

What you get per country × mode

Countrykeywordcategoryshopdetail (Apify Cloud)fetchDetail: true (Apify Cloud)
id✅ Full✅ Full
sg✅ Full✅ Full
my✅ Full✅ Full
th✅ Full✅ Full
ph✅ Full✅ Full
vn⚠️ Light⚠️ Light
br⚠️ Light⚠️ Light
tw⚠️ Light⚠️ Light
mx✅ (60–70% have a price)⚠️ Light⚠️ Light
co❌ Not available⚠️ Light⚠️ Light
cl❌ Not available⚠️ Light⚠️ Light

Legend:

  • Full = title + price range + description + brand + all variants + attributes + tier variations + categories + full image gallery + seller info. Only the exact displayed price may be null (Shopee hides it from the detail data); price_min / price_max are returned for most products.
  • ⚠️ Light = title + price + primary image + rating + sold count + seller info. Description, brand, variants, attributes, tier variations, breadcrumb, and image gallery are not returned.
  • 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
  • Lead generation - collect seller info (shop name, location, rating, follower count, response rate)

Input

FieldTypeRequiredDescription
countryselectNo (default: id)Shopee regional domain to scrape
modeselectYesScraping mode (see below)
keywordstringmode=keywordSearch term, e.g. "laptop gaming"
urlstringmode=urlAny Shopee URL - product, search, category, or shop page
shopIdintegermode=detailSeller's numeric shop ID
itemIdintegermode=detailProduct's numeric item ID
categorystringmode=categoryCategory slug, e.g. /Laptop-cat.11044364.11044440
shopstringmode=shopShop username or numeric shop ID
sortselectNo (default: relevancy)Sort order for search/category results
maxProductsintegerNo (default: 40)Maximum products to return
minPriceintegerNoMinimum price filter in local currency (keyword mode only)
maxPriceintegerNoMaximum price filter in local currency (keyword mode only)
fetchDetailbooleanNo (default: false)If true, each product card in keyword/category/shop/url modes is enriched with full detail data (variants, stock, images, attributes, seller info). Slower — each product requires 2 additional HTTP requests. Recommended for ≤ 20 products.
delaynumberNo (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 full detail for a single product: description, all attributes, variants (names + stock availability), seller info, breadcrumb, and pricing when available. 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 full ProductDetail: description, brand, all variant names, stock, full image gallery, product attributes, seller info, breadcrumb, and more.

Speed & Cost

ModefetchDetail~Time for 40 productsRequests
keywordfalse~40–60 sec~2
keywordtrue~6–10 min~82
detail~5–10 sec2

Each enriched product requires 2 HTTP requests (SSR + Googlebot JSON-LD). With the default 1 second delay and residential proxy latency on Apify cloud, expect ~8–12 seconds per product.

Recommendation: Use fetchDetail: false for discovery (large keyword/category runs), then feed interesting shopId + itemId pairs into mode=detail runs for full data. Or use the dedicated Shopee Product Detail actor.

What fetchDetail Adds

FieldProductCardProductDetail (fetchDetail=true)
name / title
price, discount_pct
rating, sold_count
image_url (1 image)
description
brand, brand_id
images[] (all)
models[] (variants)
tier_variations[]
attributes[]
stock, historical_sold
price_min, price_max
availability
shop{} (seller detail)
breadcrumb[]

Example — fetchDetail enabled

Input:

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

Output (one item, enriched):

{
"shop_id": 196846900,
"item_id": 11089699432,
"title": "Laptop Lenovo Thinkpad X1 Carbon 6th Intel Core i5",
"currency": "IDR",
"description": "Laptop bekas berkualitas...",
"brand": "Lenovo",
"price": 3570000.0,
"price_min": 3200000.0,
"price_max": 8370000.0,
"discount_pct": null,
"availability": "InStock",
"stock": 31,
"rating_star": 4.87,
"total_ratings": 55,
"images": ["https://down-id.img.susercontent.com/file/..."],
"models": [
{ "model_id": 227787022248, "name": "i5 Gen8 16GB/256GB", "price": null, "stock": null, "has_stock": true }
],
"attributes": [
{ "name": "Ukuran Layar", "value": "14 inci" }
],
"shop": {
"name": "RASYIDJAYA COMPUTER",
"rating_star": 4.84,
"item_count": 120,
"follower_count": 2248
}
}

Sample Input & Output

Input:

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

Output (one item):

{
"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": 1200,
"location": "Jakarta Barat",
"is_mall": false,
"currency": "IDR"
}

Example 2 - Product Detail

Input:

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

Output:

{
"shop_id": 196846900,
"item_id": 11089699432,
"title": "Laptop Lenovo Thinkpad X1 Carbon 6th Intel Core i5 Gen8 Ram 16gb Ssd 256gb Bergaransi",
"currency": "IDR",
"brand": "Lenovo",
"condition": 4,
"price": 3570000.0,
"price_min": 3200000.0,
"price_max": 8370000.0,
"availability": "InStock",
"rating_star": 4.87,
"total_ratings": 55,
"stock": 31,
"is_hide_stock": false,
"images": [
"https://down-id.img.susercontent.com/file/id-11134207-7ra0n-xxx"
],
"attributes": [
{ "name": "Ukuran Layar", "value": "14 inci" },
{ "name": "Sistem Operasi", "value": "Windows" }
],
"models": [
{
"model_id": 227787022248,
"name": "Carbon 6th i5 Gen8,RAM 16GB/256GB SSD",
"price": null,
"stock": null,
"has_stock": true
}
],
"tier_variations": [],
"breadcrumb": [
{ "position": 1, "name": "Shopee", "url": "https://shopee.co.id" },
{ "position": 2, "name": "Komputer & Aksesoris" },
{ "position": 3, "name": "Laptop" }
],
"shop": {
"shopid": 196846900,
"name": "RASYIDJAYA COMPUTER",
"username": "rasyidjaya_computer",
"location": "KOTA BANDUNG",
"rating_star": 4.84,
"item_count": 120,
"follower_count": 2248,
"response_rate": 98
}
}

Example 3 - URL Auto-detect

Input:

{
"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 exact displayed price is hidden in detail mode. Shopee removes it from the data served to crawlers. You usually still receive price_min and price_max. If you need the exact price, scrape the product through keyword / category / shop mode first — the product card always carries a price.

  • "Sold count" is missing for most products. Shopee hides this number. The actor recovers it on a best-effort basis from visible page text, succeeding for roughly 30–50% of products. Many products will return null for sold_count / sold.

  • 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.

  • 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.

  • Detail richness depends on where the request comes from. Full product information (description, brand, all variants, attributes, image gallery) is only returned when the request originates inside the target country. On Apify Cloud this is handled automatically for id/sg/my/th/ph via residential proxy. From outside, or for vn/br/tw/mx/co/cl, you receive a lighter data set with title, price, primary image, rating, sold count, and seller info only.

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