JD.com product data: APIs, SKU IDs and price context
A source-specific JD.com guide to merchant API and JD Union access, product IDs, price and tax fields, regional stock signals, and reuse terms.
Start with the JD identifier and record type
JD's merchant product-search reference uses wareId for its product ID and warePId for an optional product SPU ID. Neither is interchangeable with SKU IDs used by separate price and stock calls. The search request's mergeSku option also changes whether specification SKUs appear separately. Keep the endpoint, identifier and merge choice with each row so a joined record identifies the object it actually represents.
Scroll to compare →
| Identifier or setting | What JD documents | How to preserve its meaning |
|---|---|---|
| wareId | Product ID returned by the merchant search endpoint. | Scope it to the endpoint and product record; do not treat it as a SKU. |
| warePId | Optional product SPU ID that can group related product details. | Use as product-family context, not as a seller offer or variant key. |
| SKU ID | A variant identifier used by separate merchant price/stock calls and JD Union promotion queries. | Join only using the key documented for that endpoint and retain its source context. |
| mergeSku | The search request can merge different specification SKUs or return them separately. | For variant-level comparisons, request separate SKUs when authorized and store the setting used. |
| Category and status | Search responses can include brand, category IDs/names, Wstate and Wyn. | Keep returned values and observation time; do not infer universal availability from a listing status. |
Select the access route before comparing products
JD documents separate merchant and affiliate interfaces rather than one anonymous API for every marketplace product. Its 2026 platform-migration notice directs new merchant integrations to the JD Merchant Open Platform and lists JD Union as a separate vertical platform; the notice also set a legacy JOS closure date of August 30, 2026. Check the current portal and eligibility for the program you intend to use.
Scroll to compare →
| Route | Documented scope | Do not infer |
|---|---|---|
| Merchant Open Platform | Merchant integrations use account/app authorization for the specific operations and data scopes JD grants. | That merchant access covers other sellers or every shopper-facing search result. |
| JD Union | Affiliate-media APIs can return selected promotion-product details by SKU, including name, main image, category, price, logistics, self-operated status and 30-day tracked order count. | The response is every marketplace offer or a complete measure of all product sales. |
| Public JD.com product page | A shopper-facing view of a listing and its current offer context. | Visibility grants automated access or permission to reuse page content. |
| Merchant product-pool price API | The documented price endpoint looks up SKUs in the authorized customer's product pool. | A public retail-price feed for products outside that customer's pool. |
Read sale price with its contract and tax mode attached
JD's merchant sale-price API queries products in the authorized customer's product pool and accepts up to 100 SKU IDs per request. Its price follows that customer's contract and tax-ordering mode; the other price fields have separate reference or tax-display meanings. Keep the SKU, customer/program context, currency, tax mode and retrieval time with every price observation.
Scroll to compare →
| Field or limit | Meaning in JD's reference | Comparison rule |
|---|---|---|
| price | Merchant sale price under the customer's contract and tax-ordering mode. | Do not label it as a universal public price; preserve contract context, currency and time. |
| jdPrice | JD price marked as reference-only. | Do not present it as a final checkout price or contracted merchant amount. |
| marketPrice | Front-end strikethrough price; the reference says only the book channel may display it under current policy. | Do not display it for other categories as a market or comparison price. |
| tax / taxPrice | Returned when the containsTax extension is requested; taxPrice is an estimated tax amount. | Record the requested extension and avoid treating an estimate as a settled invoice amount. |
| nakedPrice | With containsTax, an estimated ex-tax display value; in a configured tax-excluded ordering mode it can equal price. The separate nakedPrice request extension is documented as deprecated. | Do not call the tax-included-mode estimate the final invoice unit price; freight allocation and rounding can change it. |
| Request size | A batch request supports up to 100 products. | Keep batch boundaries when reconciling authorized SKU results. |
Interpret availability by SKU, requested region and time
JD's merchant stock API takes a SKU and a selected region; its response is a point-in-time state for that request. It distinguishes the availability state from a remaining quantity, and remainNum: -1 is not itself an in-stock or out-of-stock signal. Preserve the returned state description, location code and query time instead of converting a regional response into a nationwide stock count.
Scroll to compare →
| Response value | What JD documents | Safe interpretation |
|---|---|---|
| area | The requested three- or four-level region for the inventory lookup. | Store the full location code; another destination can return a different state. |
| stockStateId / description | States include 33 (in-stock, ships promptly), 39 (in transit), 40 (can be allocated), 36 (reservation) and 34 (out of stock). | Retain JD's state and description; do not collapse different fulfillment states into a single exact quantity. |
| remainNum | For state 33, a quantity may be returned when actual stock is at or below 200; above 200 it is masked as -1. Other states also return -1. | Use stockStateId for the availability state. -1 does not tell you whether the item is in stock. |
| skuNums and requested amount | The batch stock call accepts SKU IDs with requested quantities and checks them for the selected region. | Keep the request quantity with the response; this is not a national inventory total. |
| Observation time | A result describes the state returned for that SKU and area at query time. | Do not treat it as a later delivery guarantee or another variant's status. |
Confirm JD.com access and reuse terms before a data workflow
JD's current User Service Agreement took effect on January 20, 2026. Section 6(4) restricts copying or changing site/runtime interaction data through non-JD-authorized tools absent a legal exception or written permission; section 6(6) addresses third-party software used to log in to or use the service. Section 9(6) addresses unlawful copying, reuse and crawling, subject to legal exceptions or special written consent. Apply the clauses to the specific method and dataset; do not treat an API credential as permission for uses outside its program terms.
Scroll to compare →
| Before using JD.com data | Why the context matters | What to verify or retain |
|---|---|---|
| Merchant API access | JD's current platform entry and eligible merchant/app relationship govern the available endpoints and scopes. | Confirm current merchant-platform onboarding, account authorization, API scope and token ownership. |
| JD Union access | Affiliate promotion-data fields serve a separate media/program workflow from merchant catalog and inventory APIs. | Confirm program eligibility, approved API methods, attribution context and reuse terms. |
| Public-page collection or reuse | The user agreement has separate rules for site interaction and content reuse; a public URL is not an authorization grant. | Review the current agreement and applicable legal basis or written permission for the planned method and use. |
| Price and stock display | JD says visible product prices can be invitations to offer, may be wrong or unavailable, and vary with buyer and destination context. | Keep the source, selected SKU, destination, price conditions and observation time; recheck before acting on a quote. |
| Account and order information | Account, delivery and order records can contain personal information and are distinct from public product fields. | Exclude them from public-product comparisons unless a specific authorized purpose and safeguards apply. |
Content reviewed 2026-10-04.