API JD.com Сведения о товаре
Состояние API
- Состояние за 24 ч
- Норма
- Среднее время за 24 ч
- —
- Стабильно / норма
- Доступно
- Ограничено
- Почти недоступно
Последние 24 часа
Последние 30 дней
Получите полную запись товара JD.com по одному item_id. В ней есть бренд, модель, цена и исходная цена, статус наличия, варианты, штрихкод, гарантия и статус JD Logistics. Если price_masked равно true, отображаемая цена неточная. Значение null для наличия означает «не указано», а не ноль.
Возможность «Сведения о товаре JD.com» возвращает сведения об одном товаре JD по item_id: название, бренд и модель, цену и исходную цену, доступность, состояние остатков, все изображения товара, варианты, штрихкод, текст о происхождении и гарантии, а также магазин, продаёт ли товар JD напрямую и доставляет ли его JD Logistics. Используйте её, чтобы узнать, сколько товар стоит прямо сейчас, можно ли его купить и кто его доставляет: для мониторинга цен, сбора характеристик товаров конкурентов и обогащения каталога.
Передайте числовой ID товара или простую ссылку на страницу товара item.jd.com без параметров запроса и фрагмента; новые непрозрачные ссылки на товары не принимаются. Прежде чем читать цену, проверьте price_masked: JD показывает цены только после входа или при выполнении условий членства, и если значение true, price_display не содержит точную цену продажи. available и unavailable_reason показывают, можно ли купить товар сейчас.
Цена: $1.39 за 1 000 запросов ($0.001389 за вызов). Неудачные вызовы и пустые результаты не оплачиваются. Синхронный режим. Для долгих задач добавьте в тело запроса "mode": "async", получите job_id и опрашивайте статус.
Промпт для ИИ
Помогите мне написать скрипт для сбора данных через эндпоинт EveryInfra JD.com Сведения о товаре (jd/product_detail).
Как работает эндпоинт:
- Запрос: POST https://api.everyinfra.com/api/v1/social с заголовком Authorization: Bearer <API key>. Читайте ключ из переменной окружения EVERYINFRA_API_KEY и никогда не прописывайте его в коде.
- В теле запроса укажите platform: jd и action: product_detail, а параметры передайте в params.
- Обязательные параметры:
- item_id: Определяет один товар JD.com для product_detail, reviews или product_price. Передайте строку цифр, которую возвращает search, или канонический устаревший URL https://item.jd.com/<digits>.html без строки запроса и фрагмен…
- Возвращает один объект. Основные поля: item_id (Числовой ID товара JD), url, title, price, price_display (Строка цены точно в том виде, как она о…), price_masked (Замаскировал ли JD цену на странице тов…), currency, available (Можно ли было купить товар на момент по…), unavailable_reason (Причина недоступности товара для продаж…), shop_id (Числовой ID магазина JD), shop_name (Публичное название магазина), shop_url (Публичная страница магазина JD); всего полей: 31, полный список: https://api.everyinfra.com/api/v1/social/catalog?platform=jd.
- Пример тела запроса:
{
"platform": "jd",
"action": "product_detail",
"params": {
"item_id": "https://item.jd.com/100012043978.html"
}
}
- Цена: $1.39 за 1 000 запросов; неудачные и пустые результаты не оплачиваются.
- Для десятков или сотен целей добавьте в тело запроса "mode": "async": вы сразу получите job_id и сможете опрашивать GET https://api.everyinfra.com/api/v1/jobs/{job_id}, чтобы получить результат.
- При ответе 422 исправьте запрос, используя предложенные в ошибке имена параметров и допустимые значения; при ответе 429 или 503 подождите указанное в Retry-After время и повторите попытку.
Прежде чем писать код, спросите меня, какие цели мне нужны, сколько их будет, какие поля мне нужны и в каком формате вывести результат; затем согласуйте со мной план и примерную стоимость.Параметры запроса
| Имя | Расположение | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|---|
Authorization | header | string | Да | - | Укажите Bearer, а после него — ваш API-ключ. Создайте ключ в консоли; никогда не указывайте его в URL и не храните в репозитории кода. |
platform | body | string | Да | jd | Идентификатор платформы, фиксированное значение. |
action | body | string | Да | product_detail | Идентификатор возможности, фиксированное значение. |
item_id | body.params | string | Да | - | Определяет один товар JD.com для product_detail, reviews или product_price. Передайте строку цифр, которую возвращает search, или канонический устаревший URL https://item.jd.com/<digits>.html без строки запроса и фрагмента; произвольные, непрозрачные URL и URL с других хостов не считаются равнозначными идентификаторами товара. |
Примеры кода
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "jd",
"action": "product_detail",
"params": {
"item_id": "https://item.jd.com/100012043978.html"
}
}'Спецификация OpenAPI (JSON)Примеры читают ключ из переменной окружения EVERYINFRA_API_KEY; скопированный код никогда не содержит ваш ключ.
Пример ответа
Получено October 24, 2026 at 18:28 (UTC) вызовом этого API с параметрами из примера кода выше. results и count — реальный ответ этого вызова, из которого удалены персональные данные (имена, никнеймы, аватары, ссылки на профили, контакты). id, billing и quota меняются при каждом вызове, поэтому показана только их структура.
{
"id": "req_…",
"platform": "jd",
"action": "product_detail",
"results": {
"item_id": "100012043978",
"url": "https://item.jd.com/100012043978.html",
"title": "茅台飞天 53%vol 500ml 贵州茅台酒(带杯)【需预约购买】",
"price": 1041,
"price_display": "1??9",
"currency": "CNY",
"available": false,
"shop_id": "1000475228",
"shop_name": "贵州茅台",
"shop_url": "https://mall.jd.com/index-1000475228.html",
"category_id": "9435",
"stock": 156,
"stock_state": "out_of_stock",
"color": "1759(需预约)",
"size": "单瓶装",
"weight": "1.1kg",
"image_url": "https://img14.360buyimg.com/n1/jfs/t1/498128/6/14354/78100/6a8678aeFd76e6a0c/008332032059c4fa.jpg",
"image_urls": [
"https://img14.360buyimg.com/n1/jfs/t1/498128/6/14354/78100/6a8678aeFd76e6a0c/008332032059c4fa.jpg",
"https://img14.360buyimg.com/n1/jfs/t1/442358/22/5618/62044/6a17b873F63dd4c14/00833203206f6884.jpg",
"https://img14.360buyimg.com/n1/jfs/t1/538344/32/1045/88182/6aba0a86F8862dac1/00833203209ef461.jpg"
],
"brand": "茅台",
"model": "白酒",
"original_price": 1041,
"upc": "•••;•••",
"warranty": "无质保",
"product_area": "贵州仁怀",
"is_jd_express": false,
"variant_count": 9,
"variants": [
{
"sku_id": "100278756721",
"image_url": "https://img14.360buyimg.com/n1/jfs/t1/442358/22/5618/62044/6a17b873F63dd4c14/00833203206f6884.jpg"
},
{
"sku_id": "100153291833",
"image_url": "https://img14.360buyimg.com/n1/jfs/t1/538344/32/1045/88182/6aba0a86F8862dac1/00833203209ef461.jpg"
},
{
"sku_id": "100371797016",
"image_url": "https://img14.360buyimg.com/n1/jfs/t1/545564/17/1981/187886/6accddbdFb7d949e4/0083320320d24f2b.png"
}
],
"platform": "jd"
},
"billing": {
"charged": …,
"charged_usd": …,
"balance_after_usd": …,
…
},
"quota": { … }
}Поля ответа
Бизнес-данные находятся в results. В таблице перечислены поля, которые может содержать запись; значения, которые платформа не показывает, никогда не выдумываются.
| Поле | Значение |
|---|---|
item_id | Числовой ID товара JD. Из результатов поиска его можно сразу передать при запросе сведений о товаре, отзывов или цены. |
url | Ссылка на запись на платформе. |
title | Заголовок. null, если на платформе нет заголовков (например, у текстовых постов). |
price | Цена числом без символа валюты; см. currency. |
price_display | Строка цены точно в том виде, как она отображается на странице JD; цена может быть замаскирована в зависимости от авторизации или статуса участника. |
price_masked | Замаскировал ли JD цену на странице товара. Если true, не считайте price_display точной ценой сделки. |
currency | Код валюты цены (например, CNY, USD). Если price есть, а currency равно null, не делайте предположений о валюте. |
available | Можно ли было купить товар на момент получения данных (записи product_detail, product_price и shop); false, если товара не было в наличии, null, если на странице это не было указано. |
unavailable_reason | Причина недоступности товара для продажи, которую показывает JD. |
shop_id | Числовой ID магазина JD. |
shop_name | Публичное название магазина. |
shop_url | Публичная страница магазина JD. |
category_id | ID конечной категории товара JD (product_detail). |
category | Название категории во внутренней классификации платформы. Категории разных платформ не унифицированы. |
stock | Остаток, который JD показывает публично; null означает, что на странице его нет, а не ноль. |
stock_state | Код статуса наличия, который показывает JD. |
color | Цвет (или отделка) этого SKU, как указано на странице JD. |
size | Размер, объём или значение характеристики этого SKU, как указано на странице JD. |
weight | Вес товара, как указано на странице JD (product_detail); null, если на странице его нет. |
image_url | URL изображения: в search, product_detail, shop и skus это основное изображение (обложка) товара; в description_images это изображение описания из этой записи (полноразмерное изображение с HTTPS-адресом на хостинге изображений JD). |
image_urls | URL изображений галереи товара (включая обложку, в порядке отображения на странице JD). Поле image_url содержит первое из них. Длинных изображений из блока описания здесь нет; получите их через description_images. |
is_jd_self | Продаётся ли товар непосредственно JD (розничным подразделением JD.com). |
brand | Бренд товара. |
model | Номер модели товара. |
original_price | Базовая (исходная) цена, которую показывает JD; может отличаться от акционной. null, если на странице её нет. |
upc | Штрихкод товара (UPC/EAN). null, если на странице его нет. |
warranty | Условия гарантии в том виде, как они указаны на странице. |
product_area | Место происхождения. |
is_jd_express | Доставляется ли товар через JD Logistics. |
variant_count | Число вариантов (SKU). null, если вариантов нет или значение не предоставлено. Во всех записях skus указано одно и то же значение: если оно превышает число возвращённых записей, список был сокращён из-за значения limit либо часть SKU в этот раз получить не удалось. |
variants | Список вариантов. Каждый элемент содержит название, ID SKU, цену, остаток, статус наличия и, если доступен, URL изображения; null, если вариантов нет или данные не предоставлены. |
platform | Идентификатор исходной платформы. Совпадает со значением platform в запросе (например, xiaohongshu, tiktok). |
FAQ
Какие форматы принимает item_id?
Числовой ID товара JD или https://item.jd.com/<number>.html без строки запроса и фрагмента. Новые непрозрачные ссылки вида /product/ не принимаются. item_id из результатов поиска JD подходит как есть.
Почему цена иногда скрыта?
JD показывает цены на страницах товаров только после входа или при выполнении условий членства. Если price_masked равно true, price_display содержит текст со страницы, а не точную цену продажи, поэтому при отслеживании цен помечайте такие записи отдельно.
Как понять, что товар недоступен?
Смотрите available, текущий статус продажи. Если товар нельзя купить, unavailable_reason содержит причину, указанную на JD. stock_state — публичный код статуса наличия JD; его стоит сохранять вместе с остальными данными, если вы отслеживаете доступность во времени.
Ошибки и оплата
- 401
- Ключ отсутствует или недействителен.
- 402
- Недостаточно средств на балансе. Сначала пополните баланс.
- 422
- Недопустимое имя или значение параметра. Исправьте запрос по подсказкам в сообщении об ошибке. Без списания.
- 429
- Достигнут лимит запросов в минуту. Подождите указанное в Retry-After время, затем повторите попытку.
- 503
- Не удалось выполнить. Зарезервированная сумма возвращается на баланс. Если результат неизвестен, проверьте его перед повторной попыткой.
- 200 (пусто)
- Нет данных. Без списания.
Официальные источники
Используются только для проверки объектов и терминов. Они не означают, что платформа разрешила или одобрила работу EveryInfra.
- JD.com: обозначения отображаемой цены и цены покупки, зависящие от условий ↗
JD.com отличает ценовую метку, отображаемую в реальном времени, от итоговой цены товара и специальных условий для участников программы, новых пользователей и отдельных регионов, а также персональных предложений. При этом часть сравнительной информации может поступать с задержкой или быть неполной. Возвращённую цену следует считать снимком отображаемой цены на момент запроса, а не персональной ценой сделки, суммой к оплате или гарантией абсолютной точности.
Проверено 2026-09-11