# JD.com Product Data Scraper

> JD.com Product Data Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Fetches structured product data (title, brand, status, SKU variants) from JD.com product pages by product ID or URL

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/jd?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/jd-com-product-data-scraper-d5edd048
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UiRglDfEGQjE0e_zEv6T6

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability jd-com-product-data-scraper-d5edd048 -d '<json body>'
```

Example prompt: Can you pull the structured product data for JD item ID 100012043978 from JD.com, including all its color and size SKU variants?

## When to prefer this

Choose this endpoint when you need structured, machine-readable product data from JD.com (京东) specifically — including brand, title, status, and SKU variants — without building your own scraper. It is pay-per-successful-call so failed or empty runs cost nothing, making it safe for exploratory lookups. Prefer it over generic web scrapers when you need JD-specific parsed fields rather than raw HTML.

## Known failure modes

- Invalid or non-existent JD product ID returns empty items array with count 0 (not charged)
- Unreachable or region-blocked JD page returns failed run (not charged)
- Malformed item.jd.com URL may cause empty or error response
- maxItems of 0 with many IDs may return very large payload
- Discontinued or delisted products may return partial data with null fields

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count field, the product type identifier ('jd'), and an array of item rows each containing brand, itemId, status, itemUrl, operation, parentItemId, productTitle, and isSelectedSku fields indicating whether that row is the primary selected SKU or a variant.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "itemId": {
   "type": "string",
   "description": "Optional single JD product ID or item.jd.com URL; combined with itemIds when both are provided."
  },
  "itemIds": {
   "type": "array",
   "description": "One or more numeric JD product IDs or item.jd.com product URLs. Each ID yields one selected product row."
  },
  "maxItems": {
   "type": "integer",
   "default": 100,
   "minimum": 0,
   "description": "Stop after this many distinct SKU rows across all product IDs. Use 0 for no cap."
  },
  "expandVariants": {
   "type": "boolean",
   "default": false,
   "description": "Output additional rows for color, size, or other SKU variants listed on each requested product page. Variant rows carry parent product data; price and stock apply only to the selected SKU."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "brand": null,
    "itemId": null,
    "status": null,
    "itemUrl": null,
    "operation": null,
    "parentItemId": null,
    "productTitle": null,
    "isSelectedSku": null
   }
  ],
  "product": "jd"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/jd-com-product-data-scraper-d5edd048/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
