API de Búsqueda de Xianyu

POST

Salud de la API

Salud 24 h
Normal
Tiempo medio 24 h
—
  • Saludable / normal
  • Disponible
  • Limitada
  • Casi sin servicio
Normal

Envía en keyword un término en chino o un número de modelo, que coinciden más con los títulos de los vendedores; limit admite de 1 a 50 resultados. Cada fila trae item_id, price, city, want_count y posted_at; guarda item_id para leer después el anuncio completo.

Xianyu Búsqueda encuentra anuncios de segunda mano en Xianyu a partir de un término en keyword y devuelve de cada uno el título, el precio, el precio original que indicó el vendedor, la ciudad o provincia, cuántas personas lo quieren, las etiquetas de la tarjeta, si el envío es gratis, si es una subasta, si incluye video y la fecha de publicación, además del apodo, el ID y el nivel de crédito del vendedor. Responde a cuánto se vende algo de segunda mano y si tiene salida: lo usan quienes estudian precios de reventa, fijan precios de recompra o vigilan los anuncios de un modelo concreto.

Escribe en keyword términos en chino o números de modelo, que coinciden más a menudo con los títulos de los vendedores que una traducción al inglés. Sin limit llegan 20 anuncios y puedes pedir hasta 50, sin paginación. Antes de estimar precios, aparta las subastas: con is_auction en true, price es la puja actual. original_price es una cifra que pone el propio vendedor y puede faltar.

