
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Scrape DHgate search and category results by keyword or URL: price, discount, minimum order, coupons, free shipping, sold count, reviews, rating, seller feedback and store. Sort, price, shipping and ship-to country filters. No login needed.
Export DHgate search and category results to JSON, CSV or Excel: price and discount, minimum order, seller coupons, free shipping, sold count, reviews, rating, seller feedback and store link for every product. Type a keyword or paste any DHgate result URL, set how many products you want, and the scraper follows the result pages for you. No DHgate account, no login, and in our tests 300 products came back in under 20 seconds.
priceMin / priceMax, clean product and store links, no duplicates (each item code is saved and charged once per run).sneakers or phone case), or paste DHgate search or category URLs from your browser.| Field | What it does |
|---|---|
| Search terms | Keywords to search on DHgate, one per line. |
| DHgate search or category URLs | Result URLs: /w/<keyword>.html, /wholesale/search.do?searchkey=..., /wholesale/<keyword>/s<id>.html and category pages /wholesale/<name>/c<id>.html. A page number in the URL is where scraping starts. |
| Max products per search term or URL | How many products to save per input (0 = no limit). |
| Sort by | Best match, best selling, newest, price low to high or high to low. |
| Min / Max price (USD) | Keep products whose price range falls inside your range. |
| Free shipping only / US warehouse only | Only free-shipping products / only products shipped from a US warehouse. |
| Skip sponsored listings | Leave out promoted products. |
| Ship-to country | Country for shipping and free-shipping badges (prices stay in USD). |
{
"searchQueries": ["sneakers", "phone case"],
"startUrls": ["https://www.dhgate.com/w/led+strip.html?sinfo=price&stype=up"],
"maxItems": 100,
"sortBy": "bestselling",
"freeShippingOnly": true,
"shipCountry": "DE"
}
One row per product.
| Field | Description |
|---|---|
productName, productDetailUrl, imageUrl | Title, product page and main image. |
price, priceMin, priceMax, currency, priceUnit | Price as shown (a range depends on variant or quantity), as numbers, currency and unit. |
originalPrice, discountPercent | Price before the current discount and the discount in %. |
minOrder, minOrderQuantity | Minimum order as text and as a number. |
freeShipping, coupons, storeDiscount | Free-shipping flag, seller coupons and store-wide discount. |
recentlySold, reviewCount, rating | Recent sales as DHgate shows them (761, 1.7K+), review count and average rating. |
feedbackPercent, domainName, sellerId, sellerStoreUrl | Seller's positive feedback, store name, ID and store link. |
itemCode, productId, categoryId, sponsored | DHgate IDs and the ad flag. |
searchQuery, searchUrl, page, position, shipCountry, input, scrapedAt | Where and when the product was found. |
{
"itemCode": "716575423",
"productId": "2c9364607aaf94da017ad8ec752f6b87",
"productName": "Universal Silicone Cases Wallet Card Cash Portable Pocket Sticker 3M Adhesive Stick-on ID Holder Pouch For iPhone Samsung MOTO LG OnePlus Huawei XiaoMi Mobile Phone",
"productDetailUrl": "https://www.dhgate.com/product/universal-silicone-cases-wallet-card-cash/716575423.html",
"imageUrl": "https://www.dhresource.com/webp/m/260x260/f2/albu/g19/M01/38/80/rBNaN2D8I6mAZ4vBAAGDs1FD6Hk647.jpg",
"price": "US $0.37 - 0.47",
"priceMin": 0.37,
"priceMax": 0.47,
"currency": "USD",
"priceUnit": "Piece",
"originalPrice": "US $0.39 - 0.50",
"discountPercent": 6,
"minOrder": "200 Pieces",
"minOrderQuantity": 200,
"freeShipping": true,
"coupons": ["$1 off $100+"],
"storeDiscount": null,
"recentlySold": "33",
"reviewCount": 2,
"rating": 5,
"feedbackPercent": "99.8%",
"domainName": "mxin001",
"sellerId": "21305050",
"sellerStoreUrl": "https://www.dhgate.com/store/top-selling/21305050.html",
"sevenReturn": 0,
"sponsored": false,
"categoryId": "105005002",
"position": 18,
"page": 1,
"searchQuery": "phone case",
"searchUrl": "https://www.dhgate.com/w/phone+case.html?sinfo=price&stype=up",
"shipCountry": "US",
"scrapedAt": "2026-10-22T02:48:34.000Z"
}
You pay $0.80 per 1,000 products ($0.0008 per product) plus a small platform usage fee (compute and datacenter proxy traffic).
Is it legal to scrape DHgate? The scraper only reads public search pages that any shopper can see, without logging in. You are responsible for how you use the data; check DHgate's terms and the laws that apply to you.
Do I need a DHgate account or a proxy? No account. The default datacenter proxy works, and the run moves to residential proxies by itself if DHgate keeps blocking datacenter addresses.
How many products can I get? As many as DHgate shows. DHgate stops serving results after about 100 pages per search (about 3,100 unique products for 'sneakers' in our test), so split a broad search into narrower keywords, categories or price ranges to go further.
Why is a field empty? Fields DHgate does not show are null: new products have no reviewCount, rating or recentlySold yet, originalPrice is only set on discounted listings, and coupons is an empty list when the seller has none.
Why does the price filter return a product slightly outside my range? Prices are ranges. A product is kept when its range overlaps your range, the same way DHgate's own filter works.
Free shipping only is on, but freeShipping is false? The free-shipping filter is applied by DHgate itself. For some ship-to countries (for example the United Kingdom) DHgate does not show the free-shipping badge on result cards, so the flag stays false even though the product matched the filter.
Can I schedule it or use the API? Yes. Schedule daily runs for price and coupon tracking, and start runs or read results through the Scrapely API.
recentlySold is DHgate's own rounded text (for example 1.7K+), not an exact number.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch terms
Product keywords to search on DHgate, one per line (for example 'sneakers' or 'phone case'). Each term is searched separately and results are followed page by page.
startUrlsarrayOptionalDHgate search or category URLs
Optional DHgate result URLs copied from your browser: searches (https://www.dhgate.com/w/sneakers.html, /wholesale/search.do?searchkey=...), category-filtered searches (/wholesale//s.html) and category pages (/wholesale//c.html). Sort and filter parameters in the URL are kept, and a page number in the URL is where scraping starts. Product and store pages are not supported.
maxItemsintegerOptionaldefault 20Max products per search term or URL
How many products to save for each search term or URL. A DHgate result page holds 40 to 50 products, and the scraper loads the next pages until it has this many. 0 means no limit: DHgate itself stops serving results after about 100 pages per search (about 3,000 unique products).
sortByenumOptionalSort by
Order of the results. Leave empty for DHgate's default (best match), or the sort already in your URL.
minPricenumberOptionalMin price (USD)
Only products whose price range reaches at least this much.
maxPricenumberOptionalMax price (USD)
Only products whose lowest price is at most this much.
freeShippingOnlybooleanOptionaldefault falseFree shipping only
Only products with free shipping to the ship-to country (DHgate applies this filter itself).
usWarehouseOnlybooleanOptionaldefault falseUS warehouse only
Only products that ship from a US local warehouse (faster delivery to the US).
excludeSponsoredbooleanOptionaldefault falseSkip sponsored listings
Leave out promoted products (ads) that DHgate mixes into the results. Each product keeps a 'sponsored' flag either way.
shipCountryenumOptionalShip-to country
The country DHgate calculates shipping, free-shipping badges and availability for. Leave empty for the United States (or the country already in your URL). Prices stay in US dollars.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to open DHgate. Datacenter works well; the run moves to residential by itself if datacenter addresses keep getting blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| imageUrl | string | null | Main product image (260x260) |
| productName | string | null | Product title |
| price | string | null | Price as DHgate shows it, e.g. 'US $30.16 - 40.00' (a range depends on variant or quantity) |
| priceMin | number | null | Lowest price in USD |
| priceMax | number | null | Highest price in USD |
| originalPrice | string | null | Price before the current discount, when the listing is discounted |
| discountPercent | number | null | Current discount in percent |
| minOrder | string | null | Minimum order, e.g. '1 Piece' |
| freeShipping | boolean | null | Free shipping to the ship-to country |
| coupons | array | null | Seller coupons shown on the listing, e.g. '$2 off $45+' |
| recentlySold | string | null | Recently sold count as DHgate shows it, e.g. '761' or '1.7K+' |
| reviewCount | number | null | Number of product reviews |
| rating | number | null | Average product rating (1-5) |
| feedbackPercent | string | null | Seller's positive feedback rate |
| domainName | string | null | Seller store name |
| sellerStoreUrl | string | null | Seller store URL |
| sponsored | boolean | null | Promoted listing (ad) |
| productDetailUrl | string | null | Product page URL |
| itemCode | string | null | DHgate item code |
| searchQuery | string | null | Search term the product was found with |
| page | number | null | Result page |
| position | number | null | Position in the search results |
| productId | string | null | DHgate product ID |
| currency | string | null | Price currency (USD) |
| priceUnit | string | null | Unit the price is for, e.g. Piece or Pair |
| minOrderQuantity | number | null | Minimum order as a number |
| storeDiscount | string | null | Store-wide discount, e.g. 'Per $100 Save $2' |
| sellerId | string | null | Seller ID |
| sevenReturn | number | null | 1 when the listing offers 7-day returns |
| categoryId | string | null | DHgate category ID |
| alt | string | null | Image alt text |
| searchUrl | string | null | Result page URL the product was found on |
| shipCountry | string | null | Ship-to country code |
| input | string | null | The input URL, for URL inputs |
| scrapedAt | string | null | When the product was scraped (UTC) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Product | One saved DHgate product. | $0.0008 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/dhgate-scraper').call({
"searchQueries": [
"sneakers"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/dhgate-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/dhgate-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.