# JD.com Product Scraper (x402)

> JD.com Product Scraper (x402) is a paid API for AI agents from x402.186-241-26-229.sslip.io, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes structured product data from JD.com (京东) by product ID or URL, returning title, brand, status, SKU variants, and pricing information.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/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-scraper-x402-cb135e76
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_vLyYjO1G1VP-eH8s2nKgi

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-scraper-x402-cb135e76 -d '<json body>'
```

Example prompt: Can you pull the product details for JD item ID 100012043978 — I need the title, brand, and current status, and also expand any color or size variants?

## When to prefer this

Use this endpoint when you need structured product metadata from JD.com (京东) specifically — titles, brands, SKU variants, and availability status — and want pay-per-result pricing where failed or empty scrapes are not billed. Prefer over generic web scrapers when JD-specific structured fields (itemId, isSelectedSku, parentItemId) are needed directly without HTML parsing.

## Known failure modes

- Invalid or non-existent JD product ID returns empty items array with count 0 (no charge)
- Product page blocked or geo-restricted returns empty result (no charge)
- Malformed item.jd.com URL causes request error
- maxItems=0 with large variant sets may return very large payloads
- Network timeout on JD scrape returns failed run (no charge)

## 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 of matched items and an array of product rows, each containing brand, itemId, status (active/inactive), itemUrl, operation result, parentItemId (for variants), productTitle, and an isSelectedSku flag. Only populated rows are returned; failed or empty runs are not charged.

## 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-scraper-x402-cb135e76/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