Precio $5.56 por 1.000 solicitudes ($0.005556 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 Xianyu: Búsqueda (xianyu/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 xianyu y action en search, y los parámetros dentro de params.
- Parámetros obligatorios:
  - keyword: Término de búsqueda de Xianyu para search, de 1 a 100 caracteres. Los términos en chino y los números de modelo coinciden más con los títulos de los vendedores que las traducciones al inglés.
- Parámetros opcionales:
  - limit: Número máximo de filas que devuelve esta llamada, un entero de 1 a 50. Si no lo envías, se usa el valor predeterminado, y una llamada puede devolver menos filas. (por defecto: 20)
- Devuelve una lista de registros. Campos principales de cada registro: item_id (ID numérico del anuncio en Xianyu (cade…), url, title, price, original_price (Precio original indicado por el vendedo…), currency, city (Ubicación del anuncio a nivel de ciudad…), image_url, want_count (Número de usuarios que marcaron que qui…), tags (Todas las etiquetas de la tarjeta con s…), category_id (Identificador de la categoría de Xianyu…), free_shipping (Indica si el envío es gratuito); 19 campos en total, lista completa en https://api.everyinfra.com/api/v1/social/catalog?platform=xianyu.
- Cuerpo de solicitud de ejemplo:
{
  "platform": "xianyu",
  "action": "search",
  "params": {
    "keyword": "iPhone 15"
  }
}
- Precio: $5.56 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

NombreUbicaciónTipoObligatorioPor defectoDescripción
AuthorizationheaderstringSí-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.
platformbodystringSíxianyuIdentificador de la plataforma, valor fijo.
actionbodystringSísearchIdentificador de la capacidad, valor fijo.
keywordbody.paramsNo declaradoSí-Término de búsqueda de Xianyu para search, de 1 a 100 caracteres. Los términos en chino y los números de modelo coinciden más con los títulos de los vendedores que las traducciones al inglés. No es un ID de artículo ni el nombre de un vendedor.
limitbody.paramsinteger (1–50)No20Número máximo de filas que devuelve esta llamada, un entero de 1 a 50. 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

bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "xianyu",
  "action": "search",
  "params": {
    "keyword": "iPhone 15"
  }
}'

[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

Respuesta real

Obtenida el 29 de septiembre de 2026, 22:32 (UTC) llamando a esta API con los parámetros del ejemplo de código de arriba. results y count son la respuesta real de esa llamada, sin información personal (nombres, usuarios, avatares, enlaces de perfil, datos de contacto); la lista conserva los primeros 2. id, billing y quota cambian en cada llamada, por eso solo se muestra su estructura.

json
{
  "id": "req_…",
  "platform": "xianyu",
  "action": "search",
  "results": [
    {
      "item_id": "1089122948858",
      "url": "https://www.goofish.com/item?id=1089122948858",
      "title": "滋滋【福利疯抢】iPhone 15 盲盒随机打包手机、平板、电脑,九九新几乎全新,不指定、不挑选,完美主义者请勿下单,要求较多的急单的勿扰勿拍! ✅ 评论区随心许愿,快递随机取件发货✅ 1人1单,邮费自理,请自觉下单✅ 客服回复不及时还请谅解!商品有在就都可以下单购买 宝宝",
      "price": 1.13,
      "currency": "CNY",
      "city": "重庆",
      "image_url": "https://img.alicdn.com/bao/uploaded/i1/2222991832241/O1CN01RndZ4wTqacI2Qw7p_!!4611686018427385009-0-xy_item.jpg",
      "want_count": 2,
      "tags": [
        "13小时前发布",
        "freeShippingIcon"
      ],
      "category_id": "50023914",
      "free_shipping": true,
      "is_auction": false,
      "has_video": false,
      "posted_at": "2026-09-29T09:02:03+00:00",
      "seller_name": "(已隐去)",
      "platform": "xianyu"
    },
    {
      "item_id": "1073624434319",
      "url": "https://www.goofish.com/item?id=1073624434319",
      "title": "出苹果15 iPhone15 国行256g 因为换手机了,太多了手机用不过来 随缘出,机况如图,电池77%这样 自己看哈",
      "price": 500,
      "currency": "CNY",
      "city": "上海",
      "image_url": "https://img.alicdn.com/bao/uploaded/i2/2222827391527/O1CN011onH6VJOZXL1jFqC_!!4611686018427382311-0-xy_item.jpg",
      "want_count": 270,
      "tags": [
        "Apple/苹果",
        "256GB",
        "无任何维修"
      ],
      "category_id": "50025386",
      "free_shipping": true,
      "is_auction": false,
      "has_video": false,
      "posted_at": "2026-08-12T13:09:19+00:00",
      "seller_name": "(已隐去)",
      "platform": "xianyu"
    }
  ],
  "count": 20,
  "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.

CampoSignificado
item_idID numérico del anuncio en Xianyu (cadena); se puede pasar tal cual en urls de item_detail.
urlEnlace al registro en la plataforma.
titleTítulo. null cuando la plataforma no usa títulos (por ejemplo publicaciones solo de texto).
pricePrecio como número, sin símbolo de moneda; ver currency.
original_pricePrecio original indicado por el vendedor, en yuanes; null si no lo indicó.
currencyCódigo de moneda del precio (por ejemplo CNY, USD). Si hay price pero currency es null, no supongas una moneda.
cityUbicación del anuncio a nivel de ciudad, tal como la muestra Xianyu; algunos anuncios solo muestran la provincia. La ubicación más precisa, si el anuncio la tiene, va en district, lat, lng y poi_name.
image_urlEnlace de imagen. Las capacidades con varias imágenes pueden devolver una lista image_urls.
want_countNúmero de usuarios que marcaron que quieren el artículo. En la búsqueda sale de la etiqueta de la tarjeta y vale null cuando la tarjeta no la muestra; null no equivale a 0.
tagsTodas las etiquetas de la tarjeta con su texto original, como nuevo, envío gratis, marca o bajada de precio, y también las del vendedor (crédito, verificación de identidad, última visita, años en Xianyu); el número de interesados va aparte en want_count. Lista vacía si no hay etiquetas.
category_idIdentificador de la categoría de Xianyu (cadena).
free_shippingIndica si el envío es gratuito.
is_auctionIndica si el anuncio es una subasta; en ese caso price es la puja actual.
has_videoIndica si el anuncio incluye un vídeo.
posted_atFecha de publicación en ISO 8601, UTC (por ejemplo 2026-08-07T12:34:56+00:00). Las cadenas no estándar de la plataforma se transmiten tal cual, así que conviene analizarlas con tolerancia. null significa que la plataforma no la publica.
seller_idID numérico del vendedor (cadena).
seller_nameApodo del vendedor. Xianyu lo enmascara en parte para las visitas sin sesión y se devuelve tal como aparece en la página.
seller_avatar_urlEnlace a la foto de perfil del vendedor.
seller_credit_labelNivel de crédito del vendedor tal como aparece en la tarjeta de búsqueda, por ejemplo «excelente».
platformIdentificador de la plataforma, igual que platform en la solicitud (por ejemplo xiaohongshu, tiktok).

Preguntas frecuentes

¿Qué indica want_count y por qué a veces es null?

Es el número de usuarios que marcaron que quieren el artículo, tomado de la tarjeta del anuncio. Vale null cuando la tarjeta no muestra esa cifra, y null no significa cero. Compáralo con posted_at: muchos interesados en un anuncio publicado hace poco señalan demanda real, mientras que un anuncio antiguo acumula interesados con el paso del tiempo.

¿Qué información del vendedor obtengo?

seller_id, seller_avatar_url y seller_credit_label, el nivel de crédito tal como aparece en la tarjeta, además de las etiquetas de vendedor que vienen dentro de tags, como la verificación de identidad o la última visita. seller_name llega enmascarado en parte, igual que lo muestra Xianyu sin sesión iniciada. Para ver el anuncio completo, pasa el item_id a Xianyu Detalles del anuncio.

¿Cómo reúno más de 50 anuncios de un mismo producto?

Una llamada devuelve como máximo 50 con limit y no hay page_token. Divide la búsqueda en variantes, como modelo más capacidad, modelo más estado o el nombre del producto escrito como lo suelen poner los vendedores, junta los resultados y quita los duplicados por item_id. Si una variante no devuelve filas, esa llamada no se cobra.

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).