JD.com Product & Reviews Scraper
Pricing
from $5.00 / 1,000 product scrapeds
JD.com Product & Reviews Scraper
Scrape JD.com (京东 / Jingdong) product details and customer reviews by product URL or SKU. Returns title, price, shop, stock, images, and review text/ratings. Cookieless HTTP Impit + managed review recovery. MCP-ready.
Pricing
from $5.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
1
Bookmarked
56
Total users
21
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
Scrape public JD.com (京东 / Jingdong) product details and customer reviews by product URL or numeric SKU. Paste item.jd.com/{sku}.html links (or mobile product URLs) and get flat dataset rows for title, brand, price when JD exposes it, shop, stock signals, images, and optional review text with ratings — built for China ecommerce researchers, price-monitoring teams, and AI agents on Apify.
Reviews need your own JD.com sign-in. JD now shows customer reviews only to signed-in users. Product details work without any login. To get reviews, paste your own JD.com session cookie into the optional
jdCookieinput (see Getting reviews). Without it, review jobs are reported as blocked and never billed.
What data can you extract from JD.com?
One dataset row per product or review, with provenance on every item.
| Field | Description |
|---|---|
recordType | product or review |
skuId / productId / title / brand / productUrl | Product identity |
price / priceDisplay / priceMasked / currency | CNY price when JD exposes it; priceMasked flags hidden prices |
shopId / shopName / stockStatus / imageUrl | Offer and media signals |
reviewId / content / rating / userNickname / createdAt | Customer review fields |
source / scrapedAt | Provenance and freshness |
Best fit
Use this Actor when you already have JD product URLs or SKU IDs and need structured product rows and optional customer reviews for monitoring, assortment research, or MCP/agent pipelines. It stays focused on mainland JD.com product pages you supply — keyword search and shop catalogs are a different workflow.
Related next step
When you need Alibaba.com B2B listing cards instead of JD SKUs, route to Alibaba Listings Scraper. For AliExpress search and product detail, use AliExpress All-in-One Scraper. For Amazon catalog intelligence after a China-market pull, continue with Amazon Product Intelligence.
Workflow story
A sourcing analyst pastes one hoodie SKU URL, sets mode to product+reviews, maxReviewsPerProduct to 5, pastes her own JD.com session cookie into jdCookie, and keeps Residential proxy on. The run returns one product row plus up to five review rows. She exports JSON for a weekly price-and-sentiment sheet, notes any priceMasked: true SKUs as price-unavailable, and schedules the same input for monitor-style checks.
How it works
- Normalizes
item.jd.com/item.m.jd.comURLs and bare numeric SKUs - Fetches the mobile product page over HTTP (Impit Chrome-TLS) and parses embedded
window._itemOnlycatalog fields - Optionally collects customer reviews from JD's comment feed. JD shows reviews only to signed-in users, so the request carries your own
jdCookiewhen you supply one. Without it (or when JD refuses the cookie), the review job is reported inOUTPUT.warningsand the status message, and no review rows are billed; product rows from the same run are kept - Deduplicates SKUs, charges named PPE events, and writes product and review rows to the dataset
- Writes
OUTPUTandRUN_SUMMARYwith outcome, counts, and charged events
Input example
{"productUrls": [{ "url": "https://item.jd.com/100066291366.html" }],"mode": "product+reviews","maxProducts": 1,"maxReviewsPerProduct": 5,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Field | Type | What it controls |
|---|---|---|
productUrls | array | item.jd.com or item.m.jd.com/product URLs |
skuIds | array | Bare numeric SKU IDs |
mode | enum | product, reviews, or product+reviews |
maxProducts | integer | Cap on distinct SKUs (default 10) |
maxReviewsPerProduct | integer | Cap on reviews per SKU (default 20) |
jdCookie | secret string | Optional. Your own JD.com session cookie; needed for reviews |
preferManagedReviews | boolean | No longer used (kept for saved inputs) |
proxyConfiguration | object | Recommended Apify Residential |
Example output
{"recordType": "product","skuId": "100066291366","title": "回力卫衣男秋季长袖t恤简约圆领休闲运动跑步健身上衣套头衫男装","brand": "回力","currency": "CNY","shopName": "示例店铺","stockStatus": "in_stock","productUrl": "https://item.jd.com/100066291366.html","source": "mobile_pdp","scrapedAt": "2026-09-30T10:00:00.000Z"}
You can download the dataset as JSON, CSV, Excel, or HTML. Every run also writes OUTPUT and RUN_SUMMARY.
Pricing
This Actor uses Pay per event with platform usage passed through to the caller. Current event prices:
apify-actor-start: $0.00005 per runproduct-scraped: $0.005 per validated product row (primary)review-scraped: $0.012 per validated review row
For example, one product with five review rows costs about $0.065 in named events plus small platform usage. Only validated product and review rows receive those named charges. Treat the live Pricing tab on the Actor page as the current source of truth for event prices and platform usage before budgeting a production run.
Outcomes
Every run writes OUTPUT and RUN_SUMMARY with one of:
COMPLETE | PARTIAL | VALID_EMPTY | INVALID_INPUT | UPSTREAM_FAILED | CONFIG_ERROR
PARTIAL: products saved while reviews were blocked (for example nojdCookie), or the reverseINVALID_INPUT: no usable URLs or SKUs after normalizationUPSTREAM_FAILED: JD did not return usable data and nothing billable was saved. Areviews-only run without a workingjdCookieends here, with no review charges
Getting reviews with your own JD.com cookie
- Sign in to your own account at jd.com in your browser.
- Open the browser developer tools on any jd.com page, go to the Network tab, click any request to
jd.com, and copy the full value of theCookierequest header. - Paste it into
jdCookieand run withmodeset toreviewsorproduct+reviews.
The cookie is stored encrypted as a secret input, sent only to JD.com to request reviews during your run, and never written to the log, the dataset, or RUN_SUMMARY. Cookies expire; if the status message says JD refused the cookie, copy a fresh one. Use only your own account. RUN_SUMMARY.reviewsAuth shows whether a cookie was used.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~jd-com-product-reviews-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"productUrls":[{"url":"https://item.jd.com/100066291366.html"}],"mode":"product","maxProducts":1}'
Then read the dataset and the OUTPUT record for outcome, row counts, and charged events.
MCP / agent prompt card
Scrape JD.com product
https://item.jd.com/100066291366.htmlfor title, price (note if masked), shop, and stock (and up to 5 customer reviews when the user supplies their ownjdCookie). Tool:khadinakbar/jd-com-product-reviews-scraper. Return flat rows withskuIdandrecordType. Cost is $0.005 per product row and $0.012 per review row plus platform usage.
Tips for best results
- Prefer Chinese-market SKUs on
item.jd.com(mainland product pages) - Start with
maxProducts: 1andmaxReviewsPerProduct: 5for a cheap quality check - When
priceMaskedis true, treat price as unavailable and keep the display string for audit - Keep Apify Residential enabled for steadier mobile PDP yield
- For reviews, supply a fresh
jdCookiefrom your own signed-in browser session
Builder's note
I built this Actor after probing JD's desktop PDP from outside China and finding a risk-control shell instead of catalog HTML. The mobile product page (item.m.jd.com) still embeds window._itemOnly with usable title, shop, stock, and image fields, so the runtime is cookieless Impit against that path. JD's comment feed now answers logged-out callers with a busy or forbidden response, so reviews need the customer's own session cookie (jdCookie). When reviews are refused, the job is reported as blocked and no review rows are billed.
FAQ
What input do I need to provide?
Add JD product links (item.jd.com/{sku}.html or mobile product URLs) to productUrls, or numeric SKU IDs to skuIds. Choose mode as product, reviews, or product+reviews, and cap work with maxProducts and maxReviewsPerProduct.
Do I need a JD.com login?
Product details need no login. Reviews do, because JD shows them only to signed-in users, so paste your own JD.com session cookie into jdCookie; it is stored encrypted and never written to the log, dataset, or RUN_SUMMARY.
What happens if I request reviews without a cookie?
The review job is reported as blocked and no review rows are billed. With product+reviews, product rows are still saved and the outcome is PARTIAL; a reviews-only run ends as UPSTREAM_FAILED with no review charges.
How much does it cost?
Events are $0.00005 per run start, $0.005 per validated product row, and $0.012 per validated review row, with platform usage passed through to the caller. For example, one product with five reviews costs about $0.065 in named events plus small platform usage.
Why is the price missing on some products?
JD sometimes hides the price. In that case priceMasked is true, so treat the price as unavailable and keep priceDisplay for audit.
Legal / responsible use
Use only on public JD.com pages and data you are authorized to process. Respect JD.com terms, applicable privacy laws, and Apify Store policies. The Actor reads public product pages, and reviews only through the session cookie you supply for your own account. JD.com / 京东 are trademarks of their respective owners. This independent Actor is not affiliated with, associated with, or endorsed by JD.com.