Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the DHgate API page →
E-commerce & Marketplaces

DHgate API & Scraper

DHgate is a cross-border marketplace where Chinese sellers sell to buyers worldwide, often in bulk, with the unit price falling as the order quantity rises.

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

This API reads it as JSON. `search` takes words with DHgate's own filters (category, price range, free shipping, maximum minimum-order, on sale, 4 stars and up, US warehouse, destination country) and six sort orders, and returns per product: item id, title, price range, the price before discount and the discount, minimum order, units sold, rating and review count, a sponsored flag and the seller's store. `product` returns one listing in full: the quantity price ladder, minimum and maximum order, whether it is sold per unit or per lot, every variant with its stock, item specifics and description, package size and weight, the shipping cost and delivery days to the country you choose, the seller with positive feedback, transactions, on-time delivery rate and company details, seller coupons and the review breakdown. `sku_price` returns the ladder of one variant, `reviews` the buyer reviews page by page, `store` a seller's catalogue.

Reference

What a DHgate field actually contains

Fields that read differently from how they look. Every row was measured against live DHgate pages on 2026-10-14.

FieldWhat it holds
item_idDHgate's item code, the number at the end of a product address (…/1037834063.html). Pass it unchanged to product, sku_price and reviews; a product URL works too. Search to product returned the same id on 16 of 16 rows.
price_min, price_max (search)The range DHgate prints on the search card. The low end is the price per unit at the largest order-quantity tier, not the price of one piece: 146.08 on a card whose single-piece price is 176.29. On 15 of 15 products the card's low end equalled the cheapest tier in product's price_tiers.
price_tiersThe quantity ladder: min_qty, max_qty (null = and up), the current price and the list price before the promotion. It belongs to one variant, named in price_tiers_sku_id; other variants can cost more, and sku_price returns their ladder. The ladder matched DHgate's own variant-price endpoint on 12 of 12 products.
priced_per, units_per_lotSome items are sold in lots. When priced_per is lot, every price and quantity on that product counts lots of units_per_lot units: one LED strip listing costs 4.24 per lot of 5 meters with a minimum order of 30 lots, which the search card shows as 0.85 per meter and 150 meters. min_order_units and price_per_unit give the per-unit view.
shippingCost, free flag, method and delivery days to the ship_to country you pass (default US). DHgate prices shipping by destination: one phone shipped free to Germany, the UK, France and Australia and for US $10.31 to the US on the same day. The product prices themselves did not change by country.
rating.default_review_count, is_platform_defaultDHgate gives a 5-star review in the buyer's name when the buyer does not review in time. On one phone 91 of 106 reviews were these defaults. reviews flags each one.
rating.no_purchase_review_countReviews DHgate counts that are not tied to a purchase on the listing: 3,519 of 3,527 on one smartwatch. The search card's review_count can be far lower than the product's (8 against 3,527) because it does not include them.
sponsoredTrue on paid placements. On best-match pages 10 of 50 rows are sponsored; filtered pages and other sort orders carry none.

All prices are US dollars. Search totals are DHgate's own and depend on the sort: best match counts loosely related items too (66,408 for "phone case"), every other sort counts 47,152. When nothing matches, DHgate shows recommended look-alikes instead; this API returns no results, sets no_match and puts those rows in recommended_instead.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/dhgate/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "phone case",
    "sort": "best_selling"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "dhgate",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2159.2,
    "record_count": 41,
    "bytes": 614675,
    "cache_hit": false,
    "total": 47559,
    "currency": "USD",
    "ship_to": "US",
    "sponsored_rows": 0,
    "pagination": {
      "page": 1,
      "has_more": true,
      "max_page": 101
    },
    "upstream_requests": 2,
    "edge_refusals_retried": 1,
    "charged_credits": 3,
    "version": "0.1.0",
    "request_id": "1e3afd4f4f194c13",
    "queue_ms": 1.1,
    "fetched_at": "2026-10-14T18:57:21.786Z"
  },
  "data": {
    "query": {
      "query": "phone case",
      "ship_to": "US",
      "sort": "best_selling",
      "page": 1
    },
    "total": 47559,
    "page": 1,
    "has_more": true,
    "results": [
      {
        "item_id": "404047032",
        "title": "Transparent Shockproof Acrylic Hybrid Armor Hard Phone Cases for iPhone 17 16 16E 15 14 13 12 11 Pro XS Max XR 8 7 6 Plus Samsung S25 S24 S23 S22 S21 S20 Note20 Ultra",
        "url": "https://www.dhgate.com/product/transparent-shockproof-acrylic-hybrid-armor/404047032.html",
        "image": "https://img4.dhresource.com/webp/m/300x300/f3/albu/bw/g/12/bd6c2f6b-fc57-4188-8bd6-7b309d23ae0f.jpg",
        "category_id": "105005002",
        "currency": "USD",
        "price_min": 0.89,
        "price_max": 1.61,
        "price_text": "US $0.89 - 1.61",
        "price_before_discount_min": 0.89,
        "price_before_discount_max": 1.61,
        "discount_pct": null,
        "promotion_ends": null,
        "unit": "Piece",
        "min_order": 100,
        "min_order_text": "100 Pieces",
        "free_shipping": true,
        "sold_count": 1,
        "rating": 5,
        "review_count": 1478,
        "positive_review_pct": 100,
        "delivery_days_promise": null,
        "us_warehouse": false,
        "seller_coupons": null,
        "sponsored": false,
        "seller": {
          "store_name": "ocasen",
          "store_id": "20750510",
          "supplier_id": "ff8080815d2b7f6d015d698b6146376b",
          "store_url": "https://www.dhgate.com/store/20750510",
          "positive_feedback_pct": 100,
          "seller_tier": "4",
          "years_on_dhgate": 6
        }
      },
      {
        "item_id": "378631103",
        "title": "Phone Cases For IPhone 17 Air 16 15 14 13 12 Mini 11 Pro MAX XR XS Shockproof TPU Case Clear Samsung Galaxy S20 S10 Plus S9 Note 20 Soft Cover",
        "url": "https://www.dhgate.com/product/iphone-6s-plus-case-clear-tpu-0-3mm-ultra/378631103.html",
        "image": "https://www.dhresource.com/webp/m/300x300/f2/albu/g9/M01/B8/20/rBVaWF0Vy_2AQWgjAAcVJdoh7rc577.jpg",
        "category_id": "105005002",
        "currency": "USD",
        "price_min": 0.32,
        "price_max": 0.55,
        "price_text": "US $0.32 - 0.55",
        "price_before_discount_min": 0.32,
        "price_before_discount_max": 0.55,
        "discount_pct": null,
        "promotion_ends": null,
        "unit": "Piece",
        "min_order": 100,
        "min_order_text": "100 Pieces",
        "free_shipping": true,
        "sold_count": 1,
        "rating": 4.9,
        "review_count": 744,
        "positive_review_pct": 100,
        "delivery_days_promise": null,
        "us_warehouse": false,
        "seller_coupons": null,
        "sponsored": false,
        "seller": {
          "store_name": "acespower",
          "store_id": "20191301",
          "supplier_id": "ff80808151d94d430152772dde1e2d0d",
          "store_url": "https://www.dhgate.com/store/20191301",
          "positive_feedback_pct": 100,
          "seller_tier": "4",
          "years_on_dhgate": 9
        }
      },
      {
        "item_id": "407409795",
        "title": "Carbon Fiber Phone Cases For iPhone 14 13 11 12 Pro Mini X Xr Xs Max 6 6S 7 8 Plus Cover ForSamsung S21 S20 Ultra S10 S9 S8 Note 20 10 9",
        "url": "https://www.dhgate.com/product/carbon-fiber-case-for-iphone-x-6-6s-7-8-plus/407409795.html",
        "image": "https://www.dhresource.com/webp/m/300x300/f2/albu/g8/M00/5B/D9/rBVaV17R1YSADfqBAAG0u8eD_RU771.jpg",
        "category_id": "105005002",
        "currency": "USD",
        "price_min": 1.98,
        "price_max": 5.01,
        "price_text": "US $1.98 - 5.01",
        "price_before_discount_min": 1.98,
        "price_before_discount_max": 5.01,
        "discount_pct": null,
        "promotion_ends": null,
        "unit": "Piece",
        "min_order": 20,
        "min_order_text": "20 Pieces",
        "free_shipping": true,
        "sold_count": 1,
        "rating": 5,
        "review_count": 882,
        "positive_review_pct": 100,
        "delivery_days_promise": 15,
        "us_warehouse": false,
        "seller_coupons": null,
        "sponsored": false,
        "seller": {
          "store_name": "stomern",
          "store_id": "20908578",
          "supplier_id": "ff8080815faf295f015fccf76003277d",
          "store_url": "https://www.dhgate.com/store/20908578",
          "positive_feedback_pct": 100,
          "seller_tier": "4",
          "years_on_dhgate": 2
        }
      }
    ],
    "sponsored_count": 0,
    "no_match": false,
    "recommended_instead": null,
    "category_facets": [
      {
        "category_id": "105",
        "name": "Cell Phones & Accessories",
        "count": 47559,
        "subcategories": [
          {
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      }
    ],
    "ship_from_options": {
      "us": "United States",
      "cn": "China"
    }
  }
}
Actions

What the DHgate API does

ActionDescriptionConcrete use caseKey params
searchSearch DHgate products by keyword with the source's own filters: category, price range, free shipping, sold per piece, maximum MOQ, on-sale only, 4-star+ rated, ships-from country, destination country, and 6 sort orders. Each row: item id, title, URL, image, price range (the low end is the bulk-tier price), pre-discount range, discount %, unit, minimum order, free-shipping flag, units sold, product rating and review count, sponsored flag, and the seller (store name, store id, positive feedback %). Plus the source's total and category facets.Pricing teams call search to search DHgate products by keyword with the source's own filters.query, category, min_price, max_price, free_shipping, ...
productFull DHgate product by item_id or URL: title, category path, images and video, price range and pre-discount range, the quantity price ladder (price per unit at each order-quantity tier), promotion, unit and units per lot, minimum and maximum order, units sold, total stock and stock by warehouse country, variant attributes and every SKU with its stock, item specifics, highlights, full description text, package size and weight, shipping to `ship_to` (cost, free flag, method, delivery days, processing days), the seller (store, positive feedback %, transactions, followers, on-time delivery rate, company name, year established, employees), seller coupons and the review breakdown (average, count, stars, platform-default reviews, AI summary).Marketplace operators call product to get full DHgate product by item_id or URL.item_id, url, ship_to
sku_priceThe quantity price ladder of ONE variant (SKU) of a DHgate product: price per unit at each order-quantity tier, current and before discount. Use a `sku_id` from `product` -> variants[]. The ladder in `product` is the default variant's; other variants can be priced differently.Catalog enrichment teams call sku_price to get the quantity price ladder of ONE variant (SKU) of a DHgate product.item_id, sku_id, ship_to
reviewsBuyer reviews of a DHgate product, 10 per page: rating, text, date, buyer nickname (as DHgate masks it), buyer country and level, the variant bought, photos, helpful count, the seller's reply, and whether it is a platform-default 5-star review.Retail analysts call reviews to get buyer reviews of a DHgate product, 10 per page.item_id, sort, with_photos, page
storeA DHgate seller's store: store name, positive feedback %, transactions, seller level, DHgate's service scores, and the store's product catalogue, 24 per page (item id, title, URL, image, price range, discount %, deal label, free-shipping flag, units sold). Use `store_id` from any search row or product seller block.Pricing teams call store to get a DHgate seller's store.store_id, page
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/dhgate/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"phone case","sort":"best_selling"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.dhgate.search with {"query":"phone case","sort":"best_selling"}.
Use cases

Who uses this API and why

  • Find the order quantity at which a supplier's unit price drops enough for your margin, from the quantity price ladder.
  • Compare dropshipping costs per destination: product price plus shipping cost and delivery days to each market you sell in.
  • Shortlist suppliers by positive feedback, transactions, on-time delivery rate and years on DHgate before ordering samples.
  • Spot inflated ratings by reading how many reviews are platform defaults or not tied to a purchase.
  • Track a competitor's DHgate store catalogue and discounts page by page.
FAQ

Questions developers ask before integrating

Do I need a DHgate account?

No. Everything is read logged out, and you call reefapi.com from anywhere.

How do I get the price for 100 pieces?

Call product and read price_tiers: find the tier whose min_qty and max_qty include 100. For another variant, call sku_price with its sku_id from product's variants.

Is the shipping cost for my country?

Pass ship_to with a two-letter code (US, DE, GB, AU …). Without it the API uses US. If DHgate offers no shipping to that country for the item, shipping is null and a warning says so.

Which search filters are there?

Category, price range, free shipping, sold per piece, maximum minimum-order, on sale, 4 stars and up, ships from the US warehouse, destination country. Each was checked against the unfiltered count in the same run: 66,408 → 1-5 USD 5,484, free shipping 32,339, on sale 20,918, 4 stars and up 5,251, minimum order up to 10 61,774, US warehouse 115, category 105 56,529.

How deep can I page?

40 products per page (50 on best-match pages, 10 of them sponsored), pages 1 to 101. Past page 101 DHgate returns nothing.

Can I get every review?

Yes, 10 per page with sort default or most_helpful and an only-with-photos switch; pages tells you how many pages exist. Buyer names are as DHgate masks them.

Can I list everything one seller sells?

Yes. Take seller.store_id from any search row or product and call store; it returns the store's rating summary and its catalogue, 24 products per page.

What is not returned?

Every shipping method per country (only the one DHgate shows by default), the brand filter, the seller's own review page, and prices in currencies other than US dollars.

What is the DHgate API?

DHgate API is a ReefAPI endpoint group for china-to-global wholesale marketplace: quantity price ladders, moq, variants with stock, shipping by country, sellers and reviews. It returns live JSON through POST requests under /dhgate/v1.

Is the DHgate API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. DHgate calls use the same shared credit balance as every other ReefAPI engine.

Do I need a DHgate login or account?

No login to DHgate is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the DHgate data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the DHgate API use?

DHgate actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call DHgate from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call dhgate actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / dhgate

DHgate

China-to-global wholesale marketplace: quantity price ladders, MOQ, variants with stock, shipping by country, sellers and reviews.

base /dhgate/v15 endpoints
post/dhgate/v1/product3 credits

Full DHgate product by item_id or URL: title, category path, images and video, price range and pre-discount range, the quantity price ladder (price per unit at each order-quantity tier), promotion, unit and units per lot, minimum and maximum order, units sold, total stock and stock by warehouse country, variant attributes and every SKU with its stock, item specifics, highlights, full description text, package size and weight, shipping to `ship_to` (cost, free flag, method, delivery days, processing days), the seller (store, positive feedback %, transactions, followers, on-time delivery rate, company name, year established, employees), seller coupons and the review breakdown (average, count, stars, platform-default reviews, AI summary).

ParameterAllowed / rangeDescription
item_idoptional—DHgate item code: the number at the end of a product URL (`/product/<slug>/1037834063.html`), returned as `item_id` in every search and store row. Provide item_id OR url.
urloptional—A dhgate.com product URL; alternative to item_id.
ship_to = USoptional—Destination country (ISO 3166 two-letter code, e.g. US, DE, FR, GB, AU). DHgate's shipping cost and delivery estimate depend on it (measured: the same item ships free to DE/GB/FR and for US $10.31 to the US). Default US. Prices themselves did not change by country.
Try in playground →
post/dhgate/v1/sku_price1 credit

The quantity price ladder of ONE variant (SKU) of a DHgate product: price per unit at each order-quantity tier, current and before discount. Use a `sku_id` from `product` -> variants[]. The ladder in `product` is the default variant's; other variants can be priced differently.

ParameterAllowed / rangeDescription
item_idrequired—DHgate item code.
sku_idrequired—Variant id from `product` -> variants[].sku_id.
ship_to = USoptional—Destination country (ISO 3166 two-letter code, e.g. US, DE, FR, GB, AU). DHgate's shipping cost and delivery estimate depend on it (measured: the same item ships free to DE/GB/FR and for US $10.31 to the US). Default US. Prices themselves did not change by country.
Try in playground →
post/dhgate/v1/reviews1 credit

Buyer reviews of a DHgate product, 10 per page: rating, text, date, buyer nickname (as DHgate masks it), buyer country and level, the variant bought, photos, helpful count, the seller's reply, and whether it is a platform-default 5-star review.

ParameterAllowed / rangeDescription
item_idrequired—DHgate item code.
sort = defaultoptionaldefault · most_helpfulReview order as DHgate offers it.
with_photosoptional—Only reviews that carry photos.
page = 1optional1–1000Review page (10 per page); `pages` says how many exist.
Try in playground →
post/dhgate/v1/store2 credits

A DHgate seller's store: store name, positive feedback %, transactions, seller level, DHgate's service scores, and the store's product catalogue, 24 per page (item id, title, URL, image, price range, discount %, deal label, free-shipping flag, units sold). Use `store_id` from any search row or product seller block.

ParameterAllowed / rangeDescription
store_idrequired—DHgate store number: `seller.store_id` in search/product results, or the number in a store URL (dhgate.com/store/21917041). A store URL is accepted too.
page = 1optional1–500Store catalogue page, 24 products per page.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.