JD.com 京东 Jingdong Scraper - Prices & Reviews avatar

JD.com 京东 Jingdong Scraper - Prices & Reviews

Pricing

from $3.99 / 1,000 products

Go to Apify Store
JD.com 京东 Jingdong Scraper - Prices & Reviews

JD.com 京东 Jingdong Scraper - Prices & Reviews

Extract JD.com 京东 (Jingdong) product prices, images, shop data, attributes, and reviews by keyword. Supports Chinese searches like 苹果手机, 笔记本电脑, 机械键盘 plus Jingdong/Jindong queries. Export JSON, CSV, Excel.

Pricing

from $3.99 / 1,000 products

Rating

0.0

(0)

Developer

Zen Studio

Zen Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

JD.com 京东 Jingdong Scraper - Prices, Details & Reviews (2026)

Search JD.com (京东 / Jingdong) by keyword and extract product rows with CNY/USD prices, shop data, images, attributes, configured items, included provider reviews, and optional customer reviews.

JD.com Product Scraper

Copy to your AI assistant

zen-studio/jd-com-search-scraper on Apify. Searches JD.com / 京东 / Jingdong by keyword and optional tested category slug, then returns one product row per result with itemId, title, titleOriginal, product URLs, CNY/USD price fields, promotion price fields, brand/category IDs, vendor/shop object, images, videos, attributes, configuredItems, deliveryCosts, promotions, relatedGroups, physical/weight data, rootPath, included providerReviews from detail enrichment, and optional explicit customer reviews. Call ApifyClient("TOKEN").actor("zen-studio/jd-com-search-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: keyword. Optional: category (all, mobile_phones, phone_cases, second_hand_phones, quasi_new_phones, laptops, laptop_accessories, keyboards, running_shoes), maxItems, sort (relevance, popularity, lowest_price, highest_price, recently_updated), minPrice, maxPrice, enrichWithDetails, fetchReviews, maxReviewsPerItem. Defaults: category=all, maxItems=20, enrichWithDetails=true, fetchReviews=false. Category searches and recently_updated scan larger search pages and filter weak keyword matches client-side before detail calls. PPE: product $5.99/1k, detail add-on $5.99/1k, review add-on $4.99/1k before Store discounts. Free tier: 5 lifetime runs, 20 products/run.
Zen Studio China Scrapers   •  JD.com, Taobao, 1688, and Goofish product data
 Taobao ↗
淘宝 prices, SKUs, reviews
 1688 Search ↗
Wholesale product data
 Goofish Search ↗
闲鱼 resale listings

How to Search JD.com

Use English or Chinese JD.com / 京东 / Jingdong product keywords. Common searches include 京东商品, 京东价格, 京东评价, 苹果手机, 笔记本电脑, 机械键盘, 运动鞋, iphone 15, Jingdong, Jindong, and brand terms.

Default enriched products

{
"keyword": "iphone 15"
}

Search-only rows

{
"keyword": "笔记本电脑",
"maxItems": 50,
"enrichWithDetails": false
}

Enriched rows with customer reviews

{
"keyword": "机械键盘",
"maxItems": 10,
"fetchReviews": true,
"maxReviewsPerItem": 20
}

Price range filter

{
"keyword": "iphone 15",
"minPrice": 500,
"maxPrice": 1500,
"sort": "popularity"
}

Category filter

{
"keyword": "iphone 15",
"category": "mobile_phones",
"maxItems": 20
}

Category filtering defaults to all. Non-default categories use tested JD.com leaf category IDs and then apply keyword post-filtering before any detail enrichment or review fetching. This avoids obvious loose matches, but JD.com category metadata is marketplace-controlled, so category runs can return fewer rows than maxItems.

Input Parameters

ParameterTypeDefaultDescription
keywordstringrequiredJD.com product search keyword.
categorystringallOptional tested category slug: all, mobile_phones, phone_cases, second_hand_phones, quasi_new_phones, laptops, laptop_accessories, keyboards, running_shoes. Category runs use keyword post-filtering before detail calls and may return fewer rows.
maxItemsinteger20Maximum products to return. Test runs are capped at 5 products; free-tier runs are capped at 20 products.
sortstringrelevancerelevance, popularity, lowest_price, highest_price, or recently_updated. recently_updated uses marketplace update recency, scans larger search pages, and filters weak keyword matches client-side. It may return fewer rows when the source returns loose recent matches.
minPrice / maxPricenumberblankOptional converted USD price range. Source-side price filtering can be loose, so the actor also enforces this range locally before delivery.
enrichWithDetailsbooleantrueAdds attributes, configured items, delivery costs, promotions, related groups, vendor data, category path, weight data, media, and included provider reviews when available.
fetchReviewsbooleanfalseFetches separate customer review pages and bills only the explicitly fetched reviews.
maxReviewsPerIteminteger20Maximum explicit reviews per product when review fetching is enabled.

One dataset row represents one JD.com product.

  • Product identity: itemId, title, titleOriginal, url, externalUrl, category IDs, search category slug/label, search rank, scrape timestamp.
  • Pricing: price, priceCurrency, priceUSD, priceDetails, promotionPrice, promotionPriceDetails, promotion percentages.
  • Seller and shop: shop, vendorId, vendorName, vendorDisplayName, vendorScore, provider type, location, features, featured values.
  • Media and catalog data: mainPictureUrl, pictures, videos, attributes, configuredItems, deliveryCosts, promotions, relatedGroups, rootPath.
  • Reviews: providerReviews are included when returned with detail enrichment and are not review-billed. reviews are populated only when fetchReviews=true.

Output Example

All top-level fields are shown. Large arrays are shortened with _truncated markers and long URLs are shortened for readability. This example shows a fully enriched row with detail enrichment and explicit reviews enabled.

{
"itemId": "jd-10030391539604",
"url": "https://item.jd.com/10030391539604.html",
"externalUrl": "https://item.jd.com/10030391539604.html",
"taobaoItemUrl": "https://item.jd.com/10030391539604.html",
"title": "东成 Brushless electric drill, electric rechargeable screwdriver, 16v",
"titleOriginal": "东成16V无刷充电钻DCJZ24-10E电动螺丝刀充电式家用...",
"price": "550.0",
"priceCurrency": "CNY",
"priceUSD": "86.42",
"priceDetails": {
"originalPrice": 550.0,
"marginPrice": 550.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 86.42,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 86.42,
"sign": "$",
"code": "USD"
}
]
},
"convertedPrice": "86.42$",
"convertedPriceWithoutSign": "86.42",
"currencySign": "$",
"currencyName": "USD",
"isDeliverable": true,
"deliveryPrice": {
"originalPrice": 0.0,
"marginPrice": 0.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 0.0,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 0.0,
"sign": "$",
"code": "USD"
}
]
}
},
"oneItemDeliveryPrice": {
"originalPrice": 0.0,
"marginPrice": 0.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 0.0,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 0.0,
"sign": "$",
"code": "USD"
}
]
}
},
"priceWithoutDelivery": {
"originalPrice": 550.0,
"marginPrice": 550.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 86.42,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 86.42,
"sign": "$",
"code": "USD"
}
]
}
},
"oneItemPriceWithoutDelivery": {
"originalPrice": 550.0,
"marginPrice": 550.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 86.42,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 86.42,
"sign": "$",
"code": "USD"
}
]
}
}
},
"promotionPrice": null,
"promotionPriceDetails": null,
"promotionPricePercent": [],
"categoryId": "jd-36362",
"externalCategoryId": "36362",
"brandId": "jd-164795",
"brandName": "东成",
"shop": {
"vendorId": "jd-31572",
"vendorName": "通宇五金专营店",
"vendorDisplayName": "通宇五金专营店",
"vendorScore": 19,
"shopName": "通宇五金专营店",
"providerType": "Jd",
"credit": {
"Level": 19,
"Score": 0,
"TotalFeedbacks": 0,
"PositiveFeedbacks": 0
},
"pictureUrl": "https://img30.360buyimg.com/popshop/jfs/t21325/176/2210452309/197...",
"displayPictureUrl": "https://img30.360buyimg.com/popshop/jfs/t21325/176/2210452309/197...",
"email": null,
"location": {},
"features": [],
"featuredValues": {
"shopId": "30478",
"rating": "4.8",
"shopGoodsNum": "612",
"shopLogo": "https://img30.360buyimg.com/popshop/jfs/t21325/176/2210452309/197...",
"starts": "1369267200",
"shopUrl": "https://shop.m.jd.com/?shopId=30478",
"years": "13",
"shopFansNum": "76689"
},
"updatedTime": "2026-05-06T03:16:17.405Z",
"source": {
"id": "jd-31572",
"providerType": "Jd",
"updatedTime": "2026-05-06T03:16:17.405Z",
"name": "通宇五金专营店",
"displayName": "通宇五金专营店",
"shopName": "通宇五金专营店",
"email": "",
"pictureUrl": "https://img30.360buyimg.com/popshop/jfs/t21325/176/2210452309/197...",
"displayPictureUrl": "https://img30.360buyimg.com/popshop/jfs/t21325/176/2210452309/197...",
"location": {},
"credit": {
"level": 19,
"score": 0,
"totalFeedbacks": 0,
"positiveFeedbacks": 0
},
"scores": {
"deliveryScore": 4.8,
"itemScore": 3.6,
"serviceScore": 4.5
},
"features": [],
"featuredValues": [
{
"name": "shopId",
"value": "30478"
},
{
"_truncated": "7 more item(s)"
}
]
}
},
"vendorId": "jd-31572",
"vendorName": "通宇五金专营店",
"vendorDisplayName": "通宇五金专营店",
"vendorScore": 19,
"mainPictureUrl": "https://img1.360buyimg.com/n0/jfs/t1/212230/27/7396/82186/61b37e6...",
"pictures": [
{
"url": "https://img1.360buyimg.com/n0/jfs/t1/212230/27/7396/82186/61b37e6...",
"small": {
"url": "https://img1.360buyimg.com/n4/jfs/t1/212230/27/7396/82186/61b37e6...",
"width": 100,
"height": 100
},
"medium": {
"url": "https://img1.360buyimg.com/n1/jfs/t1/212230/27/7396/82186/61b37e6...",
"width": 350,
"height": 350
},
"large": {
"url": "https://img1.360buyimg.com/n0/jfs/t1/212230/27/7396/82186/61b37e6...",
"width": 800,
"height": 800
},
"isMain": true
},
{
"url": "https://img1.360buyimg.com/n0/jfs/t1/208513/27/12227/82186/61b37e...",
"small": {
"url": "https://img1.360buyimg.com/n4/jfs/t1/208513/27/12227/82186/61b37e...",
"width": 100,
"height": 100
},
"medium": {
"url": "https://img1.360buyimg.com/n1/jfs/t1/208513/27/12227/82186/61b37e...",
"width": 350,
"height": 350
},
"large": {
"url": "https://img1.360buyimg.com/n0/jfs/t1/208513/27/12227/82186/61b37e...",
"width": 800,
"height": 800
},
"isMain": false
},
{
"_truncated": "3 more item(s)"
}
],
"videos": [
{
"previewUrl": "https://jvod.300hu.com/img/2022/139178213/1/img1.jpg",
"url": "https://vod.300hu.com/vod/product/38549ee3-12a5-4506-8019-b508223..."
}
],
"attributes": [
{
"pid": "款式",
"vid": "无刷双速16V(裸机)无电池充电器",
"propertyName": "Style",
"value": "Brushless battery, charger, 16v",
"originalPropertyName": "款式",
"originalValue": "无刷双速16V(裸机)无电池充电器",
"isConfigurator": false
},
{
"pid": "颜色",
"vid": "无刷双速16V(裸机)无电池充电器",
"propertyName": "Color",
"value": "Brushless battery, charger, 16v",
"originalPropertyName": "颜色",
"originalValue": "无刷双速16V(裸机)无电池充电器",
"isConfigurator": false,
"imageUrl": "https://img1.360buyimg.com/n0/jfs/t1/212230/27/7396/82186/61b37e6...",
"miniImageUrl": "https://img1.360buyimg.com/n4/jfs/t1/212230/27/7396/82186/61b37e6..."
},
{
"_truncated": "12 more item(s)"
}
],
"configuredItems": [],
"configuredItemCount": 0,
"deliveryCosts": [
{
"areaCode": "0",
"mode": "default",
"price": {
"originalPrice": 0.0,
"marginPrice": 0.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 0.0,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 0.0,
"sign": "$",
"code": "USD"
}
]
},
"convertedPrice": "0.00$",
"convertedPriceWithoutSign": "0.00",
"currencySign": "$",
"currencyName": "USD",
"isDeliverable": false,
"priceWithoutDelivery": {
"originalPrice": 0.0,
"marginPrice": 0.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 0.0,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 0.0,
"sign": "$",
"code": "USD"
}
]
}
}
},
"startCost": 0.0,
"startWeight": 0.0,
"addWeight": 0.0,
"addCost": 0.0
}
],
"promotions": [],
"relatedGroups": [
{
"type": "Configurations",
"originalName": "款式",
"displayName": "Style",
"items": [
{
"name": "【2 Electric 1 Charging】 Plastic box+multiple accessories",
"id": "jd-10024859357175"
},
{
"_truncated": "6 more item(s)"
}
]
},
{
"type": "Unknown",
"originalName": "",
"displayName": "Related items",
"items": [
{
"name": "【2 Electric 1 Charging】 Plastic box+multiple accessories",
"image": {
"url": "https://img1.360buyimg.com/n0/jfs/t1/212230/27/7396/82186/61b37e6...",
"small": {
"url": "https://img1.360buyimg.com/n4/jfs/t1/212230/27/7396/82186/61b37e6...",
"width": 100,
"height": 100
},
"medium": {
"url": "https://img1.360buyimg.com/n1/jfs/t1/212230/27/7396/82186/61b37e6...",
"width": 350,
"height": 350
},
"large": {
"url": "https://img1.360buyimg.com/n0/jfs/t1/212230/27/7396/82186/61b37e6...",
"width": 800,
"height": 800
},
"isMain": false
},
"price": {
"originalPrice": 512.0,
"marginPrice": 512.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 80.45,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 80.45,
"sign": "$",
"code": "USD"
}
]
},
"convertedPrice": "80.45$",
"convertedPriceWithoutSign": "80.45",
"currencySign": "$",
"currencyName": "USD",
"isDeliverable": true,
"deliveryPrice": {
"originalPrice": 0.0,
"marginPrice": 0.0,
"originalCurrencyCode": "CNY"
},
"oneItemDeliveryPrice": {
"originalPrice": 0.0,
"marginPrice": 0.0,
"originalCurrencyCode": "CNY"
},
"priceWithoutDelivery": {
"originalPrice": 512.0,
"marginPrice": 512.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 80.45,
"sign": "$",
"code": "USD"
},
"displayedMoneys": [
{
"price": 80.45,
"sign": "$",
"code": "USD"
}
]
}
},
"oneItemPriceWithoutDelivery": {
"originalPrice": 512.0,
"marginPrice": 512.0,
"originalCurrencyCode": "CNY",
"convertedPriceList": {
"internal": {
"price": 0.0
},
"displayedMoneys": []
}
}
},
"id": "jd-10024859357175",
"title": "Dongcheng 16V brushless charging drill DCJZ24-10E electric screwdriver charging household electric rotor drill drill [2 electric 1 chargi...",
"originalTitle": "东成16V无刷充电钻DCJZ24-10E电动螺丝刀充电式家用电转钻手电钻 【2电1充】塑箱+多用附件"
},
{
"_truncated": "6 more item(s)"
}
]
},
{
"_truncated": "1 more item(s)"
}
],
"actualWeightInfo": {
"type": "RealByVendor",
"displayName": "Real weight",
"weight": 1.0
},
"weightInfos": [
{
"type": "RealByVendor",
"displayName": "Real weight",
"weight": 1.0
}
],
"physicalParameters": {
"weight": 1.0,
"length": 100.0,
"width": 100.0,
"height": 100.0
},
"location": {},
"features": [
"FakeQuantity",
"Expired"
],
"featuredValues": {},
"rootPath": [
{
"id": "jd-36362",
"providerType": "Jd",
"updatedTime": "2026-04-20T19:59:35.729Z",
"isHidden": false,
"isVirtual": false,
"externalId": "jd-36362",
"name": "Electric drill",
"isParent": true,
"parentId": "jd-36321",
"isInternal": false
},
{
"id": "jd-36321",
"providerType": "Jd",
"updatedTime": "2026-05-09T21:23:59.594Z",
"isHidden": false,
"isVirtual": false,
"externalId": "jd-36321",
"name": "Electrical tools",
"isParent": true,
"parentId": "jd-36320",
"isInternal": false
},
{
"_truncated": "1 more item(s)"
}
],
"providerReviews": [
{
"externalId": "20549463947",
"itemId": "10030391539604",
"configurationId": "10030391539604",
"content": "The bare metal purchased this time is not good, and the screw rods inside are not tight, and often come out!",
"createdDate": "2024-03-06T20:04:06Z",
"userNick": "j***a",
"rating": 5,
"images": [],
"videos": [],
"features": [],
"featuredValues": [
{
"name": "likeCount",
"value": "0"
}
]
},
{
"externalId": "20341200414",
"itemId": "10030391539604",
"configurationId": "10030391539604",
"content": "Bad quality",
"createdDate": "2024-01-08T16:42:50Z",
"userNick": "j***U",
"rating": 5,
"images": [],
"videos": [
{
"previewUrl": "https://img.300hu.com/23/4c1f7a6atransbjngwcloud1oss/08ceed917967...",
"url": "https://vod.300hu.com/23/4c1f7a6atransbjngwcloud1oss/08ceed917967..."
}
],
"features": [],
"featuredValues": [
{
"name": "likeCount",
"value": "0"
}
]
},
{
"_truncated": "8 more item(s)"
}
],
"providerReviewsCount": 10,
"providerReviewsTotalCount": 10,
"reviews": [
{
"externalId": "20549463947",
"itemId": "jd-10030391539604",
"configurationId": "10030391539604",
"orderId": {},
"orderLineId": {},
"createdTime": "2024-03-06T20:04:06Z",
"isApproved": true,
"userName": "j***a",
"rating": 5,
"answers": [],
"imageUrls": [],
"imagePreviewUrls": [],
"videos": [],
"features": [],
"featuredValues": [
{
"name": "likeCount",
"value": "0"
}
],
"text": "The bare metal purchased this time is not good, and the screw rods inside are not tight, and often come out!",
"language": "en",
"originalText": "这次购买的裸机不好,里面的螺丝杆夹不紧,经常出来!",
"originalLanguage": "zh-chs"
},
{
"externalId": "20341200414",
"itemId": "jd-10030391539604",
"configurationId": "10030391539604",
"orderId": {},
"orderLineId": {},
"createdTime": "2024-01-08T16:42:50Z",
"isApproved": true,
"userName": "j***U",
"rating": 5,
"answers": [],
"imageUrls": [],
"imagePreviewUrls": [],
"videos": [
{
"previewUrl": "https://img.300hu.com/23/4c1f7a6atransbjngwcloud1oss/08ceed917967...",
"url": "https://vod.300hu.com/23/4c1f7a6atransbjngwcloud1oss/08ceed917967..."
}
],
"features": [],
"featuredValues": [
{
"name": "likeCount",
"value": "0"
}
],
"text": "Bad quality",
"language": "en",
"originalText": "质量很差",
"originalLanguage": "zh-chs"
},
{
"_truncated": "8 more item(s)"
}
],
"reviewsTotalCount": 10,
"errorCode": "Ok",
"hasError": false,
"providerType": "Jd",
"stuffStatus": "New",
"volume": 0,
"masterQuantity": 200,
"firstLotQuantity": 1,
"nextLotQuantity": 1,
"isSellAllowed": true,
"isFiltered": false,
"isTitleManuallyTranslated": true,
"hasInternalDelivery": true,
"hasHierarchicalConfigurators": false,
"createdTime": "2024-04-25T20:25:50.336Z",
"updatedTime": "2025-11-24T13:27:14.984Z",
"lastUpdatedTime": "2025-11-24T13:27:14.984Z",
"search": {
"requestId": "example-request-id",
"requestTime": "2026-05-14T16:25:00.000Z",
"translatedItemTitle": "electric drill",
"provider": "Jd",
"searchMethod": "SearchItems",
"currentSort": "Default",
"currentFrameSize": 100,
"maximumPageCount": 1000,
"totalCount": 1242,
"categories": {
"content": [
{
"id": "jd-9855",
"name": "Electric drill",
"itemCount": 1242
}
]
},
"searchProperties": null,
"availableSearchMethods": null
},
"searchKeyword": "electric drill",
"searchSort": "relevance",
"searchCategory": "all",
"searchCategoryId": null,
"searchCategoryLabel": "All categories",
"searchRank": 1,
"scrapedAt": "2026-05-15T10:00:00Z",
"_detailEnriched": true,
"_detailError": null,
"_reviewsFetched": true,
"_explicitReviewsFetched": true,
"_reviewsCount": 10
}

