DHgate Product Scraper avatar

DHgate Product Scraper

Pricing

from $20.00 / 1,000 results

Go to Apify Store
DHgate Product Scraper

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

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

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

  1. You provide one or more DHgate product page URLs.
  2. 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.
  3. Each product is saved as one PRODUCT_DETAIL record.
  4. If a URL points to a removed or unavailable product, the actor still writes one diagnostic record so a URL is never silently dropped.
  5. 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.

FieldTypeDescription
urlsarrayRequired. DHgate product detail page URLs to scrape (one per array entry). Each URL produces one complete product record.
maxConcurrencyintegerNumber of product pages fetched in parallel (120). Default 4.
maxRequestRetriesintegerRetries per URL before giving up (115). Default 5.
proxyConfigurationobjectApify 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"
}
FieldTypeDescription
recordTypestringAlways "PRODUCT_DETAIL".
urlstringThe scraped product URL.
itemCodestringDHgate product item code.
productIdstringInternal product identifier.
titlestringProduct title.
descriptionstringProduct description text.
brandstringBrand name when shown.
categorystringProduct category.
breadcrumbarrayCategory path, each { name, url }.
primaryPricenumberHeadline (lowest) selling price.
currencystringISO currency of the price (e.g. USD).
priceMin / priceMaxnumberLow / high end of the current selling price.
listPriceMin / listPriceMaxnumberLow / high end of the original pre-discount price.
discountPercentintegerOverall discount percentage when on promotion.
tierPricesarrayQuantity-break ladder. Each band: { minQty, maxQty, price, originalPrice, discountPercent }. maxQty is null on the open-ended top band ("and up").
variantsarrayBuyer-selectable option matrix (color/size). Empty when the product has no selectable variants on the page.
minOrderintegerMinimum order quantity.
unitstringOrder unit, e.g. Piece.
availabilitystringStock state, e.g. InStock.
maxSaleQtyintegerMaximum order quantity when shown.
soldCountintegerRecently sold count when shown.
shippingarrayShipping samples, each { destination, cost, currency }.
specsobjectProduct attributes as key/value pairs.
reviewsSummaryobject{ rating, reviewCount }.
reviewSamplesarraySample reviews when shown, each { author, rating, text }.
sellerobjectStore profile (see below).
imagesarrayProduct image gallery URLs.
scrapedAtstringISO 8601 timestamp of collection.
errorstringOnly on diagnostic records: NOT_FOUND or BLOCKED_AFTER_RETRIES.

The seller object contains:

FieldTypeDescription
namestringStore name / handle.
sellerIdstringInternal seller identifier.
storeUrlstringSeller's store page URL.
feedbackPercentstringPositive-feedback percentage, e.g. 87.2.
positiveLast1YearstringPositive ratings in the last year.
yearsOnPlatformintegerYears the seller has been active.
sincestringStore opening month, e.g. Nov 2025.
itemCountintegerTotal items in the store.
ordersAccumulatedintegerAccumulated confirmed orders.
storeFavoriteNumintegerNumber of store followers.
locationstringSeller location.
regionstringSeller region/country.
businessTypestringBusiness type when shown.
tieringLevelstringSeller level, e.g. LV2.

Notes on optional fields

  • variants is 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.
  • shipping shows the sample destinations the page advertises; full per-method shipping tables vary by listing.
  • brand is often the platform default (dhgate) when the seller has not set a real brand.
  • businessType is sometimes blank and returned as null.

Other DHgate / Wholesale Scrapers

ActorDescription
DHgate Search ScraperKeyword search → product cards with price, minimum order, seller, and ratings.
DHgate Product ScraperFull product detail: tiered pricing, specifications, shipping, reviews, and seller profile.