Captura de pantalla web
Una página web en vivo es un blanco móvil: cambia con cada despliegue, cada prueba A/B, cada rotación de anuncios, así que probar cómo se veía en un momento dado exige capturarla, no describirla. Este endpoint renderiza cualquier URL y devuelve una imagen, bajo demanda o de forma programada, sin necesidad de un navegador abierto en un escritorio.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Por qué la captura de pantalla sigue siendo la prueba definitiva
Las pruebas automatizadas pueden verificar que un elemento existe; no pueden decirle que se renderiza tres píxeles desplazado, que una fuente no cargó o que un espacio publicitario está mostrando el banner de un competidor. Una captura de pantalla resuelve ese tipo de duda como ninguna otra cosa, porque registra la página exactamente como la renderizó un navegador, no como el código dice que debería verse. web.screenshot existe para convertir esa captura en una llamada de API rutinaria en lugar de una tarea manual que alguien hace cuando algo se ve mal.
Qué ocurre entre la solicitud y la imagen
Haga POST a /web/screenshot con la URL de destino, reciba un task_id de inmediato y obtenga la imagen renderizada por webhook o mediante un enlace firmado válido por 24 horas cuando termine la captura. Detrás de la llamada, un navegador real carga la página, espera a que se renderice y toma la fotografía, así que el resultado refleja páginas con mucho JavaScript y contenido dinámico, no solo el HTML crudo que devolvería una petición simple.
Del renderizado en servidor a los navegadores sin interfaz
Capturar el aspecto de una página solía requerir a una persona con un navegador abierto y, más adelante, scripts frágiles que manejaban una ventana real de navegador en un escritorio que alguien tenía que mantener encendido. La automatización de navegadores sin interfaz gráfica cambió eso al permitir que un motor de renderizado completo funcione sin ventana visible, lo que hace posible capturar miles de páginas desde un servidor sin monitor conectado; la misma capacidad que este endpoint expone en una simple llamada a la API.
Qué esperar según el tipo de página
El contenido estático y los diseños estándar se capturan de forma limpia y predecible. Páginas con animaciones, avisos de cookies o contenido que carga progresivamente al hacer scroll pueden renderizarse distinto según el momento exacto de la captura, el mismo reto que enfrenta cualquier herramienta de navegación automatizada; revise la referencia del endpoint para las opciones que afectan el tiempo de espera y el tamaño de la ventana si una página particular necesita ajuste.
Cómo encaja en monitoreo y control de calidad
Equipos de diseño capturan semanalmente la página de precios de un competidor para seguir sus cambios sin visitarla a mano. Los pipelines de control de calidad capturan las páginas clave después de cada despliegue a staging para detectar regresiones visuales antes de que lleguen a producción. Herramientas de monitoreo de marca y disponibilidad capturan una página periódicamente para confirmar que se renderiza correctamente y no muestra una página de error a los visitantes reales. Al cobrarse por solicitud más por URL y correr de forma asíncrona, monitorear una página o diez mil es la misma integración a distinta escala.
Qué puede hacer con ella
Monitoreo de precios de la competencia
Un equipo de producto captura la página de precios de un competidor cada semana para seguir sus cambios sin que nadie visite el sitio manualmente.
Pruebas de regresión visual
Un pipeline de control de calidad captura las páginas clave después de cada despliegue a staging para que alguien compare contra la versión anterior antes del lanzamiento.
Generación de vistas previas de enlaces
Una plataforma de contenido captura una imagen de cualquier URL que un usuario comparte para generar una vista previa visual junto al enlace.
Monitoreo de marca y disponibilidad
Una herramienta de seguridad de marca captura periódicamente un conjunto de sitios de clientes para confirmar que las páginas se renderizan bien y no muestran errores a los visitantes.
Preguntas frecuentes
¿Cómo tomo una captura de pantalla de una página con la API?
Envíe la URL a POST /web/screenshot, guarde el task_id devuelto y reciba la imagen por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API de capturas de pantalla?
No, no hay plan gratuito ni prueba. Cuesta $0.040 por solicitud más $0.001 por URL, y una captura fallida nunca se cobra.
¿Captura correctamente páginas con mucho JavaScript?
Sí, un navegador real renderiza la página antes de capturar la imagen, así que el contenido dinámico y los diseños basados en JavaScript aparecen tal como los vería un visitante.
¿Puedo capturar la página completa y no solo el área visible?
Revise la referencia del endpoint para las opciones de captura, como la altura de página completa y el tamaño de la ventana, ya que afectan cuánto de una página larga termina en la imagen.
¿Puedo programar capturas recurrentes para monitoreo?
El endpoint se llama bajo demanda; el monitoreo recurrente se construye disparando la API según su propia programación, como una tarea diaria o semanal.
¿Puedo capturar muchas URL por lote?
Sí, envíe cada URL como su propia tarea asíncrona y recoja las imágenes resultantes por webhook a medida que terminan, que es como suelen manejarse los lotes grandes.
¿Qué formatos de imagen soporta?
Revise la referencia del endpoint para conocer la lista actual de formatos de salida y opciones de resolución disponibles.
¿Se guardan las páginas o imágenes capturadas después?
No, las imágenes capturadas se eliminan después del período de retención y nunca se usan para entrenar ningún modelo.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/web/screenshot \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/screenshot", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/screenshot",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/screenshot", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/screenshot", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"url": "https://ejemplo.com"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.screenshot",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
timeout_sec | 30 |
max_crawl_pages | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |