JD.com Scraper
Pricing
from $16.00 / 1,000 product scrapeds
JD.com Scraper
Scrape JD.com (JD Global) product listings by keyword, category, or product URL. Extract title, images, product metadata, and price/review/seller fields when JD exposes them. Export to JSON, CSV, or Excel.
Pricing
from $16.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
2
Bookmarked
75
Total users
5
Monthly active users
0.23 hours
Issues response
18 days ago
Last modified
Categories
Security
Limited permissionsShare
Extract JD.com product listings and product-page metadata from JD.com (京东) — China's second-largest e-commerce platform with 600M+ registered users. Price, rating, review, and seller fields are returned when JD exposes them in the loaded page or authenticated search results; otherwise those fields are null instead of guessed.
Search by keyword, browse categories, or extract product details. Export to JSON, CSV, or Excel with one click.
Price coverage limitation: SKUs
100024459207and100007429713currently return catalog data withprice=nullandoriginalPrice=null. Browser rendering did not recover either price in our tests. There is no user-selectable dynamic-render switch. Use this Actor for catalog extraction; do not rely on it for complete price monitoring.Bulk extraction by numeric JD SKU ID or direct product URL needs no cookies. Keyword and category search require authenticated access; see authentication setup.
What does JD.com Scraper do?
JD.com Scraper navigates search.jd.com using your browser session cookies to extract structured product data. It supports keyword search across all JD.com product categories and exports results in multiple formats for analysis, monitoring, or AI pipelines.
Key capabilities:
- 🏷️ Extract and deduplicate bulk JD SKU lists without cookies
- 🔗 Extract direct JD.com product URLs without cookies
- 🔍 Search by keyword across all JD.com categories
- 📂 Browse specific category pages
- 💰 Extract prices, discounts, and original prices when visible
- ⭐ Capture ratings and review counts when JD exposes them
- 🏪 Get seller names and self-operated (京东自营) flags when available
- 🖼️ Collect product images and thumbnails
- 📊 Export to JSON, CSV, or Excel
Who is it for?
E-commerce analysts & market researchers
- Compare product catalogs, brands, and images across JD listings
- Monitor source-exposed prices only after checking coverage for your target SKUs
- Identify top-selling products in specific categories
Dropshippers & sourcing agents
- Find products with high review counts and ratings
- Compare self-operated (JD Logistics) vs. third-party sellers
- Automate product catalog discovery
Data scientists & AI teams
- Build training datasets from Chinese e-commerce
- Build product classification models
- Analyze price trends only for records with source-exposed numeric prices
Business intelligence teams
- Monitor brand presence on JD.com
- Extract available pricing for market analysis reports, excluding nulls
- Track catalog changes; promotions and discounts may be unavailable
Why use JD.com Scraper?
- ✅ Structured data — clean JSON with all key fields normalized
- ✅ No coding required — works via Apify console, no code needed
- ✅ Scheduled catalog monitoring — run on a cron; price coverage is not guaranteed
- ✅ API access — integrate via REST API or 5,000+ app connections
- ✅ Multiple export formats — JSON, CSV, Excel, XML
- ✅ Bounded retries — request failures are retried, but retries do not guarantee price access
Authentication: JD.com Cookies for Search/Category
This Actor requires JD.com session cookies for keyword/category search. Direct SKU and product URL catalog extraction does not require cookies. Signed-in direct-product price recovery is untested and is not a supported remedy for missing prices.
How to get your cookies:
- Open https://www.jd.com in Chrome or Firefox
- Log in to your JD.com account
- Open DevTools: press
F12or right-click → Inspect - Go to Application tab → Cookies →
https://www.jd.com - Find cookies starting with
pt_keyandpt_pin(these are the auth cookies) - Also copy:
__jdv,__jda,__jdb,__jdc,_tp,_pst - Format as:
pt_key=AAJt...; pt_pin=yourname...; __jdv=...; ... - Paste this string into the JD.com Cookies field in the input
Important: Cookies expire. If the scraper stops working, get fresh cookies from your browser. If a run contains only keyword/category inputs and no cookies, it fails before charging. A mixed run still processes valid cookie-free SKU IDs and product URLs, while clearly reporting that protected inputs were skipped.
Cookie-free bulk SKU example
Paste numeric IDs from a catalog, ERP, or product watchlist. Duplicate IDs and equivalent product URLs are merged into one request per SKU:
{"productIds": ["100027004748", "100038004153", "100027004748"],"productUrls": ["https://item.jd.com/100044707599.html"]}
Invalid IDs are reported and skipped. If no valid direct product remains, the run fails before the run-start charge instead of creating placeholder output.
Prices and dynamic rendering
Direct product extraction tries desktop HTTP, then public mobile embedded data. It uses a JavaScript browser fallback only if those routes cannot identify the product. Search/category extraction already uses a JavaScript browser. There is no separate dynamic-rendering input switch: a successful identity-only mobile response does not automatically launch a browser to look for prices.
The mobile parser reads full numeric current/reference prices when exposed for the requested SKU. Masked values such as 3??, encrypted glyphs, ranges and coupon amounts are not valid prices and remain null. Logs distinguish available, masked, login-required, not-exposed and sku-mismatch mobile price coverage without recording private page bodies.
In anonymous tests on October 23, 2026, both SKUs 100024459207 and 100007429713 returned price=null and originalPrice=null, while product names and images remained available. JD exposed masked values and a login prompt; browser rendering retained the mask or encountered verification and did not recover either price. These observations do not prove that all JD prices are unavailable or that login is necessary. Signed-in price access has not been tested.
Useful catalog rows are retained when price is unavailable. A successful run means extraction completed, not that every row has a numeric price. Existing run-start and product charges still apply to catalog extraction without a price; there is no price-only success or billing mode.
What data can you extract?
| Field | Description |
|---|---|
productId | JD SKU ID (unique product identifier) |
productName | Full product title |
productUrl | Direct link to JD.com product page |
price | Current selling price (CNY ¥), when visible; otherwise null |
originalPrice | Original price before discount, when visible; otherwise null |
discountPercent | Calculated discount percentage; 0 when no discount is known, including missing prices |
currency | Always CNY (Chinese Yuan) |
thumbnailUrl | Product thumbnail image URL |
images | Array of product image URLs |
rating | Average rating (1-5 stars), when available; otherwise null |
reviewCount | Number of customer reviews, when available; otherwise null |
shopId | JD shop/seller ID, when available; otherwise null |
shopName | Seller/shop name, when available; otherwise null |
brand | Brand name |
categoryName | Product category |
isSelfOperated | Whether JD self-operates (京东自营) |
searchKeyword | Search keyword that found this product |
sourceUrl | URL that was scraped |
scrapedAt | ISO timestamp |
How much does it cost to scrape JD.com?
JD.com Scraper uses Pay-Per-Event (PPE) pricing — a run-start charge plus a per-product charge. Products with unavailable prices are still catalog results and incur the product charge.
| Charge | FREE Tier | DIAMOND Tier |
|---|---|---|
| Run start (one-time) | $0.05 | $0.05 |
| Per product scraped | $0.03 | $0.0076 |
Full tier pricing per product:
| Tier | Price Per Product |
|---|---|
| FREE | $0.03 |
| BRONZE | $0.027 |
| SILVER | $0.021 |
| GOLD | $0.016 |
| PLATINUM | $0.011 |
| DIAMOND | $0.0076 |
Cost examples (FREE tier):
- 10 products: ~$0.35 ($0.05 start + 10 × $0.03)
- 100 products: ~$3.05 ($0.05 start + 100 × $0.03)
- 1,000 products: ~$30.05 (FREE tier) / ~$7.65 (DIAMOND tier)
- 10,000 products: ~$300.05 (FREE tier) / ~$76.05 (DIAMOND tier)
Free plan: Apify gives new users $5 in free credits — enough for ~165 JD products at FREE tier.
How to scrape JD.com products
- Sign up at apify.com (free plan available)
- Open JD.com Scraper
- Choose a mode: Paste numeric IDs into
productIdsfor cookie-free bulk extraction, or add keywords/category URLs for authenticated search - For search only: Log into JD.com → DevTools → Application → Cookies and copy
pt_keyandpt_pin - Set limit: Choose max results per keyword/category (default: 50); direct SKU inputs are all processed
- Click Start and wait for results
- Download as JSON, CSV, or Excel from the Results tab
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
productIds | Array | [] | Numeric JD SKU IDs — no cookies required (e.g., ["100027004748", "100038004153"]) |
productUrls | Array | [] | Direct JD.com product page URLs — no cookies required (e.g., ["https://item.jd.com/100012043978.html"]); deduplicated with productIds |
keywords | Array | [] | Search keywords (e.g., ["laptop", "phone"]) — requires cookies |
categoryUrls | Array | [] | JD.com category page URLs — requires cookies |
maxResultsPerSearch | Integer | 50 | Max products per keyword or category (1–500) |
cookies | String | "" | JD.com session cookies string — required for keyword/category search |
proxyConfiguration | Object | Apify RESIDENTIAL | Proxy settings |
Output examples
Illustrative catalog row with unavailable prices (not a live price-coverage guarantee):
{"productId": "100067793977","productName": "联想ThinkPad E14 Gen 5 AMD 轻薄笔记本电脑 14英寸 R5-7530U 16G内存 512G固态","productUrl": "https://item.jd.com/100067793977.html","price": null,"originalPrice": null,"discountPercent": 0,"currency": "CNY","thumbnailUrl": "https://img10.360buyimg.com/n7/jfs/t1/123456/1/abcd.jpg","images": ["https://img10.360buyimg.com/n7/jfs/t1/123456/1/abcd.jpg"],"rating": null,"reviewCount": 125000,"shopId": "1000003652","shopName": "联想官方旗舰店","brand": "ThinkPad","categoryName": "笔记本","isSelfOperated": false,"searchKeyword": "laptop","sourceUrl": "https://search.jd.com/Search?keyword=laptop&enc=utf-8&page=1","scrapedAt": "2026-04-01T12:00:00.000Z"}
Tips for best results
Getting fresh cookies:
- JD.com cookies typically expire within 7-30 days
- Get fresh cookies before each major scraping session
- Both
pt_keyandpt_pincookies are required for authentication
Keyword tips:
- Use Chinese keywords for better results (e.g., "笔记本电脑" for laptop)
- JD.com search supports both English and Chinese keywords
- Common category searches: "手机" (phone), "电视" (TV), "冰箱" (refrigerator)
Maximizing results:
- Start with 50-100 results to test your keywords
- Use multiple keywords for broader coverage
- Schedule runs daily/weekly for catalog monitoring; filter out null prices in price-dependent workflows
Understanding JD.com pricing:
- Prices are in CNY (Chinese Yuan, ¥)
- JD self-operated items (自营) have better quality guarantees
originalPriceis the source-exposed reference price, ornull;discountPercent=0does not prove there is no discount
Integrations
JD.com Scraper → Google Sheets Use Apify's Google Sheets integration to write product catalog rows to a spreadsheet. Price columns can be null; check target-SKU coverage before using them for monitoring.
JD.com Scraper → Slack/Discord alerts For SKUs with numeric prices, use Apify webhooks + Zapier to create price alerts. Ignore null prices rather than treating them as zero or a price drop.
JD.com Scraper → Make/Zapier workflows Automate product catalog updates: scrape JD daily → filter by criteria → push to your CRM or database automatically.
Scheduled price monitoring Use Apify's scheduling for catalog snapshots. Compare prices only where numeric values were actually returned; missing prices are gaps, not zero-price observations.
JD.com data → AI models Feed product descriptions and pricing into LLMs for competitive analysis, price prediction, or market research reports.
API usage
Node.js
const { ApifyClient } = require('apify-client');const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/jd-scraper').call({productIds: ['100027004748', '100038004153']});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('automation-lab/jd-scraper').call(run_input={'productIds': ['100027004748', '100038004153']})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST \'https://api.apify.com/v2/acts/automation-lab~jd-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN' \-H 'Content-Type: application/json' \-d '{"productIds": ["100027004748", "100038004153"]}'
Use with AI agents via MCP
JD.com Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/jd-scraper"
Setup for Claude Desktop, Cursor, or VS Code
Add to your MCP config file:
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/jd-scraper","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Example prompts:
- "Search JD.com for laptops under ¥5000 and find the top-rated options with the most reviews"
- "Extract JD.com product metadata for these SKU IDs and report which rows have unavailable prices"
- "Scrape JD.com for gaming chairs and export the results to a spreadsheet"
Legality
JD.com Scraper accesses publicly visible product data using your own authenticated session — the same data any logged-in user would see while browsing. This is consistent with fair use principles for market research and price comparison.
Best practices:
- Use your own JD.com account credentials
- Don't exceed reasonable request rates
- Use scraped data for research and analysis only, not for unauthorized reproduction
- Comply with JD.com's Terms of Service for your specific use case
JD.com Scraper is designed for legitimate business intelligence and market research. It does not bypass paid features or access private data.
Data handling, dependencies, and limitations
- The Actor uses deterministic HTTP/browser extraction and does not use AI or send data to an AI provider.
- Failed operations send sanitized diagnostic input, exceptions, and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days.
- Direct product mode accesses public JD.com product pages. Search/category mode sends the requested query and your session cookies to JD.com; cookies are held only for the run and are never written to the dataset or intentionally logged.
- Apify residential proxy infrastructure may carry requests. Apart from the sanitized failure diagnostics described above, the Actor keeps no external copy or cache; datasets, key-value stores, and logs follow your Apify account retention settings and can be deleted there.
- JD.com can change pages, redirect products, omit optional fields, or require renewed authentication. Prices, ratings, reviews, seller fields, and images can therefore be
null. - JD.com is a third-party trademark. This independent Actor is not affiliated with or endorsed by JD.com.
For help, use the Issues tab on the Actor page and include the run URL plus a redacted input. Never post session cookies in a support report.
FAQ
Why do I need to provide cookies? JD.com uses geographic restrictions and bot detection that requires authentication for search access from outside mainland China. Your session cookies authenticate the requests as coming from a real logged-in user.
How do I find my JD.com cookies?
Log into jd.com, open browser DevTools (F12), go to Application → Cookies → jd.com. Look for pt_key and pt_pin cookies. Copy all cookies in the format: name1=value1; name2=value2.
How much does scraping 1,000 JD products cost? With Apify's FREE tier: ~$30.05 ($0.05 start fee + 1,000 × $0.03). The $5 free credit on new accounts gives you about 165 products for free.
Why is a successful product missing its price? Can I enable dynamic rendering?
Useful catalog data can be returned even when JD masks or omits a price. Both tested SKUs 100024459207 and 100007429713 currently have null prices. Rendering did not recover them, and there is no dynamic-render switch. Signed-in access is untested, not a proven requirement or remedy. Keep the catalog row and treat the price as unavailable.
Why are results empty or the scraper fails? Most common causes: (1) Cookies expired — get fresh cookies from your browser. (2) JD account was logged out — log back in and copy new cookies. (3) Network issues — retry the run.
Can I scrape JD.com without an account?
Yes — for individual product pages or bulk SKU lists. Use Product SKU IDs with numeric IDs or Product URLs with direct item.jd.com links; neither mode requires cookies. Keyword search and category browsing require cookies.
Why did results stop mid-run?
JD.com may have detected the session as inactive. Try running with fresh cookies and lower maxResultsPerSearch values.
Does this work for search.jd.com AND global.jd.com?
The scraper targets search.jd.com (main Chinese site) using authenticated sessions. JD Global redirects all searches to the same backend.
Related actors
- Amazon Scraper — Product listings, reviews, bestsellers
- eBay Scraper — Listings, bids, seller info
- Temu Scraper — Temu product data
- Best Buy Scraper — Electronics pricing
- AliExpress Scraper — Global marketplace
- DexScreener Scraper — Crypto/token pricing