DHgate Product & Supplier Scraper avatar

DHgate Product & Supplier Scraper

Pricing

Pay per event

Go to Apify Store
DHgate Product & Supplier Scraper

DHgate Product & Supplier Scraper

Extract DHgate wholesale listings with prices, MOQ, sales, ratings, supplier IDs, storefronts, images, coupons, and sourcing context.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Turn DHgate wholesale search pages into clean product and supplier records.

Use keywords or public DHgate category/search URLs to collect current listing prices, sales signals, supplier identities, store links, images, coupons, delivery estimates, and collection context.

The Actor is built for recurring sourcing research rather than one-off copy and paste.

  • 🔎 Search DHgate by product keyword
  • 🗂️ Extract complete category and search pages
  • 💵 Normalize displayed USD price ranges
  • 📈 Filter by price and sold count
  • 🏪 Connect products to supplier storefronts
  • 🔁 Follow pagination with a clear safety cap
  • 📤 Export results as JSON, CSV, Excel, XML, or RSS

What does the DHgate Product & Supplier Scraper do?

The Actor accepts one or more product searches or DHgate wholesale listing URLs.

For every matching card it saves one structured product record with its supplier attributes.

It handles the repetitive work needed to:

  • compare wholesale offers;
  • build a candidate product catalog;
  • identify active suppliers;
  • monitor price and assortment changes;
  • find products with visible demand;
  • prepare source data for ecommerce workflows.

Version 1 is intentionally listing-first.

It does not promise private account data, individual reviews, option-level inventory, or detail-only fields that are absent from public listing pages.

Who is this DHgate scraper for?

Dropshippers

Discover candidate products, compare price ranges, and prioritize offers with visible sales activity.

Procurement and sourcing teams

Create repeatable supplier-discovery lists with product IDs, seller IDs, storefronts, and source URLs.

Ecommerce catalog builders

Feed product titles, images, pricing, and links into catalog review or enrichment pipelines.

Market analysts

Schedule category snapshots to track assortment, merchandising, and popularity signals over time.

Agencies and data teams

Deliver structured DHgate exports through Apify API, webhooks, datasets, and integrations.

Why use this Actor?

DHgate listing pages contain useful sourcing data, but manual collection is slow and difficult to reproduce.

This Actor adds:

  • structured records instead of copied text;
  • consistent field names across searches and categories;
  • global deduplication by DHgate item code;
  • numeric price bounds for filtering and analysis;
  • input and page caps for predictable runs;
  • bounded anti-bot retries instead of infinite loops;
  • source context for traceability;
  • Apify scheduling and integrations.

Supported DHgate inputs

You can combine both routes in one run.

Search queries

Enter terms such as:

  • wireless earbuds
  • phone cases
  • wedding dresses
  • gaming accessories

The Actor builds the corresponding public DHgate wholesale search URL.

Start URLs

Provide public dhgate.com URLs under /wholesale/, for example:

https://www.dhgate.com/wholesale/fashion-bags/c107011.html

Product-detail URLs are rejected because version 1 has a listing/search contract.

Other domains are rejected to prevent accidental off-target crawling.

Input options

FieldTypePurposeDefault
searchQueriesarrayDHgate product keyword searcheswireless earbuds
startUrlsarrayDHgate wholesale category/search URLsempty
maxItemsintegerGlobal unique product cap25
maxPagesPerSourceintegerPagination cap per input2
minPricenumberMinimum displayed range pricenone
maxPricenumberMaximum displayed range pricenone
minSoldintegerMinimum visible sales countnone
proxyConfigurationobjectApify proxy settingsUS residential

At least one query or URL is required.

minPrice cannot exceed maxPrice.

When a filter is active and a listing lacks that value, the listing is excluded rather than guessed.

Example input

