Shopee Product Detail avatar

Shopee Product Detail

Pricing

from $5.00 / 1,000 product detail scrapeds

Go to Apify Store
Shopee Product Detail

Shopee Product Detail

Give it Shopee product URLs, get full product detail back: name, description, price, variants/SKUs, full image gallery, seller info, reviews, ratings. Supports Brazil, Indonesia, Thailand, Malaysia, Singapore, Philippines, Vietnam, Mexico.

Pricing

from $5.00 / 1,000 product detail scrapeds

Rating

5.0

(3)

Developer

Gio

Gio

Maintained by Community

Actor stats

1

Bookmarked

105

Total users

59

Monthly active users

11 hours

Issues response

7 hours ago

Last modified

Share

Shopee Product Detail - Scrape Products by URL

Give it Shopee product URLs, get back the full product detail page (PDP) data for each one: name, description, price, variants/SKUs, full image gallery, seller info, ratings, reviews. Supports Brazil, Indonesia, Thailand, Malaysia, Singapore, Philippines, Vietnam and Mexico.

No login, no cookies, no setup. Works out of the box on a paid Apify plan.

Why a dedicated PDP actor?

The companion Shopee Scraper is built for discovery (keyword / category / shop searches that return many products with light card-level fields). This actor is built for detail (you already know which products you want; you need the rich PDP fields: description, variants, full image gallery, seller profile, reviews).

If you paste a product URL into the discovery actor, it falls back to a keyword search and returns related items. This actor does what you actually want with a product URL: one URL in, one product detail record out.

⚠️ Free vs. paid Apify plans

This actor relies on a premium unblocking backend that the actor author pays for. Free Apify accounts cannot pull live Shopee data.

  • Free plan: returns a clearly-labelled MOCK sample (every record has _mock: true and a _notice field) so you can inspect the exact output shape before committing.
  • Paid plan: real, live Shopee data.

Upgrade at https://apify.com/pricing and re-run.

Input

FieldTypeDescription
productUrlsArray (required)List of Shopee product URLs. Accepts both formats.
countryStringBR, SG, MY, TH, ID, MX, PH, VN. Auto-detected from URLs.
includeReviewsBooleanWhen ON, fetches reviews sorted newest-first (with timestamps) plus review-velocity fields. Default false.
reviewsLimitIntegerMax reviews returned in the array (default 30, max 500). Velocity stats use all reachable reviews regardless.
debugBooleanVerbose logs.

Supported URL formats

Both of these point at the same product and both work:

https://shopee.com.br/-i.1337417367.23493715512 ← canonical
https://shopee.com.br/product/1337417367/23493715512 ← newer / app-share format
https://shopee.com.br/any-slug-here-i.1337417367.23493715512 ← slug variant

Output

One record per URL:

{
"itemId": 23493715512,
"shopId": 1337417367,
"name": "Sample Product Name",
"description": "Full product description as listed on Shopee...",
"brand": "BrandName",
"categoryPath": ["Clothing", "Men", "Shoes"],
"attributes": [
{ "name": "Material", "value": "Cotton" },
{ "name": "Color", "value": "Black" }
],
"price": 79.90,
"priceMin": null,
"priceMax": null,
"originalPrice": 209.90,
"discountPercent": 62,
"isOnSale": true,
"currency": "BRL",
"stock": null,
"inStock": true,
"rating": 4.87,
"ratingCounts": [3, 5, 12, 88, 412],
"reviewCount": 520,
"historicalSold": null,
"historicalSoldEstimated": "10k+",
"favorites": 9120,
"shopName": "Official Store BR",
"shopRating": 4.92,
"shopFollowerCount": 184000,
"shopResponseRate": 0.98,
"shopResponseTime": "within hours",
"shopLocation": "São Paulo",
"modelsCount": 4,
"models": [
{ "name": "Black / M", "price": 79.90, "stock": null, "inStock": true, "imageUrl": "https://cf.shopee.com.br/file/..." },
{ "name": "Black / L", "price": 79.90, "stock": null, "inStock": true, "imageUrl": "https://cf.shopee.com.br/file/..." },
{ "name": "White / M", "price": 79.90, "stock": null, "inStock": true, "imageUrl": "https://cf.shopee.com.br/file/..." },
{ "name": "White / L", "price": 79.90, "stock": null, "inStock": false, "imageUrl": "https://cf.shopee.com.br/file/..." }
],
"imagesCount": 8,
"images": ["https://cf.shopee.com.br/file/...", "..."],
"videoUrl": "https://cvf.shopee.com.br/file/...",
"reviewsAccessible": 130,
"reviewsComplete": true,
"reviewsLast30Days": 45,
"newestReviewDate": "2026-06-07",
"oldestReviewDate": "2024-02-11",
"recentReviews": [
{
"rating": 5, "author": "a***a", "date": "2026-06-07", "comment": "Adorei!",
"images": ["https://cf.shopee.com.br/file/..."],
"videos": [
{ "url": "https://down-ws-id.vod.susercontent.com/.../xxxx.mp4", "cover": "https://down-bs-id.img.susercontent.com/..._cover", "durationMs": 11377 }
]
}
],
"url": "https://shopee.com.br/-i.1337417367.23493715512"
}

