DHgate Product Scraper
Pricing
from $20.00 / 1,000 results
DHgate Product Scraper
Scrape full DHgate.com product detail: title, tiered wholesale pricing, minimum order, specifications, images, shipping, reviews summary, and the seller's store profile.
Pricing
from $20.00 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Febrian Nauval
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Get the full detail of any DHgate.com product from its URL — title, tiered wholesale pricing, minimum order, specifications, shipping, reviews summary, and the seller's store profile — as structured JSON.
Why use this actor
- Complete wholesale pricing — the price, the price range, the original pre-discount price, the discount, and the full quantity-break ladder (e.g. 1–7, 8–25, 100+) with the unit price for every band.
- Buyer-ready sourcing data — minimum order quantity, order unit, availability, maximum order quantity, and recent sales count.
- Full seller profile — store name, store page, positive-feedback percentage, years active, total store items, accumulated orders, store followers, and location.
- Reviews summary — overall rating and review count, plus a couple of sample review snippets when shown.
- Specifications and images — the product attribute list (key/value) and the full image gallery.
- No account, no API key — works straight from public product pages.
- Automatic retries — transient hiccups are retried for you, so runs stay reliable.
- Stable JSON output — the same field names every run, ready for spreadsheets, databases, or pipelines.
How it works
- You provide one or more DHgate product page URLs.
- The actor loads each product page and reads the complete detail — title, pricing ladder, minimum order, specifications, shipping, reviews summary, and the seller's store profile.
- Each product is saved as one
PRODUCT_DETAILrecord. - If a URL points to a removed or unavailable product, the actor still writes one diagnostic record so a URL is never silently dropped.
- Everything lands in your dataset, exportable as JSON, CSV, or Excel.
You don't need to manage any browsers or scrapers. For larger runs we recommend enabling a proxy.
Input
{"urls": ["https://www.dhgate.com/product/st9-jacob-watch-ceramic-bezel-black-sapphire/1106196355.html"],"maxConcurrency": 4,"maxRequestRetries": 5,"proxyConfiguration": { "useApifyProxy": true }}
Each URL in urls is scraped independently and produces its own PRODUCT_DETAIL record.
| Field | Type | Description |
|---|---|---|
urls | array | Required. DHgate product detail page URLs to scrape (one per array entry). Each URL produces one complete product record. |
maxConcurrency | integer | Number of product pages fetched in parallel (1–20). Default 4. |
maxRequestRetries | integer | Retries per URL before giving up (1–15). Default 5. |
proxyConfiguration | object | Apify Proxy or a custom proxy list. Datacenter proxies work fine for this source. |
Output
Each product is one record (recordType: "PRODUCT_DETAIL"). Real sample (description truncated, long arrays trimmed):
{"recordType": "PRODUCT_DETAIL","url": "https://www.dhgate.com/product/st9-jacob-watch-ceramic-bezel-black-sapphire/1106196355.html","itemCode": "1106196355","productId": "8aaafce29e15efcf019e2ab8ace940f4","title": "St9 Jacob Watch Ceramic Bezel Black Sapphire Date Dial 41Mm Automatic Mechanical Stainless Steel Mens Men Jacobo Co Wristwatches 4Ca","description": "High end calvin klein shoes amazon to show your good taste, buy tommy hilfiger houndstooth dress for men and heart month for women from luxury_jewelry_top1, check out the new st9 jacobo men's automatic mechanical vintage watches with ceramic bezel,...!","brand": "dhgate","category": "Wristwatches","breadcrumb": [{ "name": "DHgate", "url": "https://www.dhgate.com/" },{ "name": "Watches", "url": "https://www.dhgate.com/wholesale/watches/c101.html" },{ "name": "Wristwatches", "url": "https://www.dhgate.com/wholesale/wristwatches/c101001.html" }],"primaryPrice": 29.47,"currency": "USD","priceMin": 29.47,"priceMax": 42.12,"listPriceMin": 36.38,"listPriceMax": 52.0,"discountPercent": 19,"tierPrices": [{ "minQty": 1, "maxQty": 1, "price": 42.12, "originalPrice": 52.0, "discountPercent": null },{ "minQty": 2, "maxQty": 2, "price": 41.28, "originalPrice": 50.96, "discountPercent": null },{ "minQty": 3, "maxQty": 7, "price": 40.86, "originalPrice": 50.44, "discountPercent": null },{ "minQty": 8, "maxQty": 25, "price": 33.31, "originalPrice": 41.12, "discountPercent": null },{ "minQty": 26, "maxQty": 99, "price": 31.76, "originalPrice": 39.21, "discountPercent": null },{ "minQty": 100, "maxQty": null, "price": 29.47, "originalPrice": 36.38, "discountPercent": null }],"variants": [],"minOrder": 1,"unit": "Piece","availability": "InStock","maxSaleQty": 11111,"soldCount": 18,"shipping": [{ "destination": "Indonesia", "cost": 13.33, "currency": "USD" }],"specs": {"Style": "Casual","BRAND": "no Brand","Gender": "Men's","Feature": "Auto Date","Movement": "Mechanical Automatic","Band Color": "Red","Dial Shape": "Round","Band length": "10","Dial Display": "Analog","Dail Diameter": "44"},"reviewsSummary": { "rating": 5.0, "reviewCount": 66 },"reviewSamples": [{ "author": "Anth****ung", "rating": 5.0, "text": "Exquisite and elegant packaging, great for personal use or as a gift." }],"seller": {"name": "luxury_jewelry_top1","sellerId": "8aaafdb89a4881da019a58638dd314a4","storeUrl": "https://www.dhgate.com/store/22273705.html","feedbackPercent": "87.2","positiveLast1Year": "56","yearsOnPlatform": 1,"since": "Nov 2025","itemCount": 660,"ordersAccumulated": 143,"storeFavoriteNum": 15,"location": "China","region": "China","businessType": null,"tieringLevel": "LV2"},"images": ["https://img4.dhresource.com/0x0/f3/albu/bw/m/14/2ae1b0e0-7b90-4939-82c5-8c54fb7c59e3.jpg","https://img4.dhresource.com/0x0/f3/albu/ys/s/12/a25d2656-d67f-47fe-b87f-d24b9e01d178.jpg"],"scrapedAt": "2026-06-11T02:08:15Z"}
If a URL points to a removed or unavailable product, the actor writes a single diagnostic record instead:
{"recordType": "PRODUCT_DETAIL","url": "https://www.dhgate.com/product/old-listing/9999999999999.html","error": "NOT_FOUND","scrapedAt": "2026-06-11T02:08:25Z"}
| Field | Type | Description |
|---|---|---|
recordType | string | Always "PRODUCT_DETAIL". |
url | string | The scraped product URL. |
itemCode | string | DHgate product item code. |
productId | string | Internal product identifier. |
title | string | Product title. |
description | string | Product description text. |
brand | string | Brand name when shown. |
category | string | Product category. |
breadcrumb | array | Category path, each { name, url }. |
primaryPrice | number | Headline (lowest) selling price. |
currency | string | ISO currency of the price (e.g. USD). |
priceMin / priceMax | number | Low / high end of the current selling price. |
listPriceMin / listPriceMax | number | Low / high end of the original pre-discount price. |
discountPercent | integer | Overall discount percentage when on promotion. |
tierPrices | array | Quantity-break ladder. Each band: { minQty, maxQty, price, originalPrice, discountPercent }. maxQty is null on the open-ended top band ("and up"). |
variants | array | Buyer-selectable option matrix (color/size). Empty when the product has no selectable variants on the page. |
minOrder | integer | Minimum order quantity. |
unit | string | Order unit, e.g. Piece. |
availability | string | Stock state, e.g. InStock. |
maxSaleQty | integer | Maximum order quantity when shown. |
soldCount | integer | Recently sold count when shown. |
shipping | array | Shipping samples, each { destination, cost, currency }. |
specs | object | Product attributes as key/value pairs. |
reviewsSummary | object | { rating, reviewCount }. |
reviewSamples | array | Sample reviews when shown, each { author, rating, text }. |
seller | object | Store profile (see below). |
images | array | Product image gallery URLs. |
scrapedAt | string | ISO 8601 timestamp of collection. |
error | string | Only on diagnostic records: NOT_FOUND or BLOCKED_AFTER_RETRIES. |
The seller object contains:
| Field | Type | Description |
|---|---|---|
name | string | Store name / handle. |
sellerId | string | Internal seller identifier. |
storeUrl | string | Seller's store page URL. |
feedbackPercent | string | Positive-feedback percentage, e.g. 87.2. |
positiveLast1Year | string | Positive ratings in the last year. |
yearsOnPlatform | integer | Years the seller has been active. |
since | string | Store opening month, e.g. Nov 2025. |
itemCount | integer | Total items in the store. |
ordersAccumulated | integer | Accumulated confirmed orders. |
storeFavoriteNum | integer | Number of store followers. |
location | string | Seller location. |
region | string | Seller region/country. |
businessType | string | Business type when shown. |
tieringLevel | string | Seller level, e.g. LV2. |
Notes on optional fields
variantsis populated only when a product exposes a selectable color/size matrix on the page; many wholesale listings sell a single configuration and return an empty list.shippingshows the sample destinations the page advertises; full per-method shipping tables vary by listing.brandis often the platform default (dhgate) when the seller has not set a real brand.businessTypeis sometimes blank and returned asnull.
Other DHgate / Wholesale Scrapers
| Actor | Description |
|---|---|
| DHgate Search Scraper | Keyword search → product cards with price, minimum order, seller, and ratings. |
| DHgate Product Scraper | Full product detail: tiered pricing, specifications, shipping, reviews, and seller profile. |