API de Búsqueda de JD.com
Salud de la API
- Salud 24 h
- Normal
- Tiempo medio 24 h
- —
- Saludable / normal
- Disponible
- Limitada
- Casi sin servicio
Últimas 24 horas
Últimos 30 días
Busca productos de JD.com mediante keyword y conserva el item_id de cada resultado para las consultas de un solo producto. El orden y la cobertura corresponden a la respuesta observada, no a un catálogo completo ni a un ranking permanente.
JD.com Búsqueda localiza productos de JD a partir de un término en keyword y devuelve de cada uno el item_id, el título y el título corto, el precio, las ventas y las reseñas tal como las muestra el listado, el porcentaje de valoraciones positivas, la tienda, si lo vende JD directamente, la etiqueta de promoción, los puntos de venta y la ruta de categorías. Responde a qué productos aparecen primero para una búsqueda en JD y quién los vende: sirve para un primer sondeo de precios, para decidir qué fichas seguir y para comparar la venta directa de JD con las tiendas de terceros.
Cada llamada devuelve como mucho cinco productos y no tiene paginación; para cubrir más terreno, lanza varias búsquedas con términos más concretos. sold_count y review_count son el texto que muestra el listado, a menudo una cifra redondeada, y no un recuento exacto, así que no los sumes como números. El item_id de cada fila pasa tal cual a JD.com Detalles del producto, JD.com Reseñas o JD.com Precio del producto.
Precio $1.39 por 1.000 solicitudes ($0.001389 por llamada). Las llamadas fallidas y los resultados vacíos no se cobran. Síncrona. Para tareas lentas añade "mode": "async" al cuerpo, recibe un job_id y consúltalo.
Prompt para IA
Pégalo en tu asistente de IA. Ya incluye los parámetros, los campos de respuesta y una solicitud de ejemplo de este endpoint, así que el asistente puede preguntarte qué necesitas y luego escribir el script.
Ayúdame a escribir un script de recopilación de datos con el endpoint de EveryInfra JD.com: Búsqueda (jd/search).
Contrato del endpoint:
- Solicitud: POST https://api.everyinfra.com/api/v1/social con la cabecera Authorization: Bearer <clave API>. Lee la clave de la variable de entorno EVERYINFRA_API_KEY y no la escribas en el código.
- En el cuerpo de la solicitud, pon platform en jd y action en search, y los parámetros dentro de params.
- Parámetros obligatorios:
- keyword: Texto de búsqueda de productos para la acción search de JD.com. No es un ID de artículo ni un selector de tienda, y los resultados coincidentes no representan necesariamente todo el catálogo.
- Parámetros opcionales:
- limit: Número máximo de filas que devuelve esta llamada, un entero de 1 a 5. Si no lo envías, se usa el valor predeterminado, y una llamada puede devolver menos filas. Los valores mayores devuelven 422 antes de cualquier cobro. (por defecto: 5)
- Devuelve una lista de registros. Campos principales de cada registro: item_id (ID numérico del producto en JD), url, title, short_title (Título corto del producto tal como lo d…), price, currency, sold_count (Cifra de ventas tal como aparece en la…), review_count (Número de reseñas tal como aparece en l…), good_rate (Porcentaje público de valoraciones posi…), shop_id (ID numérico de la tienda en JD), shop_name (Nombre público de la tienda), shop_url (Página pública de la tienda en JD); 17 campos en total, lista completa en https://api.everyinfra.com/api/v1/social/catalog?platform=jd.
- Cuerpo de solicitud de ejemplo:
{
"platform": "jd",
"action": "search",
"params": {
"keyword": "华为手机"
}
}
- Precio: $1.39 por 1.000 solicitudes; los resultados fallidos y vacíos no se cobran.
- Para decenas o cientos de objetivos, añade "mode": "async" al cuerpo: recibes un job_id al instante y consultas GET https://api.everyinfra.com/api/v1/jobs/{job_id} para obtener el resultado.
- Ante un 422, corrige la solicitud con los nombres de parámetros y los valores admitidos que sugiere el error; ante un 429 o un 503, espera lo que indique Retry-After y vuelve a intentarlo.
Antes de escribir código, pregúntame qué objetivos necesito, cuántos, qué campos y en qué formato quiero el resultado; luego confirma conmigo el plan y el coste aproximado.Parámetros de la solicitud
| Nombre | Ubicación | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|---|
Authorization | header | string | Sí | - | Bearer seguido de tu clave de API. Créala en la consola; nunca la pongas en una URL ni en un repositorio de código. |
platform | body | string | Sí | jd | Identificador de la plataforma, valor fijo. |
action | body | string | Sí | search | Identificador de la capacidad, valor fijo. |
keyword | body.params | No declarado | Sí | - | Texto de búsqueda de productos para la acción search de JD.com. No es un ID de artículo ni un selector de tienda, y los resultados coincidentes no representan necesariamente todo el catálogo. |
limit | body.params | integer (1–5) | No | 5 | Número máximo de filas que devuelve esta llamada, un entero de 1 a 5. Si no lo envías, se usa el valor predeterminado, y una llamada puede devolver menos filas. Los valores mayores devuelven 422 antes de cualquier cobro. |
Ejemplos de código
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": "search",
"params": {
"keyword": "华为手机"
}
}'[Definición OpenAPI (JSON)]Los ejemplos leen la clave de la variable de entorno EVERYINFRA_API_KEY; el código copiado nunca contiene tu clave.
Ejemplo de respuesta
Todavía no hay una muestra real para estos parámetros de ejemplo: se muestra la estructura de la respuesta y sus campos según el contrato, con … como marcadores. No es el resultado de una llamada real.
{
"id": "req_…",
"platform": "jd",
"action": "search",
"results": [
{
"item_id": …,
"url": …,
"title": …,
"short_title": …,
"price": …,
"currency": …,
"sold_count": …,
"review_count": …,
"good_rate": …,
"shop_id": …,
"shop_name": …,
"shop_url": …,
"is_jd_self": …,
"promotion": …,
"sell_point": …,
"category_ids": …,
"image_url": …,
"platform": …
}
],
"count": …,
"billing": {
"charged": …,
"charged_usd": …,
"balance_after_usd": …,
…
},
"quota": { … }
}Campos de la respuesta
Los datos están en results. La tabla lista los campos que puede tener cada registro; los valores que la plataforma no muestra nunca se inventan.
| Campo | Significado |
|---|---|
item_id | ID numérico del producto en JD. Desde los resultados de búsqueda puedes pasarlo directamente a detalle, reseñas o precio. |
url | Enlace al registro en la plataforma. |
title | Título. null cuando la plataforma no usa títulos (por ejemplo publicaciones solo de texto). |
short_title | Título corto del producto tal como lo devuelve JD. |
price | Precio como número, sin símbolo de moneda; ver currency. |
currency | Código de moneda del precio (por ejemplo CNY, USD). Si hay price pero currency es null, no supongas una moneda. |
sold_count | Cifra de ventas tal como aparece en la búsqueda (search): texto como 100 000+, no un número exacto de unidades. |
review_count | Número de reseñas tal como aparece en la búsqueda (search): texto que puede estar redondeado, no un recuento exacto. |
good_rate | Porcentaje público de valoraciones positivas que muestra JD. |
shop_id | ID numérico de la tienda en JD. |
shop_name | Nombre público de la tienda. |
shop_url | Página pública de la tienda en JD. |
is_jd_self | Si es un producto de operación propia de JD (JD.com retail). |
promotion | Etiqueta promocional de la lista de productos. |
sell_point | Puntos de venta públicos de la lista de productos. |
category_ids | Ruta de IDs de categoría de JD. |
image_url | URL de imagen: en search, product_detail, shop y skus es la imagen principal (portada) del producto; en description_images es la imagen de descripción de esa fila (la imagen https a tamaño original en el servidor de imágenes de JD). |
platform | Identificador de la plataforma, igual que platform en la solicitud (por ejemplo xiaohongshu, tiktok). |
Preguntas frecuentes
¿Cuántos resultados devuelve una búsqueda y cómo consigo más?
Hasta cinco por llamada, que es también el valor por defecto; limit admite de 1 a 5 y un valor mayor se rechaza antes de ejecutar la búsqueda. No hay page_token ni segunda página. Para reunir más productos de una categoría, divide la búsqueda en variantes más precisas, como marca más modelo o tipo de producto más atributo, y elimina los duplicados por item_id.
¿Cómo leo sold_count, review_count y good_rate?
sold_count y review_count llegan como el texto del listado de JD, que suele redondear las cifras grandes, así que sirven para ordenar a grandes rasgos y no para cálculos exactos. good_rate es el porcentaje público de valoraciones positivas; léelo junto a review_count, porque con pocas reseñas el porcentaje oscila mucho. Para leer las reseñas en sí, pasa el item_id a JD.com Reseñas.
¿Cómo distingo la venta directa de JD de las tiendas de terceros?
Mira is_jd_self: en true, el producto lo vende JD directamente. La tienda de cada fila está en shop_name, con su shop_id y su página pública en shop_url. Al comparar precios y valoraciones, analiza cada grupo por separado en lugar de mezclarlos. Si necesitas todas las variantes de un producto con su precio, usa JD.com Todos los SKU con precio con el mismo item_id.
Errores y facturación
- 401
- Falta la clave o no es válida. La autenticación se comprueba antes que los parámetros, así que las solicitudes sin autenticar no ven el esquema de parámetros.
- 422
- Nombre o valor de parámetro incorrecto. El error enumera los parámetros y valores permitidos de esta capacidad y la opción más cercana; ocurre antes de cualquier cobro.
- 402
- Saldo insuficiente. Recarga primero.
- 429
- Se alcanzó el límite de solicitudes por minuto de la cuenta (todas sus claves API cuentan juntas; antes se aplica el límite propio de una clave si es menor). Espera lo que indique Retry-After y vuelve a intentarlo; un paquete de velocidad en la consola sube el límite.
- 503
- No se pudo completar ahora. Cualquier cargo de la llamada vuelve automáticamente a tu saldo, y el recibo de facturación de la respuesta indica el resultado real, también cuando aún no se conoce. No reenvíes a ciegas.
- 200 vacío
- La solicitud terminó sin datos y no se cobra (billing.reason = empty_result_refunded).
Referencias oficiales
Solo sirven para contrastar objetos y términos. No implican autorización ni respaldo de la plataforma a EveryInfra.
- JD.com JOS y JD Union: objetos de producto y SKU ↗
Los materiales de la plataforma abierta y del programa de afiliación autorizados de JD.com describen objetos de producto y SKU, como nombre, imagen principal, categoría, precio mostrado, logística, estado de venta directa y señales de volumen de pedidos. Esta terminología no demuestra que estén disponibles todas las páginas o campos, que el solicitante tenga acceso ni que EveryInfra implemente la interfaz oficial.
Comprobado el 2026-09-11