Pricing

This Actor uses pay-per-event pricing. You pay for the data level you request. Apify Store discounts may lower these unit prices.

OutputEventBase price
Product rowsearch-result$5.99 / 1,000 products
Detail enrichment add-ondetail-enrichment$5.99 / 1,000 products
Customer review add-onreview$4.99 / 1,000 reviews

The default run returns enriched products without explicit review calls: product row + detail enrichment. Turn off enrichWithDetails for cheaper search-only discovery. Turn on fetchReviews only when review text matters.

Provider reviews already included in detail enrichment are returned for free and do not trigger the review event.

Notes on Filters

JD.com search supports relevance, popularity, low-price, high-price, recently updated, USD price range, and tested category filtering.

recently_updated uses marketplace update recency, then filters weak keyword matches client-side. Category searches also use keyword post-filtering before detail calls. Both modes can return fewer rows than maxItems when source matching is loose.

Price filters are sent to the data source and then enforced locally against priceUSD, because source-side filtering can return occasional out-of-range rows.

Raw categoryId, vendorId, and image search are not exposed in this version.

FAQ

Can I search in Chinese?

Yes. Use Chinese keywords such as 苹果手机, 笔记本电脑, 机械键盘, or 运动鞋.

Can I search in English?

Yes. English product and brand keywords such as iphone 15, laptop, keyboard, and running shoes work.