{
"searchQueries": [
"wireless chargers",
"phone cases"
],
"maxItems": 100,
"maxPagesPerSource": 5,
"maxPrice": 20,
"minSold": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

For a cheap first run, keep maxItems at 10 and maxPagesPerSource at 1.

Output data

Each dataset row represents one DHgate product listing.

FieldDescription
itemCodePublic numeric DHgate item code
productIdInternal product identifier exposed by the listing
titleFull product title
productUrlClean product-detail URL
imageUrlMain listing image URL
priceOriginal displayed price text or range
priceMinNumeric lower USD bound
priceMaxNumeric upper USD bound
currencyPrice currency, normally USD
unitDisplayed selling unit, when present
soldCountNormalized visible sales count
sellerIdInternal seller identifier
sellerNameSupplier storefront name
sellerStoreUrlSupplier storefront URL
sellerTierDHgate seller performance tier when displayed
deliveryEstimateListing delivery text when displayed
couponsCurrent listing coupon labels
categoryIdCategory ID parsed from category URLs
collectionTitleSearch/category page title
collectionQueryOriginal keyword for keyword inputs
collectionTypesearchQuery or startUrl
pageResult page number
sourceUrlExact page used for extraction
scrapedAtISO extraction timestamp

Optional fields are omitted when DHgate does not display them.

The Actor does not invent missing values or write placeholder null values.

Example output

{
"itemCode": "1113917241",
"productId": "8aaa03f79f279832019f3b91f82b34f5",
"title": "Solid Color Jelly Bag Fashionable Transparent Large Capacity Single Shoulder Handbag",
"productUrl": "https://www.dhgate.com/product/solid-color-jelly-bag-fashionable-transparent/1113917241.html",
"imageUrl": "https://img4.dhresource.com/webp/m/300x300/f3/albu/bw/o/07/902e9f44-d95a-4cf0-b488-1522bb911fcd.jpeg",
"price": "US $12.52 - 17.90 / Piece",
"priceMin": 12.52,
"priceMax": 17.9,
"currency": "USD",
"unit": "Piece",
"soldCount": 12,
"sellerId": "8aaaa325835a19ba01835a66fb480e8a",
"sellerName": "worldcup_official",
"sellerStoreUrl": "https://www.dhgate.com/store/top-selling/21835891.html",
"sellerTier": 3,
"categoryId": "107011",
"collectionTitle": "Wholesale Fashion Bags",
"collectionType": "startUrl",
"page": 1,
"sourceUrl": "https://www.dhgate.com/wholesale/fashion-bags/c107011.html",
"scrapedAt": "2026-07-23T00:00:00.000Z"
}

Live values change as DHgate updates its marketplace.

Supplier sourcing workflow

A practical sourcing workflow is:

  1. Search several terms that describe the same product niche.
  2. Set a realistic maxPrice for the target unit economics.
  3. Use minSold to focus on listings with visible demand.
  4. Export the Supplier analysis dataset view.
  5. Group records by sellerId or sellerStoreUrl.
  6. Review the supplier storefront and product detail before ordering.
  7. Schedule the same input to track changes.

Seller tier and sold count are marketplace signals, not guarantees.

Always complete your own supplier verification and sample-order process.

How pagination and deduplication work

The Actor reads the next-page URL rendered by DHgate.

It stops when it reaches:

  • maxItems across the whole run;
  • maxPagesPerSource for the current input;
  • the final available page;
  • or the end of all inputs.

If the same item appears in multiple searches, it is saved only once per run.

The first observed copy retains the collection context that discovered it.

Filters and boundary behavior

minPrice applies to the lower bound of the displayed range.

maxPrice applies to the upper bound.

This means a range of $10 - $30 does not pass maxPrice: 20.

minSold supports labels such as 265 Sold and 1.8K+ Sold.

If DHgate omits a sold count, the row does not pass an active minSold filter.

These rules make automated sourcing filters conservative and reproducible.

Reliability and anti-blocking

DHgate uses Akamai anti-bot protection.

The Actor therefore defaults to:

  • US residential proxying;
  • browser-like request headers;
  • sticky sessions for each request attempt;
  • sequential, low-concurrency collection;
  • a maximum of three attempts per page;
  • session rotation only after a blocked or malformed response.

A fully blocked page fails clearly instead of silently producing an empty success.

A successfully fetched search with no matching products remains a valid empty result.

How much does it cost to scrape DHgate products?

The Actor uses pay-per-event pricing.

A small start fee covers run initialization, followed by a charge for each saved product listing.

The exact active prices appear in the Apify Console before you start a run and may include subscription-tier discounts.

Control total cost with:

  • a low maxItems value;
  • one page for exploratory runs;
  • focused keywords;
  • strict price and popularity filters;
  • Apify's maximum total charge setting.

Proxy and compute usage are covered by the Actor's pricing model when run from Apify Store.

Scheduling a DHgate price monitor

Apify schedules can run the same input hourly, daily, weekly, or monthly.

For a lightweight monitor:

  1. Save the Actor input as a task.
  2. Keep keywords and filter values stable.
  3. Add a daily or weekly schedule.
  4. Send completed datasets to a webhook or integration.
  5. Compare records by itemCode.
  6. Alert on changes to priceMin, priceMax, or soldCount.

Use scrapedAt and sourceUrl for auditability.

Export formats

The default dataset supports:

  • JSON
  • JSONL
  • CSV
  • Excel
  • XML
  • RSS
  • HTML table

Use the Overview view for product research.

Use the Supplier analysis view for supplier grouping and procurement review.

Integrations

Google Sheets

Send each completed dataset to a sourcing workbook for review and assignment.

Airtable

Create a product-candidate base keyed by itemCode, with supplier records linked by sellerId.

Make and Zapier

Trigger enrichment, approval, or catalog workflows after each scheduled run.

Webhooks

Notify your application when a run succeeds or fails, then fetch the dataset through the API.

Amazon S3 or Google Drive

Archive periodic category snapshots for historical assortment analysis.

Use with the Apify API

Replace APIFY_TOKEN with your token.

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~dhgate-product-supplier-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["wireless earbuds"],"maxItems":25,"maxPagesPerSource":2}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/dhgate-product-supplier-scraper').call({
searchQueries: ['wireless earbuds'],
maxItems: 25,
maxPagesPerSource: 2,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient('APIFY_TOKEN')
run = client.actor('automation-lab/dhgate-product-supplier-scraper').call(run_input={
'searchQueries': ['wireless earbuds'],
'maxItems': 25,
'maxPagesPerSource': 2,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with Apify MCP

Apify MCP lets Claude Code, Claude Desktop, Cursor, VS Code, and other MCP clients call the Actor as a tool.

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/dhgate-product-supplier-scraper"

Claude Desktop, Cursor, or VS Code

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/dhgate-product-supplier-scraper"
}
}
}

