Shopee Product Catalog & Variant Scraper avatar

Shopee Product Catalog & Variant Scraper

Pricing

from $4.00 / 1,000 products

Go to Apify Store
Shopee Product Catalog & Variant Scraper

Shopee Product Catalog & Variant Scraper

Scrape Shopee product pages across 11 countries: title, full description with inline images, all photos and videos, specifications, category breadcrumb, seller vouchers, and every variant with its Colour/Size options resolved - plus the seller's profile. No login or API key.

Pricing

from $4.00 / 1,000 products

Rating

0.0

(0)

Developer

Elena Vance

Elena Vance

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Share

Pull complete product content off Shopee — across 11 marketplaces, with no API key, no login, no browser and no residential proxy.

Built for catalogue work: PIM population, content migration, competitor assortment tracking, brand and listing monitoring, and building product datasets for search or LLM use.


Read this first: what is and isn't here

This Actor does not return price, stock, ratings or units sold. That is a property of Shopee, not of the Actor, and being straight about it up front is more useful than burying it.

Shopee serves the product page with those fields deliberately stripped — its own payload literally lists them as removed:

"removed_fields": ["product_price.price", "product_price.price_before_discount",
"product_price.discount", "item.bundle_deal_info"]

…and it returns a constant placeholder of 10 for every variant's stock, verified across 24 SKUs on three marketplaces. This Actor omits that field rather than passing a fake number through as inventory.

Reaching the real numbers means defeating Shopee's anti-fraud device attestation — which does not work even from a genuine headful Chrome (see docs/architecture.md). Actors that do sell those fields pay a commercial unblocking service per request, and that cost lands in their pricing.

Everything below is real, complete and stable.


What you get

GroupFields
Identityitem ID, shop ID, canonical URL, marketplace, currency
Contenttitle, brand, condition, plain-text description, and the description as ordered blocks so inline images keep their position
Mediaevery product photo, videos with a playable MP4 URL + duration + thumbnail, size-chart image
TaxonomyShopee's internal category path and the consumer-facing breadcrumb, both as {id, name}
Specificationsseller-declared attributes as {name, value} — material, origin, warranty…
Variantsthe option axes (Colour → options + swatch images) and every SKU with its options resolved to readable names
Promotionsseller vouchers with minimum spend, discount amount or percentage, % used, and validity window
Logisticsfree shipping, pre-order, estimated shipping days, wholesale, ships-from location, cross-border
Sellerrating, review total, followers, listing count, response rate, cancellation rate, badges

The variant join is the point

Shopee stores variants as two disconnected halves: the option names live in one place, and each SKU refers to them only by positional index ([2, 1]). Raw exports leave you to reassemble that. This Actor does the join:

"variations": [
{ "name": "Color", "options": ["White", "Blue Camouflage", "Rosy Camouflage"],
"optionImages": ["https://down-sg.img.susercontent.com/file/4acb03…"] },
{ "name": "Size", "options": ["14: Insole 11.5cm", "15: Insole 12.0cm", "…"] }
],
"variants": [
{ "modelId": 92932478374, "name": "White,20: Insole 14.5cm",
"options": { "Color": "White", "Size": "20: Insole 14.5cm" },
"isPreOrder": false, "estimatedShippingDays": 1, "isAvailable": true }
]

Example output (trimmed)

{
"itemId": 6192497619,
"shopId": 178158839,
"region": "sg",
"url": "https://shopee.sg/product/178158839/6192497619",
"title": "Kids Baby Lightweight Sandals Summer Boys Mesh Sandals 0-3Yrs Girls Infant Prewalker",
"condition": "new",
"isAvailable": true,
"categories": [
{ "id": 100633, "name": "Baby & Kids Fashion" },
{ "id": 100692, "name": "Boy Shoes" },
{ "id": 101060, "name": "Sandals" }
],
"attributes": [
{ "name": "Country of Origin", "value": "China" },
{ "name": "Material", "value": "Rubber" }
],
"variantCount": 24,
"vouchers": [
{ "code": "BABY70201", "minSpend": 11.0, "discountAmount": 0.33,
"percentUsed": 32, "endsAt": "2026-10-03T15:59:00Z" }
],
"videos": [
{ "url": "https://mms.vod.susercontent.com/…/…default.mp4",
"definition": "V540P", "durationSeconds": 12 }
],
"shopLocation": "Mainland China",
"isCrossBorder": true,
"createdAt": "2021-06-22T07:01:57Z",
"shop": {
"shopId": 178158839, "name": "Yienws.sg", "itemCount": 684,
"followerCount": 16446, "ratingStar": 4.86, "ratingTotal": 36688,
"responseRate": 85, "cancellationRate": 0
}
}

Input

A Shopee product needs two IDs — a shop ID and an item ID. All of these carry both:

{
"products": [
"https://shopee.sg/product/178158839/6192497619",
"https://shopee.sg/Kids-Baby-Sandals-i.178158839.6192497619",
"178158839/6192497619",
"https://shopee.co.id/product/165796339/7454342119"
],
"includeShop": true,
"includeDescription": true
}

Paste a single item ID and the Actor tells you exactly what's missing rather than failing vaguely.

OptionDefaultNotes
productsRequired. Product URLs or shopId/itemId pairs.
regionsgApplies only to bare pairs; URLs use their own domain.
includeShoptrueSeller profile, fetched once per shop and reused.
includeDescriptiontrueLargest part of a record; off for a slimmer dataset.
maxItems100Hard cap on stored rows.
proxyConfigurationoffLeave off — see below.

Marketplaces

Singapore · Malaysia · Indonesia · Thailand · Vietnam · Philippines · Taiwan · Brazil · Mexico · Colombia · Chile

Verified live on all of them. Shopee has exited Spain, France, India and Poland, so those are not offered.

Speed and cost

One product is one HTTP request. The seller profile is one more per shop, not per product, so 500 products from one seller cost 501 requests, not 1,000. No browser is launched. Measured: 4 products across 3 countries in ~4 seconds.

No proxy is used unless Shopee actually blocks an IP, and then the Actor escalates on its own — datacenter first (included in every Apify plan, free tier included), residential only if your plan has it.

Use it for

  • Catalogue and PIM population — titles, specs, images, variants and category paths in one structured row per product.
  • Assortment tracking — watch which SKUs and options a competitor adds or drops over time by scheduling a run.
  • Content migration — move listings between marketplaces with the description blocks and images intact.
  • Search / LLM datasets — clean, deduplicated product records with a real category path.
  • Voucher monitoring — seller promo codes with their spend thresholds and expiry.

Pair with the Shopee Shop & Seller Profile Scraper for seller-level metrics, and the category and brand-directory Actors to discover what to feed in.