Convert surplex.com auction activity into commercial intelligence: live bids, lot metadata and full attributes across industrial assets. Surface motivated sellers, benchmark realised prices and trigger sales outreach aligned to active auction windows.
Changelog — Surplex Scraper — Europe Industrial Auctions
2026-10-07 (c) — errores de conexión del proxy
La caché de categorías se repite entera hasta 4 veces si queda vacía y reintenta errores de conexión en subcategorías (run 3wzmEw0z1skEyEYXu: un 522 del proxy la dejó en 0 entradas). Detalle y precios reintentan cualquier fallo de transporte o lectura. El puntero tampoco se publica con >2 % de lotes perdidos en detalle.
2026-10-07 (b) — proxy rotatorio opcional
_proxyMode:"rotating": puerto rotatorio de Decodo (_proxyPort, def. 10000), sin duración de sesión y con force_close (una IP por petición). _proxyTarget añade el segmento de geolocalización al usuario (asn-3320, country-de). Sin estas claves el comportamiento es el de 1.4.38. Motivo: run lBr6OZulHhNPs5u2E, 522 y Server disconnected del proxy con sesiones sticky de 60 min; las consultas GQL no necesitan IP fija.
2026-10-07 — snapshot admin: volcado, puntero, 403 y proxy
Admin: la fase 5 no escribía al Named Dataset (_SOLO_NAMED se saltaba el push redirigido). Run YzfeB7271XkgbjC5i: Total pushed: 48, 0 items en surplex-2026-10. Ahora escribe con reintentos y cuenta lo confirmado.
Puntero: no se publica con 0 items, categorías cortadas, escrituras fallidas ni (abiertas) run parcial, caché de categorías vacía, <90 % de lotes con precio o >5 % solo con datos de listado. Dos runs publicaron surplex-scraper → 0 items el 7-oct. Resultado en KV POINTER_GATE. _publish_pointer:false lo desactiva; _admin_dataset_name escribe a otro dataset (sin puntero).
403: el listado reintenta 5 veces con espera creciente (antes cortaba la categoría al primero); la fase de precios reintenta y hace segunda pasada (prueba eTUskQgJB2KtQEOvN: 738/1.200 con precio). La caché de categorías reintenta.
Proxy: puertos sticky 10001-10020 en orden aleatorio, peticiones repartidas entre 4 (_proxyPorts), cambio de puerto a los 5×403 en 30 s. Antes todos los runs compartían la IP del 10001.
Logs: la contraseña del proxy y el token de autor se enmascaran.
2026-10-04 — claves legacy del snapshot → ext_* al servir (contrato FTP-28)
preloaded: _legacy_to_ext renombra claves sin prefijo del snapshot a ext_* (valor intacto, no pisa ext_ existente).
2026-10-04 — convención tiempo_uso
tiempo_uso sin cambios de formato. Nueva ext_tiempo_uso_unidad ('h'; null si tiempo_uso null) y ext_tiempo_uso_calidad ('cero' si 0; 'nlp_plazo' si el valor sale del NLP y es con certeza un plazo -'within 48 hours', '24 hours notice'...-, solo marcado, nunca filtrado) en los 4 mappers y en preloaded (derivado de lo almacenado, idempotente, antes de _to_out). dataset_schema.json declara las 2 ext.
Pendiente (no aplicado, decision David): en preloaded bid-history con outputSchema=english, el orden _to_out -> _coerce_ftp_types pierde hours y emite claves FTP.
2026-09-18 — T7 push
T9 (push 2026-09-18): _map_listing_lot_to_ftp (listing) anadia solo 27/31 claves FTP-28 -- completadas tipo_motor/fabric_motor/pot_motor/carga (None, sin fuente en el payload de listado); dataset_schema.json renombra access_mode/data_level -> ext_access_mode/ext_data_level para que coincidan con lo que ya emite el codigo desde T8.
T8 (push 2026-09-18): access_mode/data_level -> ext_access_mode/ext_data_level en los 4 mappers (conformidad); _coerce_ftp_types (preloaded_bid_history) hace fallback correo <- email cuando el dataset legacy trae ese campo sin renombrar.
T7 (push 2026-09-18): _coerce_ftp_types (preloaded_bid_history) ahora emite las 31 claves FTP-28 (antes solo 8/31); las 23 nuevas quedan en None cuando el dataset legacy no trae la fuente -- fix de CONFORMIDAD (presencia de claves), no de completitud.
Formato: que cambio, por que, y la medicion que lo respalda. Un cambio sin numero detras es
una opinion; en este repo no cuenta como entrada de changelog.
Las versiones son las de Apify (mayor.menor). La plataforma no admite numero de parche.
[1.4] — 19 de agosto de 2026
Corregido — el descubrimiento se rendia al 61% y reportaba exito
Se paraba en la pagina 552 de 898, se quedaba con el 61% del catalogo y terminaba en SUCCEEDED.
Ahora salta la pagina fallida en lugar de abortar, con 6 reintentos.
Cambiado — descubrimiento en paralelo
De serie a 4 hilos, con tamano de pagina negociado (200 / 100 / 96 / 48). Concurrencia 8 la rechaza
el servidor. De 82 minutos a ~25.
Corregido — los runs de admin facturaban PPE
El modo admin volcaba tambien al dataset por defecto, lo que dispara el cobro por resultado contra
nuestra propia cuenta. Un run llego al tope de $40,24 y murio despues de haber hecho todo el
trabajo. Ahora el modo admin no toca el dataset por defecto.
Cerrado — el historial de pujas no existe
El endpoint esta retirado. Comprobado con cookie de sesion, Bearer, cuenta verificada, lotes
abiertos y cerrados, y cuatro variantes de ruta: 404 en todas. El GraphQL de la tienda no expone
ninguna query de pujas entre sus 44. ext_bid_history y ext_total_bids_history estan muertos.
Pendiente
El catalogo de cerrados es una ventana movil de unos cuatro meses: el snapshot de agosto
(42.100) no contiene 22.297 lotes que si trajo el de julio (48.096). El historico real son los
64.397 de la union. Sin acumular por item_id, la historia se pierde sola.