https://valuabot.com
API REST de Búsqueda y Valuación Prendaria — Valuabot
El API REST de Valuabot permite consultar en tiempo real o mediante caché inteligente de 15 días los precios de mercado, métricas de préstamo sugerido, pisos de liquidez inmediata y listados depurados de artículos a través de 7 canales simultáneos en México: Mercado Libre (filtrado con envío a CP 06700), Facebook Marketplace, Coppel, CeX México (WeBuy), Efectimundo, Maxilana y Fundación Dondé.
mercadolibre CP 06700, coppel, facebook, cex o maxilana).
loan).
Ejecuta peticiones reales contra el servidor de Valuabot directamente desde aquí para inspeccionar la estructura JSON, latencia y encabezados.
/api/v1/valuate/?product=play+station+5&loan=5000&refresh=false
Endpoint principal recomendado para consultar la valuación integral de cualquier artículo. Devuelve los KPIs prendarios (precio de mercado, préstamo sugerido mínimo y máximo, piso de compra en efectivo CeX, percentiles P15/P85), el resumen estadístico separado por cada uno de los 7 canales, la calibración de riesgo prendario opcional y la lista de publicaciones depuradas.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
product (o q) |
string |
Requerido | Nombre, marca y modelo del artículo a valuar. Ejemplo: "play station 5", "iphone 15 pro 256gb". |
mode |
string |
Opcional |
"sync" (por defecto): Retorna la valuación consolidada completa en la misma llamada HTTP."async": Inicia la búsqueda en segundo plano y retorna un task_id inmediato para consultar en /api/valuation/status/<task_id>/.
|
refresh |
boolean |
Opcional |
false (por defecto): Si existe un snapshot válido en la caché de 15 días para la consulta canónica, responde en < 50 ms.true: Ignora la caché y ejecuta los 7 scrapers en vivo en tiempo real.
|
channels |
string |
Opcional | Filtra los artículos devueltos por uno o varios canales separados por coma. Valores admitidos: mercadolibre,facebook,coppel,cex,efectimundo,maxilana,donde. |
condition |
string |
Opcional | Filtra los artículos por condición: all (default), used (solo usados/seminuevos/reacondicionados) o new (solo nuevos). |
order_by |
string |
Opcional | Ordenamiento de la lista de artículos: price_asc (menor a mayor precio, default) o price_desc (mayor a menor precio). |
loan |
number |
Opcional | Monto de préstamo en MXN (ej. 5000). Si se envía un valor mayor a 0, la respuesta incluirá el nodo pawn_calibration con el análisis de LTV y semáforo de riesgo frente a casas de empeño y CeX. |
limit |
integer |
Opcional | Número máximo de artículos a retornar en el arreglo articles (ej. 25). |
# Consulta síncrona (usa caché de 15 días si existe o calcula en vivo)
curl -X GET "https://valuabot.com/api/v1/valuate/?product=play+station+5&loan=5000" \
-H "Accept: application/json"
# Consulta mediante POST enviando JSON y filtrando canales específicos
curl -X POST "https://valuabot.com/api/v1/valuate/" \
-H "Content-Type: application/json" \
-d '{
"product": "play station 5",
"refresh": false,
"channels": "mercadolibre,facebook,coppel,cex,efectimundo,maxilana,donde",
"condition": "all",
"loan": 5000
}'
{
"status": "success",
"query": "play station 5",
"canonical_query": "playstation 5",
"display_query": "Playstation 5",
"from_cache": true,
"cache_info": {
"from_cache": true,
"age_days": 0,
"days_remaining": 15,
"created_at": "14/10/2026"
},
"valuation_kpis": {
"market_price": 7635,
"suggested_sales_price": 6642.45,
"loan_suggested_min": 4963,
"loan_suggested_max": 5726,
"cash_floor_cex": 5370,
"precio_bajo_p15": 6500,
"precio_promedio": 7635,
"precio_alto_p85": 8900,
"mean_price_used_c2c": 7635,
"mean_price_new_retail": 10711,
"mean_price_pawn_houses": 7540,
"confidence": "Alta confianza",
"total_articles_clean": 66,
"total_articles_raw": 71,
"outliers_excluded": 5,
"featured_photo": "https://http2.mlstatic.com/D_NQ_NP_..."
},
"channels_summary": {
"mercadolibre": { "name": "Mercado Libre (CP 06700)", "group": "retail_y_c2c", "count": 20, "avg_price": 8642, "min_price": 6200, "max_price": 11999 },
"facebook": { "name": "Facebook Marketplace", "group": "seminuevos_c2c", "count": 14, "avg_price": 7150, "min_price": 5500, "max_price": 8500 },
"coppel": { "name": "Coppel", "group": "retail_comercial", "count": 12, "avg_price": 12780, "min_price": 9499, "max_price": 15999 },
"cex": { "name": "CeX México", "group": "prendario_y_liquidez", "count": 9, "avg_price": 8833, "min_price": 7800, "max_price": 9800, "cash_floor_avg": 5370 },
"efectimundo": { "name": "Efectimundo", "group": "mercado_prendario", "count": 6, "avg_price": 7450, "min_price": 6800, "max_price": 7900 },
"maxilana": { "name": "Maxilana", "group": "mercado_prendario", "count": 3, "avg_price": 7466, "min_price": 7200, "max_price": 7599 },
"donde": { "name": "Fundación Dondé", "group": "mercado_prendario", "count": 2, "avg_price": 7899, "min_price": 7599, "max_price": 8199 }
},
"articles_count": 66,
"articles": [
{
"id": "MAXI-410293",
"id_valuabot": "MAXI-410293",
"title": "Videojuego Play Station 5 Slim Sony, 1 Tb Sony",
"price": 7200.0,
"condition": "Usado",
"state": "Maxilana",
"city": "Palma Real (Guadalajara)",
"photo": "https://...",
"permalink": "https://www.maxilana.com/remates/...",
"channel": "maxilana"
}
]
}
Permite consultar de forma aislada y en tiempo real un único canal específico sin ejecutar los demás scrapers. Ideal cuando solo necesitas verificar disponibilidad en Mercado Libre con envío al CP 06700, precios retail en Coppel, piso de efectivo en CeX o remates en Maxilana / Efectimundo / Dondé.
{channel_name}| Identificador de Canal | Fuente | Características Especiales |
|---|---|---|
mercadolibre |
Mercado Libre México | Aplica cookie e hidratación de ubicación para el Código Postal 06700 (Roma Norte, CDMX), descartando publicaciones que no envían a dicha zona. |
facebook |
Facebook Marketplace | Extracción SSR/GraphQL paralela sin requerir sesión de usuario, con filtrado automático de accesorios/cajas vacías. |
coppel |
Coppel Tienda en Línea | Consulta el catálogo retail oficial de Coppel (Nuevos y Reacondicionados) para referencia de techo comercial. |
cex |
CeX México (WeBuy) | Devuelve tanto el precio de venta en tienda (price) como el pago inmediato en efectivo (cash_price / cash_floor_avg). |
maxilana |
Maxilana Remates | Ejecuta búsqueda multi-variante (ej. playstation 5 + play station 5) con deduplicación por ID y detalle de sucursal. |
efectimundo |
Efectimundo Remates | Extrae remates prendarios de vitrina con SKU y sucursal. |
donde |
Fundación Dondé | Extrae artículos en remate prendario de Tienda Dondé. |
# Ejemplo 1: Consultar únicamente Mercado Libre con filtro de envío al CP 06700 curl -X GET "https://valuabot.com/api/v1/channel/mercadolibre/?product=play+station+5" # Ejemplo 2: Consultar únicamente remates de Maxilana curl -X GET "https://valuabot.com/api/v1/channel/maxilana/?product=play+station+5" # Ejemplo 3: Consultar únicamente catálogo retail de Coppel curl -X GET "https://valuabot.com/api/v1/channel/coppel/?product=play+station+5"
Consulta especializada en las vitrinas comerciales de empeño (Efectimundo, Maxilana, Fundación Dondé), Retail (Coppel) y proveedor de liquidez (CeX). Calcula automáticamente la salida neta prendaria (descontando margen de regateo/comisión) y evalúa el nivel de riesgo de un préstamo mediante el parámetro loan.
curl -X GET "https://valuabot.com/api/commercial-catalogs/?product=play+station+5&loan=5200&refresh=false"
Diseñado para aplicaciones frontend reactivas que requieren mostrar avances canal por canal en tiempo real conforme cada uno de los 7 hilos termina su extracción.
// Ejemplo de flujo asíncrono progresivo en JavaScript
async function valuarProgresivamente(producto) {
const startRes = await fetch(`/api/valuation/start/?product=${encodeURIComponent(producto)}`);
const startData = await startRes.json();
// Si ya estaba en la caché de 15 días, retorna completado de inmediato
if (startData.is_complete && startData.consolidated) {
return startData.consolidated;
}
const taskId = startData.task_id;
while (true) {
await new Promise(r => setTimeout(r, 1200));
const statusRes = await fetch(`/api/valuation/status/${taskId}/`);
const statusData = await statusRes.json();
console.log('Avance parcial por canal:', statusData.channels);
console.log('Resumen preliminar:', statusData.summary);
if (statusData.is_complete) {
return statusData.consolidated;
}
}
}
Devuelve la lista de los 7 canales activos en Valuabot, sus grupos de mercado (seminuevos_c2c, mercado_prendario, retail_comercial, prendario_y_liquidez) y la configuración de caché vigente.
Endpoint mantenido por retrocompatibilidad con integraciones previas (ej. /api/search/play%20station%205/price_ascend). Ahora está conectado al motor de 7 canales y a la caché inteligente de 15 días, devolviendo tanto el bloque clásico (search, offers, results) como los nuevos bloques valuation_kpis y channels_summary.
Campo en valuation_kpis |
Fórmula / Origen | Uso Recomendado |
|---|---|---|
market_price |
Media depurada (post-IQR) priorizando seminuevos/usados reales; si solo hay nuevos aplica factor 0.70x. |
Valor comercial de referencia en el mercado secundario mexicano. |
loan_suggested_min / max |
Banda del 65% al 75% sobre la base de referencia prendaria depurada. | Rango de préstamo prendario seguro con margen para recuperación e intereses. |
cash_floor_cex |
Promedio del campo cash_price pagado en efectivo por CeX México. |
Piso de liquidez inmediata: monto que se obtiene vendiendo la prenda de contado el mismo día en mostrador CeX. |
precio_bajo_p15 / precio_alto_p85 |
Percentiles 15 y 85 de la muestra limpia (sin valores atípicos). | Banda estadística de negociación según estado estético y accesorios incluidos. |
| Código HTTP | Estado | Explicación |
|---|---|---|
200 OK |
success / completed |
La búsqueda o valuación se procesó exitosamente (desde caché de 15 días o scraping en vivo). |
400 Bad Request |
error |
Falta el parámetro obligatorio product o se especificó un nombre de canal inválido. |
404 Not Found |
error |
El task_id consultado en /api/valuation/status/<task_id>/ no existe o expiró. |
500 Internal Error |
error |
Excepción no controlada en una fuente externa; el detalle técnico se incluye en el campo message. |