JD.com Product Scraper — Search, Detail, Reviews
Pricing
from $1.50 / 1,000 product search results
JD.com Product Scraper — Search, Detail, Reviews
Scrape JD.com (Jingdong) into clean structured datasets — keyword search with real prices, product details, customer reviews, shop catalogs, and bulk price lookups. Five operations in one actor. No account, no API key, no setup.
Pricing
from $1.50 / 1,000 product search results
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
8
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
JD.com Product Scraper — Search, Prices, Reviews & Shop Catalogs 🚀
🎉 Five scrapers in one — keyword search with real prices, deep product data, reviews, shop catalogs, and bulk price lookups
Built for China e-commerce researchers, dropshippers, brand analysts, and pricing teams who need clean JD.com (Jingdong) data without scraping headaches
📋 Overview
Stop fighting JD.com's anti-bot defenses. This actor turns Jingdong (京东) — China's largest B2C marketplace — into a clean, structured data feed across five complementary operations.
Why thousands of professionals choose us:
- ✅ Real CNY prices via Product Search: 48 products per page with live sale prices, sales counts, ratings, and shop info — no decoding required
- ⚡ Dedicated bulk price endpoint: refresh prices on thousands of SKUs for the cheapest per-row rate on the market
- 🎯 Transparent detail data: when JD masks unit prices, we expose a
priceMaskedflag so you know to switch to Search or Price endpoints - 💰 Pay-per-result pricing: only charged for successful rows, never for errors or empty pages
- 💎 No account, no API key, no setup: paste your input, hit Start, get JSON
- ✨ NEW: Bulk Product Price operation — the fastest, cheapest way to keep an SKU catalog in sync with live JD pricing
✨ Features
- 🔎 Keyword Search: 48 real-price products per page with shop, sales, rating, and canonical URLs
- 📦 Product Detail: deep SKU, stock, dimensions, category, shop floor, and variant data
- 💬 Product Comments: customer reviews with rating, content, appended review, reviewer profile, and photo URLs
- 🏬 Shop Catalog: a merchant's full product list by Shop ID
- 💱 Bulk Product Price: dedicated single-product price lookup — the cheapest endpoint in the actor
- 🇨🇳 Native Chinese support: handles 中文 keywords, titles, and review content cleanly
- 📸 Normalized image URLs: JD CDN paths upgraded to fully-qualified HTTPS URLs
- 📄 HTML run report: every run drops a
report.htmlsummary into the key-value store - 🧾 Apify-native dataset: export to JSON, CSV, Excel, RSS, or XML in one click
- 🛡️ Error rows never charged: invalid IDs, removed products, and rate limits are flagged in the dataset but cost nothing
🎬 Quick Start
Pick an operation, plug in a keyword or item ID, and run. No login, no proxy setup, no captcha solving.
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~jd-com-product-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"productSearch","keyword":"华为手机","maxPages":1}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose an operation
Pick one of productSearch, productDetail, productComments, shopCatalog, or productPrice based on what you need.
Step 2: Plug in the input
- Keyword or item ID
- Optional
maxPages(for paginated operations: search, comments, catalog)
Step 3: Hit Start and grab the dataset
Export to JSON, CSV, or Excel — or pull rows live through the Apify API.
That's it! In under 60 seconds, you'll have:
- Clean, flat rows ready for analytics
- Real CNY prices, sales counts, and shop info
- Normalized image URLs you can hotlink directly
📥 Input Configuration
One operation per run. Fields required depend on which operation you pick.
| Field | Type | Required | Description |
|---|---|---|---|
operation | enum | Yes | One of productSearch, productDetail, productComments, shopCatalog, productPrice |
keyword | string | If productSearch | Search term (supports Chinese, e.g. 华为手机) |
itemId | string | If detail / comments / price | JD product ID (e.g. 100012043978) |
shopId | string | If shopCatalog | JD shop ID |
maxPages | integer | No | Cap pages fetched for paginated ops (search / comments / catalog). Default 1. |
Example — Keyword Search:
{"operation": "productSearch","keyword": "iPhone 16 Pro","maxPages": 3}
Example — Bulk Price Refresh:
{"operation": "productPrice","itemId": "100012043978"}
Example — Customer Reviews:
{"operation": "productComments","itemId": "100012043978","maxPages": 5}
📤 Output
Results land in the Apify dataset with curated camelCase fields plus the raw upstream payload spread alongside, so you never lose data.
| Field | Type | Description |
|---|---|---|
operation | string | Which operation produced the row |
itemId | string | JD product ID |
productTitle | string | Product name |
price | number | Current sale price in CNY (Search + Price ops only) |
priceCents | number | Price in cents — bulk Price endpoint returns this raw |
priceYuan | number | Price converted to ¥ (Price endpoint) |
priceMasked | boolean | true when JD masks the price on the detail endpoint |
salesText | string | Sales count text (e.g. 5万+) |
goodRate | number | Positive review rate percentage |
shopId / shopName | string | Merchant identifiers |
itemUrl | string | Canonical JD product URL |
reviewContent | string | Review body (comments op) |
reviewPhotos | array | Reviewer-uploaded photo URLs |
available | boolean | false when JD has delisted or hidden the SKU |
status | string | success or error |
Example — Product Search row:
{"operation": "productSearch","itemId": "100012043978","productTitle": "华为 HUAWEI Mate 60 Pro 12GB+512GB","price": 6499.00,"salesText": "10万+","goodRate": 99,"shopId": "1000004259","shopName": "华为京东自营官方旗舰店","itemUrl": "https://item.jd.com/100012043978.html","status": "success"}
Important — JD price masking: JD.com masks unit prices on its detail endpoint as an anti-scraping countermeasure (you'll see strings like
1??9,4??9). For real prices, use Product Search (returns 48 priced rows per call) or Bulk Product Price (cheapest way to refresh a known SKU). Detail is best for SKU specs, stock, dimensions, and shop info.
💼 Use Cases & Examples
1. Competitor Price Monitoring on JD.com
E-commerce managers tracking rivals' pricing on Jingdong's biggest categories.
Input: category keyword (e.g. 蓝牙耳机), maxPages 5
Output: 240+ priced products per run with shop, sales, and rating data
Use: schedule daily, diff against yesterday's snapshot, alert on price drops
2. Dropshipping Product Sourcing
Drop-ship operators discovering hot products and trustworthy shops.
Input: keyword like 家用智能投影仪
Output: real prices, sales volumes, and shop ratings to spot winners
Use: export the dataset, sort by sales × rating, and import into your store
3. Customer Review Mining at Scale
Brand analysts running sentiment analysis on Chinese reviews.
Input: itemId for a flagship SKU, maxPages 20 Output: review text, ratings, reviewer profiles, and photo URLs Use: pipe into an LLM for theme extraction and competitive teardowns
4. Brand Catalog Mapping
Researchers mapping a Chinese brand's full JD.com footprint.
Input: shopId for the brand's flagship store Output: every itemId + title + product URL the shop currently lists Use: combine with Product Detail to enrich each row with specs
5. Bulk SKU Price Refresh
Pricing teams keeping internal CRM/ERP product feeds in sync with JD.
Input: loop a list of itemIds through productPrice (one ID per run, fanned out)
Output: current CNY price + available flag for delisted SKUs
Use: cheapest endpoint we offer — built for thousands of SKUs
6. Dropshipper SKU Variant Mapping
Sellers cataloging variants and stock per color/storage.
Input: itemId via productDetail
Output: SKU table, stock state, category breadcrumbs, shop floor metadata
Use: generate variant matrices for your storefront
7. China Market Intelligence
Analysts benchmarking Chinese brands against Western alternatives.
Input: keyword searches across the target category Output: sales counts and price bands across the JD long tail Use: weight by sales volume to build a true market-share view
🔗 Integration Examples
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/jd-com-product-scraper').call({operation: 'productSearch',keyword: 'iPhone 16 Pro',maxPages: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/jd-com-product-scraper').call(run_input={'operation': 'productPrice','itemId': '100012043978',})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['priceYuan'], item['available'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~jd-com-product-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"productComments","itemId":"100012043978","maxPages":2}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: schedule or webhook (new SKU added, weekly refresh, etc.)
- HTTP Request: call the actor's run endpoint with your input JSON
- Process: read the dataset items via the Apify API
- Action: write to your DB, alert Slack on price drops, or push into a BI dashboard
📊 Performance & Pricing
Pay-per-event pricing — only charged for successful rows. Error rows never cost anything.
FREE Tier (Try It Now)
- Full access to all five operations with your monthly Apify FREE credit
- No credit card required
- Perfect for testing keywords, validating IDs, and prototyping
PAID Tier (Production Ready)
- Unlimited rows per run with tier-volume discounts that auto-apply as you scale
- Faster turnaround on bulk batches
- Pay only for successful, deduped rows
💰 Best-in-class per-row pricing on JD.com data, with a dedicated cheap bulk Product Price operation built for SKU refresh workflows at scale.
❓ Frequently Asked Questions
Q: Why are prices missing on Product Detail rows?
A: JD.com masks unit prices on its product-detail endpoint as an anti-scraping defense (you'll see 1??9, 4??9, etc.). Use Product Search for real prices across a category, or Bulk Product Price to refresh a known SKU. We expose a priceMasked: true flag on detail rows so you always know which path to take.
Q: Do I need a JD.com account or API key? A: No. Paste your input, hit Start, get rows. We handle authentication, retries, and CDN normalization for you.
Q: Can I search in Chinese?
A: Yes — keyword accepts Chinese characters natively (e.g. 华为手机, 蓝牙耳机). Results return Chinese titles, sales text (e.g. 5万+), and review content as-is.
Q: How many results does Product Search return per page?
A: 48 products per page. Use maxPages to fan out further.
Q: What output formats are available? A: JSON, CSV, Excel, RSS, or XML — export directly from the Apify dataset UI or pull live via the API.
Q: Can I bulk-process a list of product IDs?
A: Yes — loop your IDs into the productPrice operation (one ID per run, fanned via the Apify API). It's our cheapest endpoint by design and built exactly for that workflow.
Q: How fast is processing?
A: Most runs finish in seconds. Bulk catalog or comment scrapes scale linearly with maxPages.
Q: Is this legal? A: We only extract publicly available data. See the legal section below.
🐛 Troubleshooting
No rows returned from Product Search
- Double-check your keyword spelling (Chinese characters preferred for Chinese categories)
- Confirm
maxPagesis at least 1 - Some niche queries return zero results — try a broader keyword
"Item not found" or empty Product Detail / Price
- The SKU may have been delisted by JD — check
available: falsein the response - Verify your
itemIdis a numeric JD product ID (not a Tmall ID)
Prices look masked on Detail
- Expected behavior — JD masks prices on the detail endpoint. Switch to
productSearchorproductPricefor real numbers. ThepriceMaskedflag confirms this on every detail row.
Shop Catalog returns thin rows
- By design — the catalog endpoint returns
itemId + title + URLonly. Fan each itemId out toproductDetailorproductPriceto enrich.
Run was charged but I see error rows
- Error rows are never charged. Only
status: successrows count toward billing.
⚠️ Trademark Disclaimer
This is an independent scraping tool for publicly available JD.com data. It is not affiliated with, endorsed by, or sponsored by JD.com, Inc., 京东 (Jingdong), or any of their subsidiaries or affiliates. All product names, brand names, trademarks, and logos referenced are the property of their respective owners. The JD.com® and Jingdong® names appear under nominative fair use solely to describe the public source of the data this tool helps you access.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or feature requests, open an issue from the actor's page
- Browse the SIÁN Agency Store for more China e-commerce and short-video automation tools
- 📧 apify@sian-agency.online
- ⭐ Love the actor? Leave a 5-star review — it helps us ship more features
Built by SIÁN Agency | More Tools