On a free plan, every record additionally carries _mock: true and an _notice upgrade message.

Field notes

  • price: current sale price.
  • originalPrice: listed price before discount. null when not on sale.
  • discountPercent: integer percent off as reported by Shopee, with a computed fallback. null when not on sale.
  • isOnSale: boolean. true only when originalPrice > price.
  • priceMin / priceMax: only set when the listing has a price range across variants; otherwise null.
  • stock: exact stock quantity. Almost always null because Shopee redacts the numeric quantity on public PDP responses (the field is stripped server-side for non-logged-in access; every *_stock field returns null). Use inStock for availability instead.
  • inStock: boolean availability signal Shopee still exposes (true = at least one variant is buyable, false = sold out, null = unknown). This is the reliable replacement for a stock count.
  • models[]: each variant/SKU with its own price, inStock (boolean), stock (usually null, see above) and image when available.
  • images[]: full gallery, not just the thumbnail. Usually 4–10 images.
  • videoUrl: first promotional video URL when the listing has one.
  • recentReviews: only when includeReviews=true. Reviews sorted newest-first, up to reviewsLimit. Each has date, rating, author, comment, images[] (photo URLs), and videos[]. Each video is { url, cover, durationMs } where url is the direct .mp4, cover the thumbnail, and durationMs the length in milliseconds. videos is [] when the review has no video attached.
  • reviewsLast30Days, newestReviewDate, oldestReviewDate, reviewsAccessible, reviewsComplete: review-velocity fields (only with includeReviews=true). reviewsLast30Days is exact when reviewsComplete is true (Shopee exposed every review of the item). Shopee's review API caps at a few hundred reviews per item, so for very high-volume products it is a lower bound and reviewsComplete is false.
  • reviewCount: real, all-time total number of reviews.
  • historicalSold: the exact all-time sold count. Almost always null: Shopee withholds the sold figure from automated/non-logged-in requests (both the number and its display string are stripped server-side).
  • historicalSoldEstimated: an estimated sold-volume bracket for the product ("10k+", "5k+", "1k+", ... down to "<100" for low-volume items). Since Shopee hides the exact figure, use this as a dependable volume band. Always populated.
  • shopRating, shopFollowerCount, shopResponseRate, shopResponseTime: seller profile signals.

Pricing

This actor is billed per dataset item returned. One URL processed successfully = one billed record. URLs that fail to scrape (404, removed listing, captcha) emit an error record and are not billed as a product.

How fast?

Each product takes roughly 8–15 seconds (one PDP navigation + payload capture). 100 URLs ≈ 15–20 minutes. Reviews add ~1 second per product when includeReviews=true.

Companion actor

Need to find products by keyword, category or shop instead of scraping a known URL? Use Shopee Scraper.

Limitations

  • Shopee may rate-limit aggressive runs. The actor retries the backend connection up to 3 times before failing.
  • Some seller fields (shopResponseRate, shopResponseTime) are null when Shopee doesn't expose them for that shop.
  • historicalSold and stock are redacted by Shopee for automated traffic and come back null. This is inherent to Shopee, not a bug. Use historicalSoldEstimated (volume bracket) and inStock (boolean) as the available substitutes.

Support

If you hit an issue, open an issue on the Apify Store. Include the input URL, the run ID and the error message.

If this actor helped you, please leave a review on the Apify Store. 🙏