DHgate Wholesale Products & Suppliers Scraper
Pricing
from $6.80 / 1,000 results
DHgate Wholesale Products & Suppliers Scraper
Scrape DHgate wholesale product listings and suppliers with title, price range, minimum order quantity (MOQ), store name and URL, supplier rating, review and order counts, free shipping and product image. Search by keyword. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
DHgate Wholesale Products & Suppliers Scraper
Here is one real result, with every field the actor returns (opt-in AI and contact-enrichment fields are omitted here because those add-ons were off for this run):
{"imageUrl": "https://img4.dhresource.com/300x300/f3/albu/km/y/02/d2660743-a2d5-41d1-9e81-652aa74b8f65.jpg","title": "Bling Diamond Designer Phone Case for Samsung Galaxy S25 S24 Ultra S23 Plus S22 S21 FE S20 S10 S9 S8 Luxury Crystal Rhinestone Glitter Sparkle Back Cover Funda","productUrl": "https://www.dhgate.com/product/bling-diamond-designer-phone-case-for-samsung/1111326539.html?d1_page_num=2#s2-2-1;searl|2049938415:3","itemCode": "1111326539","searchQuery": "phone case","priceText": "US $13.03 - 21.26","priceMin": 13.03,"priceMax": 21.26,"priceCurrency": "$","priceOriginalText": "US $18.35 - 29.95 / Piece","priceOriginalMin": 18.35,"priceOriginalMax": 29.95,"discountPercent": 29,"promoEndsAt": "2026-08-31 23:59:00","bulkDiscountText": null,"moq": 1,"moqUnit": "Piece","moqText": "1 Piece","storeName": "parfum168168","storeUrl": "https://www.dhgate.com/store/top-selling/22290289.html#listing_store-3","supplierId": "22290289","supplierTierLevel": 5,"supplierLevel": null,"supplierYears": null,"keyAccountSeller": false,"positiveFeedbackPercent": 99.2,"rating": 5,"reviewCount": 1,"ordersRecent": 1,"freeShipping": true,"sevenDayReturn": false,"hasVideo": false,"source": "dhgate.com","observedAt": "2026-08-10T14:29:40.084Z","error": null}
The most complete DHgate scraper available. It returns every field a DHgate search result exposes (price range, original price and discount, promo end, MOQ, supplier store and tier, positive feedback, rating, recent orders, shipping and return flags), and adds opt-in AI title cleanup/translation, AI attribute extraction, and contact enrichment so you can target exactly the wholesale products and suppliers you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches DHgate for one or more keywords, paginates the results, and writes one normalized record per product to the run's dataset. Each record carries the product title, image, URL and item code, the price range with the original price and discount percent, promo end time, minimum order quantity, and the supplier store name, ID, tier level, positive-feedback percent, rating, review count, recent orders, and shipping/return flags. Every product is tagged with the search query that found it.
Missing source values are returned as null, never invented. Optional paid add-ons can clean and translate the noisy title into a concise English name, extract structured attributes and a broad category, and attempt to find a public supplier contact email and name.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 10 phone case products with supplier details.
{"searchQueries": ["phone case"],"maxProducts": 10}
Pass several keywords in searchQueries to run multiple searches in one job. Every field is optional.
Input reference
| Field | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
searchQueries | string[] | no | ["phone case"] | One or more keywords to search on DHgate. Each query is searched in turn and every product is tagged with the query that found it. | ["led lights", "running shoes"] |
maxProducts | integer | no | 10 | Maximum number of products to collect across all searches. | 50 |
withDescription | boolean | no | false | AI add-on. Turn the noisy title into a concise clean name and an English name. Charged only when the model returns usable output. Paid plans only. | true |
withAttributes | boolean | no | false | AI add-on. Extract structured product attributes/specs and a broad category from the title. Charged only on usable output. Paid plans only. | true |
enrichContacts | boolean | no | false | Paid add-on. For each result without an email, attempt to find a public business contact email and a contact person's name. Billed per attempt, plus an extra charge only when an email is found. | true |
enrichContactsMax | integer | no | 50 | Cap how many results the add-on tries to enrich. Free Apify accounts are capped at 3. | 20 |
Output reference
One dataset item per product. Types: string, number, integer, boolean, object, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
imageUrl | string | Product image URL. |
title | string | Full product title as listed. |
productUrl | string | Product page URL. |
itemCode | string | DHgate item code (unique per product). |
searchQuery | string | The search keyword that produced this record. |
priceText | string | Displayed price range text. |
priceMin | number | Parsed minimum price. |
priceMax | number | Parsed maximum price. |
priceCurrency | string | Price currency symbol. |
priceOriginalText | string | Original (pre-discount) price text, or null. |
priceOriginalMin | number | Parsed original minimum price, or null. |
priceOriginalMax | number | Parsed original maximum price, or null. |
discountPercent | integer | Discount percent when on promo, else null. |
promoEndsAt | string | Promo end datetime when present, else null. |
bulkDiscountText | string | Bulk discount text when present, else null. |
moq | integer | Minimum order quantity. |
moqUnit | string | MOQ unit, for example Piece. |
moqText | string | Raw MOQ text. |
storeName | string | Supplier store name. |
storeUrl | string | Supplier store URL. |
supplierId | string | Supplier store ID. |
supplierTierLevel | integer | Supplier tier level, or null. |
supplierLevel | string | Supplier level label, or null. |
supplierYears | integer | Years the supplier has been on DHgate, or null. |
keyAccountSeller | boolean | true when flagged as a key account seller. |
positiveFeedbackPercent | number | Supplier positive-feedback percent. |
rating | number | Product rating. |
reviewCount | integer | Number of reviews. |
ordersRecent | integer | Recent order count. |
freeShipping | boolean | true when free shipping is offered. |
sevenDayReturn | boolean | true when 7-day return is offered. |
hasVideo | boolean | true when the listing has a video. |
aiCleanName | string | AI cleaned product name (opt-in), else absent. |
aiTitleEn | string | AI English product name (opt-in), else absent. |
aiAttributes | object | AI-extracted attributes/specs (opt-in), else absent. |
aiCategory | string | AI broad product category (opt-in), else absent. |
enrichedEmail | string | Contact-enrichment email when found. |
enrichedContactName | string | Contact-enrichment person name when found. |
enrichedJobTitle | string | Contact-enrichment job title when found. |
enrichedEmailStatus | string | Deliverability status of the enriched email. |
enrichedSource | string | Source URL the enriched contact was found on. |
enrichedConfidence | number | Confidence score of the enriched contact. |
source | string | Data source label. Always dhgate.com. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | Present only on a failed item; carries the failure reason. |
Example output record
Real record from a live run (input {"searchQueries": ["phone case"], "maxProducts": 10}):
{"imageUrl": "https://img4.dhresource.com/300x300/f3/albu/km/y/02/d2660743-a2d5-41d1-9e81-652aa74b8f65.jpg","title": "Bling Diamond Designer Phone Case for Samsung Galaxy S25 S24 Ultra S23 Plus S22 S21 FE S20 S10 S9 S8 Luxury Crystal Rhinestone Glitter Sparkle Back Cover Funda","productUrl": "https://www.dhgate.com/product/bling-diamond-designer-phone-case-for-samsung/1111326539.html","itemCode": "1111326539","searchQuery": "phone case","priceText": "US $13.03 - 21.26","priceMin": 13.03,"priceMax": 21.26,"priceOriginalMin": 18.35,"priceOriginalMax": 29.95,"discountPercent": 29,"promoEndsAt": "2026-08-31 23:59:00","moq": 1,"moqUnit": "Piece","storeName": "parfum168168","supplierId": "22290289","supplierTierLevel": 5,"keyAccountSeller": false,"positiveFeedbackPercent": 99.2,"rating": 5,"reviewCount": 1,"ordersRecent": 1,"freeShipping": true,"sevenDayReturn": false,"hasVideo": false,"source": "dhgate.com","observedAt": "2026-08-10T14:29:40.084Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~dhgate-suppliers-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["phone case"],"maxProducts":10}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~dhgate-suppliers-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["led lights"],"maxProducts":100,"withAttributes":true}'
Apify CLI:
apify call scrapers_lat/dhgate-suppliers-scraper \--input '{"searchQueries":["running shoes"],"maxProducts":25}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per product record returned (
resultevent). See the pricing tab for the current per-result price. - AI and contact add-ons are billed separately. AI title cleanup, AI attribute extraction, and contact enrichment each charge only when they return usable output and only when enabled.
- No charge on failure. If a run errors, the actor writes an item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 products per run, and contact enrichment is capped at 3 attempts. AI add-ons are paid plans only. Upgrade for higher limits.
FAQ and troubleshooting
Can I search several keywords at once?
Yes. Put multiple keywords in searchQueries. Each is searched in turn and results are tagged with the searchQuery that found them, up to maxProducts total.
What does the price range mean?
DHgate lists tiered pricing. priceMin/priceMax are the current range; priceOriginalMin/priceOriginalMax and discountPercent show the pre-promo price when on sale.
How do I assess supplier quality?
Use supplierTierLevel, positiveFeedbackPercent, rating, reviewCount, and ordersRecent. Enable contact enrichment to attempt a supplier email.
Why is the title so noisy?
DHgate titles are keyword-stuffed. Enable withDescription to get a clean name and an English translation via the AI add-on.
Is this an official DHgate tool? No. This actor is independent and has no affiliation with DHgate. It reads only data that is publicly available on the site. Use it in accordance with the source's terms.
Related scrapers
- 1688 Wholesale Scraper: Wholesale products from 1688.
- Made-in-China Suppliers Scraper: Suppliers from Made-in-China.
- AliExpress Scraper: Products and prices from AliExpress.
- IndiaMART Suppliers Scraper: Suppliers from IndiaMART.
- Europages Suppliers Scraper: B2B suppliers across Europe.
- HKTDC Suppliers Scraper: Suppliers from HKTDC.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with DHgate. Accesses only publicly available data. Use in accordance with the source's terms of service.
