DHgate Scraper — Wholesale Products, Price Tiers & Sellers avatar

DHgate Scraper — Wholesale Products, Price Tiers & Sellers

Pricing

from $0.80 / 1,000 results

Go to Apify Store
DHgate Scraper — Wholesale Products, Price Tiers & Sellers

DHgate Scraper — Wholesale Products, Price Tiers & Sellers

DHgate.com scraper: export wholesale products by keyword, category, store or item number with volume price tiers, MOQ, shipping cost and delivery days to your country, sales, ratings, reviews, specifications and seller details. No login. Export CSV, Excel, JSON.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

DHgate Scraper — DHgate.com Wholesale Products, Price Tiers, MOQ and Sellers to CSV, Excel or JSON

Not affiliated with DHgate. This is an independent tool that reads the public pages DHgate.com (敦煌网) shows to every visitor. "DHgate" and "DHgate.com" are trademarks of their owner and are used here only to describe what the tool works with.

DHgate Scraper is a DHgate.com scraper and DHgate API alternative for wholesale product data: type a keyword such as wireless earbuds, led strip lights or yoga pants, paste a DHgate search, category, store or product URL, or give category IDs, store numbers and item numbers, and it exports every product it finds with the price range and quantity price tiers, minimum order quantity (MOQ), units sold, rating and review count, free-shipping flag, delivery promise and the seller behind the listing — store name, store ID, positive-feedback score, level and years on DHgate. Switch on Read the product page and every row also carries the full volume price ladder, shipping cost and delivery days to your country, ships-from warehouse, options, specifications, package size and weight, the newest reviews, and the seller's registered company, country, orders, product count and staff size. Scrape dhgate.com without login, without cookies and without writing code, then export to CSV, Excel, JSON, XML or straight into Google Sheets, a database or an AI agent. DHgate itself shows at most 4,040 products for one search; with deep search switched on (the default) big searches continue in price bands, so a single keyword gives more than 10,000 unique products in one run.

People use it as a DHgate product scraper, a DHgate price and MOQ tracker, a DHgate seller scraper and a lightweight DHgate.com API for dropshipping product research, wholesale price comparison, private-label sourcing, supplier shortlists, competitor monitoring and catalogue building. It answers long-tail needs like export DHgate search results to Excel, scrape DHgate products with price tiers, DHgate wholesale price list, find low MOQ products on DHgate, DHgate free shipping products list, scrape all products of a DHgate store or DHgate seller feedback data, and the Chinese-language ones cross-border teams search for: 敦煌网数据采集、敦煌网爬虫、敦煌网商品采集、敦煌网商品数据导出、敦煌网批发价格监控、敦煌网店铺商品抓取、敦煌网卖家数据、跨境电商选品工具、一件代发选品、起订量与阶梯价导出. Every row is a real DHgate.com listing with a stable item code, cleaned types (numbers as numbers, ISO dates, absolute URLs) and nothing invented.

Table of contents

  1. At a glance
  2. What you get
  3. Who uses it
  4. Cookbook: ready-made inputs
  5. How to run it in Apify Console
  6. How to run it through the API
  7. Input reference
  8. Data dictionary
  9. Real output sample
  10. How much data and how fast
  11. What you pay
  12. Integrations
  13. Performance tips
  14. Troubleshooting and status messages
  15. Honest limits
  16. DHgate Scraper compared with the other options
  17. FAQ
  18. Glossary
  19. Is it legal to scrape DHgate.com?
  20. Changelog
  21. Support

At a glance

What it scrapesDHgate.com (敦煌网), the cross-border wholesale marketplace: keyword searches, pasted search / category / store / product URLs, category IDs, store numbers and item numbers
One rowOne product listing; 37 columns from search cards, 72 with the product page read, 75 with the full description
InputSearch terms, DHgate URLs, category IDs, store IDs, item codes, plus DHgate's own filters: price window, max MOQ, single piece, free shipping, on sale, customizable, US warehouse, ship-to country, sort
DepthDHgate lists at most 4,040 products per search window; deep search adds up to 16 price bands per search. Measured: 15,000 unique products in one run, 0 duplicates
Speed20 products in 3.0 s; 1,000 products in about 9.8 s; 15,000 products in 115.0 s (platform runs, 25 October 2026 UTC). With product pages: 1,000 products in 249 s
Login / cookiesNone. No DHgate account needed
ExportJSON, CSV, Excel, XML, HTML table, RSS; API; integrations (Make, Zapier, n8n, Google Sheets, Airtable, webhooks, MCP)
DuplicatesEvery product is saved once per run (de-duplicated by item code across all searches, bands and stores)
CurrencyUS dollars, pinned by the Actor so rows are comparable whatever country the run starts from
PricingPay per result: from $1.20 per 1,000 products on the free plan, down to $0.80 per 1,000 on higher Apify plans

What you get

Each dataset row is one DHgate product listing. The columns fall into seven groups; the full list with types, meanings and measured fill rates is in the data dictionary.