What is the difference between search-only and enriched output?

Search-only rows include product identity, title, URL, basic price, image, seller name, category IDs, and search metadata.

Enriched rows add attributes, configured items, delivery costs, promotions, related groups, physical dimensions, weight data, vendor/shop details, root category path, media arrays, and included provider reviews when returned.

Are reviews included by default?

Explicit review fetching is off by default because reviews are billed separately.

Provider reviews returned inside detail enrichment are included without review billing.

What happens if product detail is unavailable?

The Actor returns a partial search row with _detailEnriched: false and _detailError set. You are not charged for detail enrichment on that row.

Does maxItems always return exactly that number?

The Actor returns up to maxItems. Actual count depends on how many matching products JD.com returns after keyword, category, sort, price, budget, and free-tier filters.

What currency are prices in?

Original prices are returned in Chinese yuan (CNY). Converted USD values are exposed in priceUSD, priceDetails, delivery costs, and related item prices when conversion data is available.

How does the free tier work?

Free-tier users get 5 lifetime runs, capped at 20 products per run.

Why do some optional fields return null or empty arrays?

JD.com does not expose every field for every product. Empty top-level fields remain stable in the dataset schema; nested arrays can be empty when the upstream product has no data for that block.

Support

Open an issue on the Actor page if a keyword consistently returns empty results, if a field changes type, or if a filter behaves differently than expected.

For reproducible support, include the input JSON and the run ID.