Saltar al contenido principal
POST https://api.acedata.cloud/webextrator/render La API de renderizado web de WebExtrator es un servicio de renderizado web basado en Chromium sin interfaz gráfica. Dada una URL, devuelve el HTML completamente renderizado (incluido el contenido inyectado por JS), texto sin formato, el título de la página y la URL final. Render es la interfaz más básica de WebExtrator. Si necesitas resultados de extracción estructurados (cuerpo de artículos, precios de productos, ingredientes de recetas …), utiliza /webextrator/extract —— ejecuta un conjunto completo de flujos de extracción tipados sobre la misma base de renderizado.

Proceso de solicitud

Para utilizar la página de servicio de WebExtrator, primero obtén tu API Token en la consola de Ace Data Cloud y guárdalo como respaldo. Si aún no has iniciado sesión o no te has registrado, serás redirigido automáticamente a la página de inicio de sesión para invitarte a registrarte e iniciar sesión; al completarlo, volverás automáticamente a la página actual. Un solo API Token puede invocar todos los servicios de la plataforma, sin necesidad de solicitar uno por separado para cada servicio. La primera solicitud incluye crédito gratuito, que permite una experiencia gratuita; cuando el crédito sea insuficiente, puedes recargar saldo general en la consola.
📘 Documentación completa: Página de servicio de WebExtrator →

Autenticación

Todas las interfaces de WebExtrator utilizan autenticación estándar mediante Bearer Token:

Parámetros de solicitud

El contrato de la plataforma utiliza de forma unificada snake_case. El servicio interno de renderizado admite camelCase, pero las llamadas externas siempre utilizan snake_case.

Respuesta síncrona

Respuesta asíncrona

Cuando async=true (o se proporciona callback_url), devuelve inmediatamente (HTTP 200):
El resultado se enviará mediante POST a callback_url (si está configurado), o se consultará activamente a través de /webextrator/tasks.

Estructura de devolución de llamada

La plataforma hace POST del envelope exactamente igual que en el modo síncrono a callback_url, con Content-Type: application/json. Devolver cualquier 2xx se considera confirmado; los 5xx se reintentarán con retroceso exponencial durante aproximadamente 5 minutos.

Respuesta de error

Estructura de error:

Ejemplos

cURL

Python (requests)

Node.js (fetch)

Asíncrono + callback

Devuelve inmediatamente { "success": true, "task_id": "...", "trace_id": "...", "started_at": 1777717800.123 }; cuando la tarea se complete, la plataforma hará POST del resultado completo a tu callback_url.

Forzar la omisión de caché

Consejos y errores comunes

  • Es importante elegir correctamente wait_until. networkidle es el más estable pero el más lento; domcontentloaded es rápido, pero puede omitir contenido inyectado de forma asíncrona; load es adecuado para páginas estáticas tradicionales.
  • La clave de caché ignora async. Las solicitudes síncronas y asíncronas para la misma URL alcanzan la misma entrada de caché, por lo que cambiar libremente entre ellas no la invalidará.
  • La clave de caché ignora bypass_cache y cache_ttl_seconds. Estos dos son interruptores operativos, y no afectan al contenido de la respuesta.
  • cookies y headers segmentan la caché. Personalizar estos dos hará que falle el primer acierto con la misma combinación.
  • Las SPA pesadas a menudo superan los 30 segundos predeterminados. Se recomienda timeout: 60, wait_until: "domcontentloaded", delay: 4, y luego combinarlo con wait_for_selector para esperar los elementos que realmente te interesan.
  • block_resources es la vía más rápida para reducir la latencia. Las imágenes / fuentes / medios ya están bloqueados de forma predeterminada; si tu extracción no depende del diseño CSS, añadir stylesheet puede hacerlo aún más rápido.