Product identity. itemCode (DHgate's item number, the stable key), url, title, productId, image (full-size), categoryId and — with the product page — images (the gallery), categoryName and categoryPath (Sports & Outdoors > Fitness Supplies > Yoga > Yoga Outfit).

Price and order terms. price as DHgate writes it (US $60.65 - 114.94), priceMin / priceMax, regularPriceMin / regularPriceMax before the seller's promotion, discountPercent, promotionEndsAt, currency (always USD), unit, minOrderQuantity, coupons and — with the product page — priceTiers, the volume price ladder: for example 1–9 pieces at $14.89, 10–33 at $14.14, 34–99 at $13.50, 100–999 at $11.37 and 1,000+ at $7.11, each with the regular and the promotion price.

Sales and reviews. soldCount / soldText (34 sold, 2.1K+ sold), rating, reviewCount and — with the product page — ratingCounts (reviews per star), autoReviewCount, reviewHighlights, DHgate's AI reviewSummary and the newest 0–20 reviews with text, date, country, options bought and the buyer name exactly as DHgate masks it.

Shipping. shipToCountry, freeShipping, fastDeliveryDays (the X Days Delivery promise) and — with the product page — shippingCost to your country for the minimum order, shippingMethod, deliveryDaysMin / deliveryDaysMax, shipsFrom, shipsFromOptions, deliverable.

Product details. options, specifications, packageSizeCm, packageWeightKg, lastUpdated, the flags customizable, hasVideo, sponsored, and optionally description, descriptionHtml, descriptionImages.

Seller. sellerName, sellerStoreId, sellerId, sellerUrl, sellerPositiveFeedback, sellerLevel (LV0 … LV5), sellerYears and — with the product page — sellerCompany (the registered company, often in Chinese: 深圳市泰尔晟贸易有限公司), sellerCountry, sellerOrders, sellerProductCount, sellerReviewCount, sellerSince, sellerOnTimeDeliveryRate, sellerEmployees, sellerMainCategories, sellerKeyAccount.

Run context. hasDetails, searchTerm (what found the product) and scrapedAt.

Who uses it

1. Dropshippers and small online shops. Search the product idea, switch on Free shipping only and Single piece orders only, sort the export by soldCount and rating, and shortlist the listings whose priceMin, shippingCost and deliveryDaysMax leave a margin before importing titles and full-size pictures into your shop.

2. Amazon FBA and private-label sellers. Read the priceTiers ladder at 100 and 1,000 units, compare minOrderQuantity and sellerPositiveFeedback across forty suppliers of one product, and take the median as the reference price in your first negotiation.

3. Sourcing agents and buying offices. Turn a client's keywords into a supplier list in minutes: one row per product with sellerName, sellerCompany, sellerCountry, sellerOrders, sellerYears, sellerLevel and the store link.

4. Price-comparison and deal sites. Pull priceMin, regularPriceMin, discountPercent and promotionEndsAt for a category every day and publish the products whose promotion just started.

5. Market researchers and category analysts. The run SUMMARY states how many products DHgate reports for each search, and the dataset gives the price distribution, the share of free-shipping and customizable listings and the seller-level mix of a niche.

6. Competitor and brand monitoring. Search your brand, model names or a competitor's store (storeIds), keep itemCode, url, sellerName and scrapedAt as evidence and watch new listings appear.

7. Marketplace and catalogue builders. Seed a taxonomy with DHgate's categoryId / categoryName / categoryPath and representative titles, attributes (specifications) and options.

8. Procurement and purchasing managers. Benchmark what a part costs at your volume, check shippingCost and deliveryDaysMin–deliveryDaysMax to your country, and compare US-warehouse offers (US warehouse only) with China-shipped ones.

9. Data scientists. Train price-prediction, title-classification or demand models on tens of thousands of labelled listings: titles, categories, MOQ, tier prices, sold counts, ratings and seller features are clean typed columns.

10. Review and quality analysts. With the product page and Reviews per product = 20, export the newest reviews with country and purchased options, the star split and the share of automatic reviews to judge which listings are trustworthy.

11. Seller-side competitive intelligence. If you sell on DHgate, run your keywords weekly, count how many listings belong to your own sellerStoreId and compare your priceTiers, discountPercent and fastDeliveryDays with the competitors that sell the same thing.

12. Cross-border e-commerce teams in China (跨境电商卖家). Track how same-category listings are priced and promoted, which sellers reach LV3 and above, and which products carry the X Days Delivery badge.

13. AI-agent builders. Give an assistant the Actor as a tool ("find 200 customizable tote bags under $3 with free shipping to Germany") and let it reason over typed rows.

Cookbook: ready-made inputs

Every recipe below was run on the Apify platform on 25 October 2026 (the quick checks with a smaller Max products) and returned the rows its description promises. Paste the JSON into the JSON tab of the input form, or send it as the body of an API call.

Recipe 1 — Quick sample of a keyword

{ "searchTerms": ["wireless earbuds"], "maxItems": 20 }

Twenty products in about three seconds — the same input Apify's daily check runs.

Recipe 2 — 1,000 products for one keyword

{ "searchTerms": ["yoga pants"], "maxItems": 1000 }

Recipe 3 — A whole niche, tens of thousands of products

{ "searchTerms": ["led lights", "phone case"], "maxItems": 15000, "deepSearch": true }

Deep search walks each keyword in price bands past DHgate's 4,040-result window. This is the shape of the proof run in How much data and how fast.

Recipe 4 — Many keywords, evenly

{ "searchTerms": ["yoga pants", "sports bra", "leggings"], "maxItemsPerSearch": 100, "maxItems": 300 }

Recipe 5 — Full wholesale detail: price tiers, shipping and seller company

{ "searchTerms": ["wireless earbuds"], "includeDetails": true, "maxItems": 200 }

Every product also gets its own page read: priceTiers, shippingCost, deliveryDaysMin/Max, sellerCompany, specifications, options, reviews. Expect roughly four products a second.

Recipe 6 — Browse a category by ID

{ "categoryIds": ["117003002"], "maxItems": 500 }

117003002 is LED Strips; every row carries its categoryId. IDs are in the categoryId column and in category URLs (…/c117003002.html).

Recipe 7 — Every product of one store

{ "storeIds": ["22318278"], "maxItems": 5000 }

The number is the one in the store URL (www.dhgate.com/store/22318278); the 32-character sellerId works too.

Recipe 8 — Paste a DHgate search URL with its filters

{ "startUrls": ["https://www.dhgate.com/wholesale/search.do?searchkey=yoga+pants&freeshipping=1"], "maxItems": 500 }

Search, category (…/c117003002.html), store and product URLs are all understood; DHgate's own filter parameters in a search URL are kept.

Recipe 9 — Read specific products

{ "itemCodes": ["1114143067", "1114811530"], "maxItems": 50 }

Item codes (or product URLs in startUrls) are always read from their product pages, so these rows carry the full detail columns. Ideal for a daily price watch on a fixed list.

Recipe 10 — A price window

{ "searchTerms": ["led strip lights"], "minPrice": 5, "maxPrice": 10, "maxItems": 500 }

Prices are per piece in US dollars; the range is sent to DHgate and checked again on every product.

Recipe 11 — Low minimum order with free shipping

{ "searchTerms": ["phone case"], "singlePieceOnly": true, "freeShippingOnly": true, "maxItems": 500 }

Recipe 12 — Products on sale right now

{ "searchTerms": ["sneakers"], "onSaleOnly": true, "maxItems": 500 }

Recipe 13 — Customizable products

{ "searchTerms": ["tote bag"], "customizableOnly": true, "maxItems": 500 }

Recipe 14 — US-warehouse stock with real shipping costs

{ "searchTerms": ["laptop stand"], "usWarehouseOnly": true, "includeDetails": true, "maxItems": 100 }

In the test every returned product shipped from the United States.

Recipe 15 — Shipping to another country

{ "searchTerms": ["wireless earbuds"], "shipToCountry": "GB", "includeDetails": true, "maxItems": 30 }

shippingCost, delivery days and availability are calculated for the United Kingdom (DHgate writes it UK, so shipToCountry in the rows reads UK). Products the seller does not deliver there have deliverable: false and empty shipping columns.

Recipe 16 — Best sellers of a keyword

{ "searchTerms": ["phone case"], "sortBy": "bestselling", "maxItems": 500 }

DHgate's recently sold order; it reaches about 3,000 results per search.

Recipe 17 — Descriptions and description pictures

{ "itemCodes": ["898929515"], "includeDescription": true }

Adds description (text), descriptionHtml and descriptionImages. Many sellers use pictures only, then description is empty and the pictures are in descriptionImages.

How to run it in Apify Console

  1. Open the Actor and press Try for free (an Apify account is free to create; no DHgate account is needed).
  2. In Search terms, type one keyword per line exactly as you would in the DHgate search box — for example wireless earbuds. Or paste DHgate URLs, category IDs, store IDs or item codes in the fields below.
  3. Set Max products (total). Leave the default 1,000 for a first real run, or 20 for a quick look.
  4. Optional: open Filters to set a price window, a maximum MOQ, single piece, free shipping, on sale, customizable or US warehouse.
  5. Optional: under Output, choose the Ship-to country and switch Read the product page of every product on for price tiers, shipping cost and the seller's company.
  6. Press Start. Products appear in the Output tab within seconds; the status line shows how many were saved and how many result pages were read.
  7. When the run finishes, open Export and download CSV, Excel, JSON, XML or HTML — or switch the table view between Products, Prices & MOQ, Shipping and Sellers.
  8. To repeat it, save the input as a Task, add a Schedule (daily, weekly) and an integration or webhook so new results land where you work.

The run's key-value store holds a SUMMARY record with the outcome, the number of products DHgate reports for each search, pages read, duplicates skipped, the network routes used and the reason each search stopped.

How to run it through the API

Every Apify Actor is an API. The simplest call starts a run, waits for it and returns the products in one response (keep it to small runs — the call waits for up to five minutes):

curl -X POST "https://api.apify.com/v2/acts/logiover~dhgate-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN&format=json" \
-H "Content-Type: application/json" \
-d '{"searchTerms":["wireless earbuds"],"maxItems":200}'

For bigger runs, start the run asynchronously and fetch the dataset when it has finished — the official clients do the waiting for you.

Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('logiover/dhgate-scraper').call({
searchTerms: ['led strip lights'],
includeDetails: true,
shipToCountry: 'DE',
maxItems: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].title, items[0].priceTiers, items[0].shippingCost);

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("logiover/dhgate-scraper").call(run_input={
"searchTerms": ["yoga pants", "leggings"],
"freeShippingOnly": True,
"maxItemsPerSearch": 1000,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["itemCode"], item["priceMin"], item["minOrderQuantity"], item["sellerName"])

The dataset can also be downloaded directly as a file: https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv (or xlsx, json, xml, html). Add &fields=itemCode,title,priceMin,priceMax,minOrderQuantity,sellerName to export only the columns you need, or &omit=images,reviews to drop the long ones.

Input reference

Field (API name)TypeDefaultWhat it does
Search terms (searchTerms)array[]Keywords as typed into the DHgate search box; each is one search.
DHgate URLs (startUrls)array[]Search, category, store or product URLs; filter parameters in a search URL are kept.
Category IDs (categoryIds)array[]Category IDs such as 117003002 (LED Strips) or 117 (Lights & Lighting). Alone = browse; with search terms = narrow the searches.
Store IDs (storeIds)array[]Every product of a store: the number in the store URL or the 32-character sellerId.
Item codes (itemCodes)array[]Single products by item number; always read from their product pages.
Max products (total) (maxItems)integer1000Limit for the whole run; 0 = no limit. Prefill: 20.
Max products per search (maxItemsPerSearch)integer0Optional limit per search term / URL / category / store; 0 = none.
Deep search (deepSearch)booleantrueContinue big searches in US-dollar price bands after DHgate's 4,040-result window.
Sort (sortBy)string (select)"relevance"relevance, bestselling, price_asc, price_desc. Deep search always continues in price order.
Min price (USD) (minPrice)number—Lowest price per piece; sent to DHgate and checked again on every product.
Max price (USD) (maxPrice)number—Highest price per piece (same rules).
Max minimum order (MOQ) (maxMinimumOrder)integer—Only products whose MOQ is at most this many units.
Single piece orders only (singlePieceOnly)booleanfalseOnly products with a minimum order of 1.
Free shipping only (freeShippingOnly)booleanfalseOnly products with free shipping to the ship-to country.
On sale only (onSaleOnly)booleanfalseOnly products with a running seller promotion.
Customizable only (customizableOnly)booleanfalseOnly products the seller will customize.
US warehouse only (usWarehouseOnly)booleanfalseOnly products stocked in a US warehouse.
Ship-to country (shipToCountry)string"US"Two-letter code the shipping cost, delivery time and availability are calculated for (US, GB, DE, FR, AU, CA, BR, IN …).
Read the product page of every product (includeDetails)booleanfalseAdds price tiers, shipping, seller company, options, specifications, gallery, reviews. One extra page per product.
Include full description (includeDescription)booleanfalseAdds the description as text, HTML and image URLs. Product-page option.
Reviews per product (maxReviews)integer5Newest reviews stored per product (0–20).
Parallel requests (concurrency)integer12Product pages read at the same time (1–30). Lower it if DHgate starts refusing requests.
Proxy (proxyConfiguration)object{"useApifyProxy": true}Leave as is: direct connection first, Apify datacenter proxies when DHgate refuses, a few residential US requests as a last resort.

Data dictionary

Column order is the order below. Fill rate = share of rows where the column holds a value (booleans count when true or false), measured on 25 October 2026 as cards / page: search-card rows on the 15,000-row proof run, product-page rows on a 1,000-row run with Read the product page on; the three description columns on a 100-product run with Include full description. A dash means the column does not exist in that mode: a default run has 37 columns, a run with product pages 72, with descriptions 75. Rows read by item code leave out the six search-card-only columns (minOrderText, coupons, customizable, hasVideo, sponsored, fastDeliveryDays). Empty means the value is null — nothing is invented.

Product

ColumnTypeFill: cards / pageMeaningExample
itemCodestring100 % / 100 %DHgate item number — the number at the end of the product URL. Stable; every product is saved once per run."1114811456"
urlstring100 % / 100 %Product page on www.dhgate.com (https, no tracking parameters)."https://www.dhgate.com…"
titlestring100 % / 100 %Product title as the seller wrote it (plain text, HTML entities decoded)."16W Twinkle DC 12V Fib…"
productIdstring100 % / 100 %DHgate internal product ID (32 characters); used by DHgate's own review and order endpoints."8aaae1bd9f279651019f58…"
imagestring100 % / 100 %Main product image at full size."https://img4.dhresourc…"
imagesarray— / 100 %Full product gallery at full size (product page only).["https://img4.dhres…", …]

Category

ColumnTypeFill: cards / pageMeaningExample
categoryIdstring100 % / 100 %DHgate category the product is filed under (leaf category). Use it in the Category IDs input."117003002"
categoryNamestring— / 100 %Name of that leaf category (product page only)."Portable Speakers"
categoryPathstring— / 100 %Breadcrumb from the top-level category down to the leaf, separated by " > " (product page only)."Electronics > Speakers…"

Price & order

ColumnTypeFill: cards / pageMeaningExample
pricestring100 % / 100 %Unit price or range in US dollars, promotion included, as DHgate writes it; with the product page it spans the whole price ladder."US $23.72 - 44.95"
priceMinnumber100 % / 100 %Lowest unit price, promotion included (USD). With the product page: the cheapest ladder tier; on search cards: the lowest price the card shows.23.72
priceMaxnumber100 % / 100 %Highest unit price, promotion included (equals priceMin for a single price); with the product page the entry tier.44.95
regularPriceMinnumber100 % / 100 %Lowest unit price before the seller's promotion (equals priceMin when there is no promotion).23.72
regularPriceMaxnumber100 % / 100 %Highest unit price before the seller's promotion.44.95
currencystring100 % / 100 %ISO code of every price in the row. Always USD — the Actor pins DHgate's currency so rows are comparable."USD"
discountPercentnumber67.5 % / 80.1 %Percent off while a seller promotion runs; null when there is none.61
promotionEndsAtstring67.5 % / 80.1 %End of the running promotion (ISO 8601; the search card carries DHgate's local time, the product page UTC)."2026-10-31T15:59:00.000Z"
unitstring100 % / 100 %What one price unit is: Piece, Pair, Set, Meter …"Piece"
lotSizenumber— / 100 %Units DHgate sells as one lot (1 for almost every product). Prices in this Actor are always per unit.1
minOrderQuantitynumber100 % / 100 %Minimum order quantity (MOQ) in units.1
minOrderTextstring100 % / 100 %MOQ exactly as the search card writes it (search results only)."1 Piece"
maxOrderQuantitynumber— / 100 %Largest quantity DHgate accepts in one order (product page only).100000
priceTiersarray— / 100 %Volume pricing from the product page: [{minQuantity, maxQuantity (null = and more), price, promoPrice (null when no promotion)}], per unit in USD.[{"minQuantity": 1, "maxQuantity": 2, …}, …]
couponsarray29.5 % / 55.3 %Seller coupons and spend-and-save offers shown on the search card, e.g. "$2 off $40+", "Per $100 Save $5".["$1 off $100+"]
inStockboolean— / 100 %False when the listing is marked sold out or offline by the seller (product page only).true

Sales & reviews

ColumnTypeFill: cards / pageMeaningExample
soldCountnumber15.8 % / 30 %The sold figure DHgate prints next to the rating ("34 sold", "2.1K+ sold"); rounded when DHgate rounds. No time window is stated.34
soldTextstring15.8 % / 30 %The sold figure exactly as shown."34"
ratingnumber13.4 % / 23.9 %Average product rating, 1-5. Null while the product has no reviews.5
reviewCountnumber13.4 % / 100 %Number of product reviews, as DHgate counts them (includes automatic 5-star reviews).33
autoReviewCountnumber— / 23.9 %How many reviews DHgate generated itself (default 5-star ratings when the buyer wrote none). Product page only.0
ratingCountsobject— / 23.9 %Reviews per star rating: {"5":n,"4":n,"3":n,"2":n,"1":n}. Product page only.{"1": 0, "2": 0, "3": 0, "…
reviewHighlightsarray— / 1.9 %Most mentioned review phrases with counts: [{text, count}]. Product page only.[{"text": "good bag …", "count": 2, …}, …]
reviewSummarystring— / 3.5 %DHgate's AI summary of the reviews, when the product has one."It's a great product! …"
reviewsarray— / 23.9 %Newest reviews (up to Reviews per product): [{rating, text, date, buyer, country, purchased, autoReview}]. Buyer names are masked by DHgate.[{"rating": 5, "text": "Omg this …", …}, …]

Product details

ColumnTypeFill: cards / pageMeaningExample
optionsarray— / 97.5 %Selectable options of the product (colour, size, style, shipping-from …): [{name, values[]}] (product page only).[{"name": "Options", "values": ["Black", …, …}, …]
specificationsarray— / 100 %Item attributes the seller filled in: [{name, value}] (product page only).[{"name": "Communica…", "value": "Bluetooth…", …}, …]
packageSizeCmstring— / 100 %Package length x width x height in centimetres, for one lot (product page only)."55x55x55"
packageWeightKgnumber— / 100 %Gross weight of one lot in kilograms (product page only).1
lastUpdatedstring— / 100 %Date the seller last edited the listing (product page only)."2026-09-29"
customizableboolean94 % / 96.4 %The seller offers customization (logo, packaging …). Search results only.false
hasVideoboolean100 % / 100 %The listing has a short product video. Search results only.false
sponsoredboolean100 % / 100 %True for paid placements DHgate mixes into the first result page (AD badge). They are real products. Search results only.true

Shipping

ColumnTypeFill: cards / pageMeaningExample
shipToCountrystring100 % / 100 %Destination the shipping figures are for (ISO code, DHgate writes the UK as UK)."US"
shippingCostnumber— / 99.9 %Shipping cost to the ship-to country for the minimum order quantity. 0 with freeShipping=true. Null when the seller does not deliver there.0
freeShippingboolean100 % / 99.9 %Free shipping to the ship-to country (product page), or the card's badge on search-only rows; empty where the seller does not deliver.false
shippingMethodstring— / 99.9 %Carrier / service the seller uses for the default delivery option (product page only)."Seller-Defined STD Log…"
deliveryDaysMinnumber— / 99.9 %Shortest estimated delivery time to the ship-to country, in days (product page only).10
deliveryDaysMaxnumber— / 99.9 %Longest estimated delivery time, in days (product page only).20
fastDeliveryDaysnumber9.5 % / 19 %"X Days Delivery" badge on the search card: the delivery time the seller promises. Only some products carry it.15
shipsFromstring— / 99.9 %Warehouse country of the default delivery option."China"
shipsFromOptionsarray— / 17.1 %Warehouse countries the buyer can choose between when the product offers several (China, Germany, United States …).["China"]
deliverableboolean— / 100 %False when the seller does not deliver to the ship-to country (product page only).true

Seller

ColumnTypeFill: cards / pageMeaningExample
sellerIdstring100 % / 100 %DHgate seller ID (32 characters). Use it in the Store IDs input."8aaa106e9d85abac019e01…"
sellerStoreIdstring99.9 % / 100 %Numeric store ID — the number in the store URL."22318278"
sellerNamestring99.9 % / 100 %Store name (DHgate's "seller name")."royallight"
sellerUrlstring99.9 % / 100 %Store page on www.dhgate.com."https://www.dhgate.com…"
sellerCompanystring— / 100 %Registered company name of the seller when DHgate shows it (often in Chinese). Product page only."香港航瑞科技有限公司"
sellerCountrystring— / 100 %Country the seller is located in, as the store header shows it. Product page only."China"
sellerPositiveFeedbacknumber96.3 % / 96 %Share of positive feedback of the seller, in percent.100
sellerOrdersnumber— / 99.7 %Confirmed orders of the seller ("10232 Orders" in the store header). Product page only.320
sellerProductCountnumber— / 100 %Number of products the seller lists. Product page only.152
sellerReviewCountnumber— / 96.3 %Number of buyer reviews of the seller's store. Product page only.429
sellerYearsnumber23.5 % / 100 %The seller's years-on-DHgate badge as the site shows it ("1st Year", "9th Year").10
sellerSincestring— / 100 %Registration date of the store (product page only, when DHgate shows it)."2026-06-23"
sellerLevelstring99.2 % / 100 %DHgate store level badge, LV0 … LV5 (L0-L2, L3-L4, L5+ on the site)."LV0"
sellerOnTimeDeliveryRatenumber— / 39.1 %Share of orders the seller delivered on time, in percent, when DHgate shows it. Product page only.93
sellerEmployeesstring— / 99.7 %Staff size the seller states ("5 - 10 People"). Product page only."51 - 100 People"
sellerMainCategoriesarray— / 100 %Main product categories of the seller. Product page only.["Cell Phones & Acce…", …]
sellerKeyAccountboolean— / 100 %DHgate flags large sellers with the key-account (VIP) badge. Product page only.false

Description

ColumnTypeFill: cards / pageMeaningExample
descriptionstring— / 93 %Full product description as plain text with line breaks. Only with "Include full description"."Company Information\nTr…"
descriptionHtmlstring— / 100 %The seller's description HTML (DHgate's own page-template fragment removed). Only with "Include full description"."<div style=\"background…"
descriptionImagesarray— / 93 %Image URLs inside the description. Only with "Include full description".["https://www.dhreso…", …]

Run

ColumnTypeFill: cards / pageMeaningExample
hasDetailsboolean— / 100 %True when the product page was read for this row; false for rows built from the search card alone.true
searchTermstring100 % / 100 %The search term, category, store or URL that found the product; "item code" for products read by item number."led lights"
scrapedAtstring100 % / 100 %When the row was collected (ISO 8601, UTC)."2026-10-25T12:40:39.530Z"

Real output sample

Two rows from platform runs of 25 October 2026, unmasked, exactly as stored (JSON view; CSV and Excel flatten arrays and objects into JSON text).

Search-card row — bluetooth speaker, with a running promotion, seller coupon, rating and sold count (run qGDVaPjqiwZFzEase):

{
"itemCode": "1112779134",
"url": "https://www.dhgate.com/product/uk-warehouse-charger-6-portable-speakers/1112779134.html",
"title": "UK warehouse Charger 6 Portable Speakers Wireless Bluetooth Speaker Water Dance Bass Music player Kaleidoscope Audio186g",
"productId": "8aaa0d8a9eee7d82019f1670ccb04b0b",
"image": "https://img4.dhresource.com/0x0/f3/albu/bw/y/30/549d39fb-10e7-44fc-ba79-cae99ad68939.jpg",
"categoryId": "103002008",
"price": "US $42.34 - 53.49",
"priceMin": 42.34,
"priceMax": 53.49,
"regularPriceMin": 47.04,
"regularPriceMax": 59.43,
"currency": "USD",
"discountPercent": 10,
"promotionEndsAt": "2026-10-31T15:59:00.000Z",
"unit": "Piece",
"minOrderQuantity": 1,
"minOrderText": "1 Piece",
"coupons": [
"$2 off $50+"
],
"soldCount": 42,
"soldText": "42",
"rating": 5,
"reviewCount": 10,
"customizable": false,
"hasVideo": false,
"sponsored": true,
"shipToCountry": "US",
"freeShipping": true,
"fastDeliveryDays": null,
"sellerId": "8aaa86d69eeeadcd019eeeb155780009",
"sellerStoreId": "22327059",
"sellerName": "hangruitech",
"sellerUrl": "https://www.dhgate.com/store/22327059",
"sellerPositiveFeedback": 99.3,
"sellerYears": null,
"sellerLevel": "LV4",
"searchTerm": "bluetooth speaker",
"scrapedAt": "2026-10-25T12:41:08.157Z"
}

Product-page row — bluetooth speaker with Read the product page of every product (run 0GViZaeG1IrYUW6hE):

{
"itemCode": "1098016656",
"url": "https://www.dhgate.com/product/grip-portable-speaker-cross-border-grip-new/1098016656.html",
"title": "grip portable speaker crossborder grip new outdoor cycling portable subwoofer bluetooth speaker",
"productId": "8aaa01fa9cf55645019cffd06db528ee",
"image": "https://www.dhresource.com/0x0//f3/albu/bw/l/18/a628acab-6768-41ac-b5ab-302322d8f6e1.jpg",
"images": [
"https://www.dhresource.com/0x0//f3/albu/bw/l/18/a628acab-6768-41ac-b5ab-302322d8f6e1.jpg",
"https://img4.dhresource.com/0x0/f3/albu/bw/l/18/4b849fd3-056d-438f-bbc9-b92d1fcead0e.jpg",
"https://img4.dhresource.com/0x0/f3/albu/bw/l/18/1de053d7-8460-47d8-80b9-514c3803977a.jpg",
"https://www.dhresource.com/0x0//f3/albu/bw/l/18/8f1a8a1b-34a6-4576-8081-4f8d9935e2c0.jpg",
"https://www.dhresource.com/0x0//f3/albu/bw/l/18/15c56349-54eb-4fbf-82e7-b1fbd5f2dcb4.jpg"
],
"categoryId": "103002008",
"categoryName": "Portable Speakers",
"categoryPath": "Electronics > Speakers > Portable Speakers",
"price": "US $23.30 - 26.49",
"priceMin": 23.3,
"priceMax": 26.49,
"regularPriceMin": 80.35,
"regularPriceMax": 91.36,
"currency": "USD",
"discountPercent": 71,
"promotionEndsAt": "2026-10-31T15:59:00.000Z",
"unit": "Piece",
"lotSize": 1,
"minOrderQuantity": 1,
"minOrderText": "1 Piece",
"maxOrderQuantity": 100000,
"priceTiers": [
{
"minQuantity": 1,
"maxQuantity": 3,
"price": 91.36,
"promoPrice": 26.49
},
{
"minQuantity": 4,
"maxQuantity": 12,
"price": 83.28,
"promoPrice": 24.15
},
{
"minQuantity": 13,
"maxQuantity": null,
"price": 80.35,
"promoPrice": 23.3
}
],
"coupons": null,
"inStock": true,
"soldCount": 32,
"soldText": "32",
"rating": 5,
"reviewCount": 8,
"autoReviewCount": 0,
"ratingCounts": {
"1": 0,
"2": 0,
"3": 0,
"4": 0,
"5": 8
},
"reviewHighlights": null,
"reviewSummary": null,
"reviews": [
{
"rating": 5,
"text": "Very satisfied",
"date": "2026-04-24",
"buyer": "0nek****bes5",
"country": "United States",
"purchased": "Options: blue, Shipping from: China",
"autoReview": false
},
{
"rating": 5,
"text": "Stable performance, works great",
"date": "2026-04-24",
"buyer": "wuu8****vl0z",
"country": "United States",
"purchased": "Options: blue, Shipping from: China",
"autoReview": false
},
{
"rating": 5,
"text": "I love this item, worth every penny",
"date": "2026-04-24",
"buyer": "wf7e7r****z8ciw",
"country": "United States",
"purchased": "Options: purple, Shipping from: China",
"autoReview": false
},
{
"rating": 5,
"text": "Super practical, daily use is very convenient",
"date": "2026-04-24",
"buyer": "bn1k****dpt",
"country": "United States",
"purchased": "Shipping from: China, Options: Black",
"autoReview": false
},
{
"rating": 5,
"text": "Very satisfied",
"date": "2026-04-24",
"buyer": "3jp***skn",
"country": "United States",
"purchased": "Options: purple, Shipping from: China",
"autoReview": false
}
],
"options": [
{
"name": "Options",
"values": [
"Black",
"Red",
"blue",
"purple",
"camo"
]
},
{
"name": "Shipping from",
"values": [
"China"
]
}
],
"specifications": [
{
"name": "Communication",
"value": "Bluetooth"
},
{
"name": "Feature",
"value": "Wireless Portable Bluetooth Mini"
},
{
"name": "Cabinet Material",
"value": "Plastic Metal"
},
{
"name": "Crossover Type Of The Main Speaker",
"value": "Full-Range"
}
],
"packageSizeCm": "10x10x10",
"packageWeightKg": 0.348,
"lastUpdated": "2026-10-24",
"customizable": false,
"hasVideo": false,
"sponsored": false,
"shipToCountry": "US",
"shippingCost": 0,
"freeShipping": true,
"shippingMethod": "Seller-Defined STD Logitstics",
"deliveryDaysMin": 10,
"deliveryDaysMax": 20,
"fastDeliveryDays": null,
"shipsFrom": "China",
"shipsFromOptions": [
"China"
],
"deliverable": true,
"sellerId": "2c9362ec7a5aab37017ace8d29e34efc",
"sellerStoreId": "21704141",
"sellerName": "nishoes52seller",
"sellerUrl": "https://www.dhgate.com/store/21704141",
"sellerCompany": "瑞缇纳有限公司",
"sellerCountry": "China",
"sellerPositiveFeedback": 97.8,
"sellerOrders": 3151,
"sellerProductCount": 71,
"sellerReviewCount": 7845,
"sellerYears": 1,
"sellerSince": "2021-08-30",
"sellerLevel": "LV5-1",
"sellerOnTimeDeliveryRate": 91,
"sellerEmployees": "11 - 50 People",
"sellerMainCategories": [
"Cell Phones & Accessories",
"Cameras & Photo",
"Games & Accessories",
"Computers & Networking",
"Electronics"
],
"sellerKeyAccount": false,
"hasDetails": true,
"searchTerm": "bluetooth speaker",
"scrapedAt": "2026-10-25T12:50:00.813Z"
}

CSV columns of a default run (37):

itemCode, url, title, productId, image, categoryId, price, priceMin, priceMax, regularPriceMin, regularPriceMax, currency, discountPercent, promotionEndsAt, unit, minOrderQuantity, minOrderText, coupons, soldCount, soldText, rating, reviewCount, customizable, hasVideo, sponsored, shipToCountry, freeShipping, fastDeliveryDays, sellerId, sellerStoreId, sellerName, sellerUrl, sellerPositiveFeedback, sellerYears, sellerLevel, searchTerm, scrapedAt

Added with the product page (35; 72 columns in all, plus description, descriptionHtml, descriptionImages with the description option):

images, categoryName, categoryPath, lotSize, maxOrderQuantity, priceTiers, inStock, autoReviewCount, ratingCounts, reviewHighlights, reviewSummary, reviews, options, specifications, packageSizeCm, packageWeightKg, lastUpdated, shippingCost, shippingMethod, deliveryDaysMin, deliveryDaysMax, shipsFrom, shipsFromOptions, deliverable, sellerCompany, sellerCountry, sellerOrders, sellerProductCount, sellerReviewCount, sellerSince, sellerOnTimeDeliveryRate, sellerEmployees, sellerMainCategories, sellerKeyAccount, hasDetails

How much data and how fast

All numbers below were measured on the Apify platform on 25 October 2026 (UTC) with the default memory (1,024 MB) and default settings unless noted.

RunProducts savedDuplicatesDurationPages read
Prefill: wireless earbuds, max 202003.0–3.2 s (first products after ~1 s)1 result page
yoga pants, max 1,0001,00009.9 s24 result pages
bluetooth speaker, max 1,0001,00009.8 s25 result pages
led lights + phone case, max 12,000, deep search12,000095.0 s356 result pages
led lights + phone case + yoga pants, max 15,000, deep search15,0000115.0 s436 result pages
bluetooth speaker, max 1,000, product pages read1,0000249 s25 result + 1,000 product pages
100 item codes with descriptions100084.4 s100 product pages

In the 15,000-product run led lights (DHgate reported 202,493 matches) gave 7,221 unique products from 11 price bands and phone case (67,766 matches) gave 7,779; the limit was reached before the third keyword started. On an earlier build (1.0.1) led lights alone gave 10,176 unique products in 55 s. Peak memory was 122 MB. The 12,000 and 15,000 runs were measured on builds 1.0.3 and 1.0.6; later builds changed only option paths named in the changelog, not how a plain search is read.

Why 4,040 per search window. DHgate reports large totals but shows at most 101 pages of 40 products for one search. With one consistent session per search a price-sorted window gave 4,040 unique products, a best-match window about 3,270 and a best-selling window about 2,970, after which DHgate repeats a fallback page. The Actor stops a window when pages stop bringing new products.

How deep search goes further. When you ask for more than about 2,500 products from one search, the Actor repeats it in US-dollar price bands (0–0.5, 0.5–1, 1–2, 2–3, 3–5, 5–8, 8–12, 12–20, 20–35, 35–60, 60–100, 100–200, 200–500, 500–1,500, 1,500–5,000 and 5,000+), three bands at a time, each a price-sorted search of its own; a band that still fills a window is cut in two. Products are de-duplicated across bands, searches and stores, and the work stops as soon as Max products is reached. Your own price filter is respected: bands are cut to the window you set.

What makes it fast. A search page returns 40 products with price, MOQ, sales, rating, shipping badge and seller, so 1,000 products need 25 requests, and up to eight pages are read in parallel. The product page is a separate request per product; DHgate rate-limits those, so the Actor paces itself and reads about four products a second with product pages on.

Network routes. Direct connection first, Apify datacenter proxies when DHgate refuses requests, a small capped number of residential US requests as a last resort. In the 100-item-code test 29 of 130 requests were refused; the Actor switched route and still read all 100 pages. SUMMARY shows requests, refusals and routes of every run.

Ranking consistency. Without a session DHgate shuffles best-match order on every request. Each search is read with one consistent session, which keeps its pages from overlapping; the order can still differ from your browser.

What you pay

This Actor is priced per result: you pay only for products saved to your dataset, nothing for pages, retries, proxies or compute.

ProductsFree Apify plan ($1.20 / 1,000)Higher Apify plans (down to $0.80 / 1,000)
1,000$1.20from $0.80
10,000$12.00from $8.00
100,000$120.00from $80.00

The per-1,000 price steps down with your Apify plan: $1.20 on the free plan, about $1.07 and $0.93 on the next two discount tiers and $0.80 on the highest tiers. The exact price for your account is shown on the Actor's pricing tab before you start.

Maximum cost per run. Apify lets you set a Max cost per run (in the run options, or maxTotalChargeUsd in the API). The Actor reads that limit before writing, saves exactly as many products as the limit covers, writes its SUMMARY and finishes as Succeeded with the message "PARTIAL — stopped at the run's maximum cost per run with N product(s) saved. Raise "Max cost per run" to collect more." It does not keep reading pages it could not save. Example: with a $5 limit on the free plan the run stops at 4,166 products. For large exports set both Max products and a cost limit you are comfortable with.

Integrations

  • Google Sheets. Use Apify's Google Sheets integration (or the dataset's CSV URL with IMPORTDATA) to send each run's products to a sheet — one tab per keyword works well with Max products per search.
  • Make, Zapier and n8n. All three have Apify modules: trigger "Actor run finished", then map title, priceMin, minOrderQuantity, sellerName and url into your CRM, a spreadsheet, Slack or email.
  • Airtable. Send rows into an Airtable base and link products to sellers by sellerStoreId for a lightweight sourcing database.
  • Webhooks. Add a webhook on run succeeded to call your own endpoint with the dataset ID, then pull the items through the API.
  • Schedules. Save the input as a task and schedule it daily or weekly for price monitoring or a fresh seller list; join runs on itemCode. For a fixed watch list use itemCodes with Reviews per product = 0.
  • AI agents and MCP. Apify's MCP server exposes Actors as tools, so an AI assistant can run DHgate Scraper with a JSON input ("find 200 customizable tote bags under $3 with free shipping") and reason over the returned rows.
  • Data warehouses. Load the JSON or CSV export into BigQuery, Snowflake, Postgres or a data lake; itemCode is the primary key and sellerStoreId the seller key. Fetching the dataset with format=json&clean=1 gives one object per product ready for bulk loading.
  • Python and Node.js. See How to run it through the API for client code.

Performance tips

  • Ask for what you need. Runs stop as soon as Max products is reached; the prefill of 20 finishes in about three seconds.
  • Leave the product page off for lists. Search cards already carry price, MOQ, sales, rating, free shipping and the seller. Switch Read the product page on only when you need tiers, shipping cost, the seller's company or specifications — it is about 25 times slower per product.
  • Use two steps for big detail jobs. Run a card-only search for 10,000 products, filter in your sheet, then feed the itemCodes you care about back through itemCodes for the full detail.
  • Spread budgets across keywords with Max products per search, otherwise the first keyword may take most of a total limit.
  • Use DHgate's filters instead of filtering afterwards. Price, MOQ, free shipping, on sale, customizable and US warehouse are applied by DHgate and checked again by the Actor, so you pay only for products you want.
  • Several specific keywords (led strip 12v, cob led strip) give precise niches; deep search on one broad keyword gives the widest coverage.
  • Pick the ship-to country first — shipping cost and delivery days are for one country per run.
  • Keep the default proxy setting; lower Parallel requests only if product pages keep failing.

Troubleshooting and status messages

The run's status line always says what happened, and the SUMMARY record in the key-value store has the details per search.

Status message (start)Run statusWhat it means and what to do
COMPLETED — N product(s) from S search(es) (limit of N reached) · P result page(s)SucceededEverything requested was collected. Without "(limit of N reached)" the searches simply had no more products.
PARTIAL — N product(s) … the run time limit was reachedSucceededThe run's timeout ended the crawl. Raise the timeout (default 3,600 s) or lower Max products.
PARTIAL — … N result page(s) could not be read / a search was cut short by DHgate refusing requestsSucceededA few pages failed after all retries; products from all other pages are saved. Run again to fill the gap.
… N product page(s) could not be read (those rows hold search-card data only; hasDetails = false)SucceededSome product pages failed; those rows keep the search-card columns. Re-read them with itemCodes.
… N product(s) had been removedSucceededDHgate answered "gone" (HTTP 404/410) for N products a search had found; they are not saved.
PARTIAL — stopped at the run's maximum cost per run with N product(s) saved. Raise "Max cost per run" to collect more.SucceededYour cost limit was reached; see What you pay.
EMPTY_RESULT — DHgate answered but has no products for this search. …SucceededDHgate listed nothing for that keyword and filter combination (for example a price window of $9,000–$9,001).
EMPTY_RESULT — none of the N item code(s) exists on DHgate (any more) … / DHgate has no store with the number … (HTTP 404)SucceededThe products were removed or the numbers are wrong; copy store numbers from www.dhgate.com/store/<number>.
BLOCKED — DHgate could not be read (…) after N request(s). This is an access problem, not an empty result.FailedEvery route was refused. Run again in a few minutes; keep the default proxy setting.
FETCH_FAILED — DHgate could not be read (…) / the crawl stopped before any product was saved (…) / no product could be saved and N page(s) failed (…)FailedNetwork errors on every route (or a custom proxy that does not work), or every page that should hold products failed. A rerun normally succeeds.
INVALID_INPUT — Give at least one search term …FailedNothing to search: add a keyword, a DHgate URL, a category ID, a store ID or an item code.
INVALID_INPUT — "…" is not a valid URL / is not a dhgate.com URL / has no searchkey, catalog or supplierid / Category ID "…" is not a number / Item code "…" is not a DHgate item number / Store ID "…" is not valid / Unknown sortBy / Ship-to country … must be a two-letter country code / maxMinimumOrder must be 1 or moreFailedFix the named input: category IDs look like 117003002, item codes like 1114811530, store IDs are the number in the store URL or the 32-character seller ID, sort is relevance, bestselling, price_asc or price_desc, the country a code such as US or DE.

While the run is working, the status line shows progress such as Collected 7,194 product(s) · 226 result pages · 60s. SUMMARY.searches[].stop says why each search ended: ENOUGH (your limit), END (no more pages), REPEATS, WINDOW (DHgate's 101-page window), BANDS (deep search finished), BLOCKED / FAILED, TIME, EMPTY.

Products for a nonsense word? DHgate's search is fuzzy and never answers "nothing" for an unknown word: a nonsense string returned products and a count of several hundred. The Actor saves what DHgate lists; check title and categoryName for rare terms. A truly empty result needs a filter combination that matches nothing.

Honest limits

  • 4,040 results per search window. DHgate's own limit. Deep search, several keywords, categories and stores go beyond it; one broad keyword will not return all of the hundreds of thousands DHgate reports.
  • Price tiers, shipping cost, the seller's company, specifications and reviews need the product page. Search cards do not carry them, so a default run leaves those columns out entirely. The product page is one extra request per product and DHgate rate-limits it.
  • Card prices can show the entry price only. For a small share of products the search card shows the price for the minimum order instead of the whole ladder (one of 14 products in the hand check); with the product page read, priceMin and priceMax span the full ladder.
  • DHgate's own filters are loose. In the test a "single piece only" search listed products with a minimum order of 50–300, and a $5–$10 search listed $1 products. The Actor checks MOQ and price again on every product and drops the ones outside your range (counted as outsideYourFilters in SUMMARY); free shipping, on sale and customizable were exact in the test.
  • Sold counts are DHgate's rounded text (2.1K+) with no stated time window, and many products have none; ratings exist only for products with reviews.
  • Buyer names are masked by DHgate itself (dfgd****ydg). Reviews hold at most the newest 20 per product.
  • Shipping cost is for the minimum order to one ship-to country. Delivery days are DHgate's estimate. Products the seller does not deliver to that country have deliverable: false.
  • No e-mail addresses or phone numbers. DHgate does not publish them; buyers contact sellers inside DHgate.
  • Prices are US dollars only. The Actor pins the currency; other display currencies are not offered.
  • Order differs from your browser. DHgate personalises and shuffles best-match order; the set of products is the same kind, the exact order may not be. Row order in the dataset is not a ranking.
  • Sponsored listings are mixed in by DHgate on the first result page. They are real products, flagged in sponsored. Category pages also list a stray product from another category now and then (1 of 80 in the test).
  • Seller feedback and sales move daily. A figure can differ by a tenth of a point between two reads (99.2 vs 99.3 in the hand check).
  • DHgate.com only. AliExpress, Alibaba.com, 1688 and Temu are different sites and are not covered by this Actor.

DHgate Scraper compared with the other options

DHgate ScraperCopying from the website by handDHgate's own seller tools
Speed1,000 products in ~10 s (cards), 4 products/s with product pagesMinutes per pageNot designed for export
Volume10,000+ products per keyword in one runA few dozen before fatigueYour own store only
Fields37–75 typed columns incl. tiers, shipping, seller companyWhatever you copyVaries
FiltersDHgate's own filters, set once in the inputClicked per searchYes, in the browser
De-duplicationAutomatic, by item codeManual—
Repeatable / scheduledYes (tasks, schedules, API, webhooks)NoNo
LoginNot neededNot needed for browsingSeller account
CostPay per productYour timeFree for sellers

As far as we know DHgate does not publish an open API for searching its public catalogue; its seller-side integrations are meant for managing your own store. For buyers, analysts and sourcing teams who need search results as data, a scraper is the practical route.

FAQ

How do I scrape DHgate without coding?

Open the Actor, type a keyword in Search terms, press Start and download the table from the Output tab as CSV or Excel. No DHgate account, cookies or code are needed.

As far as we know there is no open API for searching DHgate's public catalogue; the seller-side integrations are for managing your own store. This Actor reads the same public pages every visitor sees and returns clean JSON.

Can I export DHgate products to Excel or CSV?

Yes. Every dataset downloads as CSV, Excel (xlsx), JSON, XML or HTML from the Export button or the API (?format=csv).

How many products can I scrape from DHgate?

In one run 15,000 unique products in 115 seconds (25 October 2026). DHgate shows at most 4,040 per search window; deep search continues in price bands, and more keywords, categories and stores add more.

Why does DHgate report 200,000 results when I get about 4,000 per window?

DHgate counts every fuzzy match but lists only 101 pages of 40 per search. Deep search repeats the search in price bands so each band shows its own window; that is how one keyword reaches 10,000+ products.

Do I need a DHgate account, login or cookies?

No. Everything comes from public pages; the Actor sets only the cookies that pin the currency (USD) and the ship-to country.

How do I get DHgate price tiers (bulk pricing)?

Switch on Read the product page of every product. priceTiers then lists every quantity break with the regular and promotion price per unit, for example 1–9 pieces at $14.89 down to 1,000+ at $7.11.

How do I get shipping cost and delivery time to my country?

Set Ship-to country (for example DE) and switch the product page on: you get shippingCost, shippingMethod, deliveryDaysMin, deliveryDaysMax and shipsFrom for that country. Search-card rows carry only freeShipping and the X Days Delivery promise.

What currency are the prices in?

US dollars. DHgate shows a visitor's local currency; the Actor pins USD so a run from any country is comparable.

What is the difference between priceMin, priceMax and priceTiers?

priceMin / priceMax are the cheapest and the dearest unit price, promotion included; priceTiers is the full ladder by quantity (product page only); regularPriceMin / regularPriceMax are the prices before the seller's promotion.

How do I scrape all products of one DHgate store?

Put the store number from its URL (www.dhgate.com/store/22318278) into Store IDs, or paste the store URL into DHgate URLs. A store with thousands of products is split by price bands like any big search. sellerStoreId and sellerId in every row are valid store IDs.

How do I scrape a whole DHgate category?

Put the category ID into Category IDs or paste the category URL. IDs are in the categoryId column and in URLs like …/c117003002.html; a parent ID such as 117 covers its sub-categories.

Can I paste a DHgate search URL?

Yes. Search, category, store and product URLs go into DHgate URLs; DHgate's filter parameters in a search URL (price, sort, free shipping, minimum order …) are kept.

How do I find low MOQ products on DHgate?

Switch on Single piece orders only or set Max minimum order, and read minOrderQuantity for the exact number; the Actor drops products whose MOQ is above your limit.

How do I find products with free shipping?

Switch on Free shipping only, or read freeShipping (and shippingCost with the product page). It is free shipping to the ship-to country you chose.

Can I monitor DHgate prices every day?

Yes: save a task, add a daily schedule and join the runs on itemCode. For a fixed list use itemCodes, which reads each product page and returns the whole ladder.

How fast is it?

Search cards: 1,000 products in about 10 seconds, 15,000 in under two minutes. With product pages: about four products a second (1,000 in 249 seconds).

How much does it cost to scrape 10,000 DHgate products?

$12.00 on the free Apify plan, down to $8.00 on higher plans — see What you pay.

What happens when I set a maximum cost per run?

The Actor saves exactly as many products as the limit covers and finishes as Succeeded with a PARTIAL — stopped at the run's maximum cost per run … message; nothing is charged beyond the limit.

Why are some products marked sponsored?

DHgate mixes paid placements into the first result page. They are real products; sponsored is true for them so you can drop them.

Why is the order different from what I see on DHgate?

DHgate shuffles best-match order per visitor. The Actor keeps one session per search so its own pages do not overlap, but the order can differ from your browser; sortBy: price_asc or bestselling give stable orders.

What does the "sold" number mean?

It is the text DHgate prints next to the rating (34 sold, 2.1K+ sold), with no stated time window; large numbers are rounded. soldText keeps the original, soldCount the number.

Why do many products have no rating or sold count?

New and slow listings have neither and DHgate prints nothing for them. In the 15,000-product run 13.4 % of the products had a rating and 15.8 % a sold figure; the data dictionary shows every column.

Can it get reviews?

Yes, with the product page: reviewCount, rating, ratingCounts, reviewHighlights, DHgate's AI reviewSummary and the newest 0–20 reviews in reviews. Buyer names are masked by DHgate itself (dfgd****ydg). Not the full review history.

Does it return seller contact details or e-mails?

No. DHgate does not publish seller e-mails or phone numbers. You get store link, name, company name, country, orders, feedback score, level (LV0 … LV5), years on DHgate (sellerYears, the 1st Year / 9th Year badge) and staff size.

Can I use it from Python, Node.js, Google Sheets, Zapier, Make or n8n?

Yes — see How to run it through the API and Integrations. Apify's MCP server also exposes the Actor to AI agents as a tool with plain JSON input.

Does it work for AliExpress, Alibaba or Temu?

No — this Actor reads DHgate.com only. Those sites have different pages and need their own scrapers.

Are Chinese-language values supported?

Yes. DHgate's English site shows English titles; seller company names are the registered Chinese names (深圳市泰尔晟贸易有限公司) and are stored as proper UTF-8.

Does it get product descriptions and pictures?

Pictures: image always, images (the gallery) with the product page. Descriptions: switch on Include full description for description, descriptionHtml and descriptionImages. Many sellers describe with pictures only; then description is empty.

Why do I get products that do not match my keyword?

DHgate's search is fuzzy and fills a window with loosely related products when a term is rare. Check title and categoryName, narrow with categoryIds, or use a more specific phrase.

What should I do if a run ends with BLOCKED or FETCH_FAILED?

Run again in a few minutes with the default proxy setting; the Actor already retries on other routes before it gives up. DHgate refuses some datacenter ranges, so a US address works best if you use your own proxy. See Troubleshooting.

Glossary

TermChineseMeaning
DHgate敦煌网Chinese cross-border B2B2C wholesale marketplace (DHgate.com)
MOQ (minimum order quantity)起订量The smallest quantity a seller accepts per order (minOrderQuantity)
Price tiers阶梯价Unit prices that fall as the order quantity rises (priceTiers)
Dropshipping一件代发Selling without stock; the seller ships single pieces to your customer
Free shipping包邮Shipping paid by the seller (freeShipping)
Store / seller店铺 / 卖家A seller's shop on DHgate (sellerName, sellerStoreId)
Positive feedback好评率Share of positive seller ratings (sellerPositiveFeedback)
Sold已售Units sold as printed on the listing (soldCount)
Review / rating评价 / 评分Buyer reviews and the 1–5 star average (reviewCount, rating)
Shipping fee运费Cost of delivery to the ship-to country (shippingCost)
Delivery time送达时间 / 交货期Estimated days to deliver (deliveryDaysMin, deliveryDaysMax)
Overseas warehouse海外仓Stock held abroad, e.g. the US warehouse filter
Customization定制Logo, packaging or colour made to order (customizable)
Promotion限时促销A time-limited seller discount (discountPercent, promotionEndsAt)
Category类目DHgate's product category (categoryId, categoryPath)
Item code商品编号DHgate's product number (itemCode)
Store level店铺等级LV0 … LV5 badge (sellerLevel)
On-time delivery rate准时发货率Share of orders delivered on time (sellerOnTimeDeliveryRate)
Cross-border e-commerce跨境电商Selling across borders — the main use of this data
Product selection选品Choosing what to sell or source

The Actor collects only information DHgate.com publishes openly to every visitor without a login: product listings, prices, review texts and the business details sellers choose to show. It does not bypass logins or paywalls and it does not collect buyer accounts or private messages. Scraping publicly available data is generally lawful in many jurisdictions, but the responsibility for how you use the data is yours. Respect DHgate's terms of use, do not republish copyrighted pictures or texts without the rights holder's permission, and if your use involves personal data (review authors are shown masked by DHgate itself; a seller's company name is business data) comply with the laws that apply to you — China's Personal Information Protection Law (PIPL), the EU and UK GDPR, India's Digital Personal Data Protection Act 2023, the CCPA and others. If in doubt, ask a lawyer.

Changelog

  • 1.0 (25 October 2026) — First release: keyword, category, store, URL and item-code modes; deep search in price bands; DHgate's own filters (price, MOQ, single piece, free shipping, on sale, customizable, US warehouse, ship-to country, sort) checked again on every product; optional product-page read with price tiers, shipping, seller company, specifications, options, gallery and reviews; optional descriptions; 37 / 72 / 75 typed columns; per-result pricing with a clean stop at the maximum cost per run. Proof runs: 12,000 unique products (build 1.0.3) and 15,000 unique products (build 1.0.6); later builds changed item-code rows, filter checks, price columns of product-page rows, descriptions and status messages only.

Support

Questions, a missing field, a search that behaves oddly? Open an issue on the Actor's Issues tab with the run ID — we reply within 24 hours. Feature requests are welcome; tell us which DHgate filter or column would help your workflow.