JD.com Scraper avatar

JD.com Scraper

Pricing

from $16.00 / 1,000 product scrapeds

Go to Apify Store
JD.com Scraper

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

Automation Lab

Maintained by Community

Actor stats

2

Bookmarked

75

Total users

5

Monthly active users

0.23 hours

Issues response

18 days ago

Last modified

Categories

Security

Limited permissions

Share

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 100024459207 and 100007429713 currently return catalog data with price=null and originalPrice=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:

  1. Open https://www.jd.com in Chrome or Firefox
  2. Log in to your JD.com account
  3. Open DevTools: press F12 or right-click → Inspect
  4. Go to Application tab → Cookies → https://www.jd.com
  5. Find cookies starting with pt_key and pt_pin (these are the auth cookies)
  6. Also copy: __jdv, __jda, __jdb, __jdc, _tp, _pst
  7. Format as: pt_key=AAJt...; pt_pin=yourname...; __jdv=...; ...
  8. 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.

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?

FieldDescription
productIdJD SKU ID (unique product identifier)
productNameFull product title
productUrlDirect link to JD.com product page
priceCurrent selling price (CNY ¥), when visible; otherwise null
originalPriceOriginal price before discount, when visible; otherwise null
discountPercentCalculated discount percentage; 0 when no discount is known, including missing prices
currencyAlways CNY (Chinese Yuan)
thumbnailUrlProduct thumbnail image URL
imagesArray of product image URLs
ratingAverage rating (1-5 stars), when available; otherwise null
reviewCountNumber of customer reviews, when available; otherwise null
shopIdJD shop/seller ID, when available; otherwise null
shopNameSeller/shop name, when available; otherwise null
brandBrand name
categoryNameProduct category
isSelfOperatedWhether JD self-operates (京东自营)
searchKeywordSearch keyword that found this product
sourceUrlURL that was scraped
scrapedAtISO 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.

ChargeFREE TierDIAMOND Tier
Run start (one-time)$0.05$0.05
Per product scraped$0.03$0.0076

Full tier pricing per product:

TierPrice 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

  1. Sign up at apify.com (free plan available)
  2. Open JD.com Scraper
  3. Choose a mode: Paste numeric IDs into productIds for cookie-free bulk extraction, or add keywords/category URLs for authenticated search
  4. For search only: Log into JD.com → DevTools → Application → Cookies and copy pt_key and pt_pin
  5. Set limit: Choose max results per keyword/category (default: 50); direct SKU inputs are all processed
  6. Click Start and wait for results
  7. Download as JSON, CSV, or Excel from the Results tab

Input parameters

ParameterTypeDefaultDescription
productIdsArray[]Numeric JD SKU IDs — no cookies required (e.g., ["100027004748", "100038004153"])
productUrlsArray[]Direct JD.com product page URLs — no cookies required (e.g., ["https://item.jd.com/100012043978.html"]); deduplicated with productIds
keywordsArray[]Search keywords (e.g., ["laptop", "phone"]) — requires cookies
categoryUrlsArray[]JD.com category page URLs — requires cookies
maxResultsPerSearchInteger50Max products per keyword or category (1–500)
cookiesString""JD.com session cookies string — required for keyword/category search
proxyConfigurationObjectApify RESIDENTIALProxy 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_key and pt_pin cookies 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
  • originalPrice is the source-exposed reference price, or null; discountPercent=0 does 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 ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('automation-lab/jd-scraper').call(run_input={
'productIds': ['100027004748', '100038004153']
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(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.