JD APIjd.com ↗
Search JD.com products, get recommendations, related keywords, and corporate news via 4 endpoints. Returns SKU, price, ratings, and shop data.
What is the JD API?
The JD.com API exposes 4 endpoints covering product search, recommendations, related keyword discovery, and corporate newsroom content from one of China's largest e-commerce platforms. The search_products endpoint returns paginated product listings with fields like sku_id, price, comment_count, good_rate, and shop_id — giving developers structured access to live catalog data without building a custom crawler.
curl -X GET 'https://api.parse.bot/scraper/1ee95c11-c5ec-44b3-a893-7f64c6f4e6c0/search_products?page=1&query=%E6%89%8B%E6%9C%BA' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace jd-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: JD.com SDK — search products, explore recommendations, discover keywords, read news."""
from parse_apis.jd_com_api import JD, Product, Recommendation, NewsArticle, ProductSearchFailed
client = JD()
# Search for smartphones — limit caps total items fetched across all pages.
for product in client.products.search(query="手机", limit=5):
print(product.title, product.price, product.comment_count)
# Drill into one product from search results.
product = client.products.search(query="笔记本电脑", limit=1).first()
if product:
print(product.sku_id, product.title, product.good_rate)
# Discover related keywords for a search term.
for kw in client.products.related_keywords(query="手机", limit=5):
print(kw)
# Browse product recommendations for a keyword.
rec = client.recommendations.list(query="耳机", limit=1).first()
if rec:
print(rec.sku_id, rec.title, rec.price)
# Fetch latest corporate news articles.
try:
for article in client.newsarticles.list(max_articles=3, limit=3):
print(article.title, article.created, article.categories)
except ProductSearchFailed as exc:
print(f"Search failed: {exc}")
print("exercised: products.search / products.related_keywords / recommendations.list / newsarticles.list")
Full-text product search on JD.com. Matches the query keyword against product titles. Returns products with pricing, ratings, and comment counts. Paginates via integer page number; stops on first empty page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| queryrequired | string | Search keyword (e.g. '手机', '笔记本电脑'). |
{
"type": "object",
"fields": {
"page": "integer, the requested page number",
"query": "string, the search keyword used",
"products": "array of product objects with sku_id, title, price, image_url, click_url, comment_count, good_rate, and shop_id"
},
"sample": {
"data": {
"page": 1,
"query": "手机",
"products": [
{
"price": "4299.00",
"title": "蔡司陆地8x32手机望远镜高清镀膜大视野大口径双筒林业户外观鸟演唱会",
"sku_id": "100050973863",
"shop_id": 1000451565,
"click_url": "https://ccc-x.jd.com/dsp/nc?ext=abc",
"good_rate": 97,
"image_url": "https://img10.360buyimg.com/n1/jfs/t1/422944/9/18516/99691/69ef0cc7F8e3b668f/0083320320f59272.jpg",
"comment_count": "1000+"
}
]
},
"status": "success"
}
}About the JD API
Product Search and Recommendations
The search_products endpoint accepts a required query string (e.g. 手机 or 笔记本电脑) and an optional page integer for pagination. Each product object in the products array includes sku_id, title, price, image_url, click_url, comment_count, good_rate, and shop_id. The get_product_recommendations endpoint takes the same parameters but returns a recommendations array — note that results are not strictly filtered to the query keyword, so the response may include loosely related items.
Related Keywords and Search Intelligence
The get_related_keywords endpoint takes a single query string and returns a keywords array of related search terms as strings. This is useful for expanding keyword sets for price monitoring tools, SEO research targeting the Chinese market, or building autocomplete features that align with JD.com's own search behavior.
Corporate News
The get_corporate_news endpoint (POST) pulls articles from JD.com's corporate newsroom. Each article object in the news array includes id, title, excerpt, categories, banner, alt_banner, and a created Unix timestamp. An optional limit integer caps the number of returned articles. This endpoint covers investor relations content, product announcements, and company updates.
The JD API is a managed, monitored endpoint for jd.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jd.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official jd.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor price changes on specific JD.com SKUs by polling
search_productswith targeted queries - Build a product comparison tool using
sku_id,price, andgood_ratefields from search results - Expand Chinese-language keyword lists for SEO or ad campaigns using
get_related_keywords - Track JD.com corporate announcements and press releases via
get_corporate_newswithcreatedtimestamps - Aggregate seller data by collecting
shop_idvalues across paginated search results - Surface similar product suggestions in a shopping app using
get_product_recommendations - Research consumer sentiment signals using
comment_countandgood_rateacross product categories
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does JD.com have an official developer API?+
What does `search_products` return that `get_product_recommendations` does not?+
search_products returns comment_count and good_rate fields per product, which indicate review volume and positive rating percentage. The get_product_recommendations response omits those fields, returning only sku_id, title, price, image_url, click_url, and shop_id.Are product reviews or individual review text available through this API?+
comment_count and good_rate as aggregate signals but does not return individual review text, reviewer profiles, or star breakdowns. You can fork it on Parse and revise to add a review-detail endpoint.Does the API cover product inventory or stock status?+
How does pagination work across the search endpoints?+
search_products and get_product_recommendations accept an optional page integer. The response echoes the requested page value alongside the results array. There is no total_pages or total_results field returned, so you would need to increment the page parameter and detect an empty results array to determine the last page.