Example prompts:

  • “Find 30 DHgate wireless charger listings under $20 and rank them by sold count.”
  • “Extract the first two pages of this DHgate category and group products by supplier.”
  • “Run my saved DHgate sourcing task and summarize suppliers with seller tier 4 or 5.”

Tips for better results

  • Begin with one focused query and 10 items.
  • Prefer marketplace terminology used by DHgate sellers.
  • Split unrelated product niches into separate tasks.
  • Keep residential proxying enabled.
  • Use category URLs when you need repeatable assortment snapshots.
  • Use query input when you need broad discovery.
  • Compare suppliers by stable seller IDs, not only display names.
  • Treat coupons and delivery estimates as time-sensitive.
  • Review product details before purchasing or republishing data.

Troubleshooting

Why did my run return no products?

Your filters may be stricter than the current listings.

Remove minSold, widen the price range, and test one page.

A niche query may also have no matching public listings.

Why was my URL rejected?

Version 1 accepts only public DHgate listing URLs under /wholesale/.

Use a category or search URL rather than a product, cart, account, or external URL.

Why did a run fail after retries?

DHgate may have blocked all three bounded residential sessions or changed its listing markup.

Retry later with the default proxy settings and check the run log for the exact page and HTTP response shape.

Why is a supplier field missing?

DHgate does not display every supplier attribute on every listing card.

Optional fields are omitted rather than guessed.

Data quality notes

Prices are the ranges displayed to an anonymous US visitor at extraction time.

They may vary by quantity, destination, currency, promotion, login state, or product option.

Sold counts may be rounded, for example 1.8K+.

Seller tier is a DHgate performance indicator, not an independent audit.

Coupons and delivery estimates can expire quickly.

Use product and seller IDs as stable join keys wherever possible.

This Actor collects publicly visible marketplace listing data.

You are responsible for using it lawfully and in accordance with applicable contracts, privacy rules, intellectual-property rules, and local regulations.

Do not use the Actor to access accounts, evade authorization, collect private data, or overload DHgate.

Use reasonable limits and a legitimate sourcing, research, or interoperability purpose.

When in doubt, consult qualified legal counsel.

Security and privacy

No DHgate login is required.

The Actor does not request passwords, cookies, private API credentials, or payment information.

Input and output are stored in your Apify account according to your platform retention settings.

Avoid placing confidential information inside search terms or URLs.

FAQ

Does it scrape individual product reviews?

No. Version 1 focuses on search and category listings.

Does it collect MOQ?

It returns the listing's displayed selling unit. It does not claim option-level MOQ when the card does not expose it.

Can it scrape several keywords in one run?

Yes. Add multiple values to searchQueries; maxItems remains a global cap.

Can I use direct DHgate URLs?

Yes, for category or search pages under /wholesale/.

Does it remove duplicates?

Yes. Item codes are deduplicated across every query and URL in the run.

Can I monitor prices?

Yes. Save a task, schedule it, and compare numeric price fields by itemCode.

Is a proxy required?

Residential proxying is strongly recommended and enabled by default because plain HTTP is commonly blocked.

Build a broader sourcing workflow with other Automation Lab actors:

Check each Store page for its current scope and input contract.

Support

If a valid DHgate wholesale URL fails consistently, open an Actor issue with:

  • the exact input;
  • the run ID;
  • the expected result;
  • and the observed behavior.

Do not include account credentials or private data.

We use reproducible examples to distinguish source changes, filter behavior, and transient blocking.