Captura de webs
Captura de webs es una API que hace una foto (screenshot) de cualquier página web a partir de su enlace. Le pasas la URL y te devuelve una imagen (PNG o JPEG) de cómo se ve. Útil para miniaturas de webs, vistas previas de enlaces y para guardar cómo estaba una página, sin montar servidores.
Cómo funciona
Esta herramienta abre una página web pública (la del enlace que le des) y te devuelve una imagen (PNG o JPEG) de cómo se ve. La web se renderiza con su JavaScript, como en un navegador normal.
Está pensada para usarla desde plataformas no-code como n8n, Make o Zapier, sin programar. Ideal para miniaturas de webs, vistas previas de enlaces o guardar cómo estaba una página. No guarda nada: la captura se genera al momento.
Lo único que necesitas
- Tu API key (tu “contraseña” para la herramienta). La creas en tu panel con “+ Crear llave”. Se muestra una sola vez, así que cópiala y guárdala.
- En tu plataforma de automatización, un paso de tipo “HTTP Request” / “Hacer una petición HTTP” (lo tienen n8n, Make, Zapier, Pipedream…).
Cómo usarlo en n8n (paso a paso)
Le envías el enlace de la web y te devuelve la imagen directamente, lista para usar. En el nodo HTTP Request:
- Method:
POST - URL:
https://api.cofferdock.com/screenshot - Send Query Parameters: actívalo y añade el tamaño:
width=1280,height=800. (Puedes añadirfull_page,format… ver la tabla.) - Send Headers: actívalo y añade dos:
x-api-key= tu llave, yContent-Type=text/plain - Send Body: actívalo → Body Content Type: Raw → en Body pega el enlace de la web (por ejemplo
https://cofferdock.com) - En Options → Response → Response Format: elige File
La salida del nodo ya es la imagen como archivo: conéctala directamente a Drive, email, Telegram… Un solo nodo y listo.
En Make (módulo HTTP → Make a request): mismo método y URL, en Query String añade width y height, en Headers las dos cabeceras, Body type: Raw, Content type: text/plain y pega el enlace en Request content. La respuesta ya es el archivo de imagen.
En resumen: POST a …/screenshot, width y height como Query Parameters, las cabeceras x-api-key y Content-Type: text/plain, el enlace de la web en Body en modo Raw y Response Format en File.
Opciones (en Query Parameters)
Opciones que puedes añadir como Query Parameters (campos name/value en n8n/Make):
| Opción | Por defecto | Para qué sirve |
|---|---|---|
width | 1280 | Ancho de la ventana en píxeles. |
height | 800 | Alto de la ventana en píxeles. |
full_page | false | Capturar la página entera (no solo lo visible). Ponlo en true. |
format | png | Formato: png o jpeg. |
wait_ms | 0 | Esperar antes de la foto (máx. 5000) por si algo carga tarde. |
Solo webs públicas: únicamente se permiten enlaces http/https accesibles desde internet. Por seguridad, no se pueden capturar direcciones internas o privadas.
Resumen de la API
- Endpoint:
POST https://api.cofferdock.com/screenshot - Auth: cabecera
x-api-key: TU_LLAVE. - Entrada: la URL va en el cuerpo como
text/plain(a pelo) o comoapplication/jsonen el campourl. - Salida: por defecto, con
text/plaindevuelve el binario de la imagen (image/pngoimage/jpeg); con JSON devuelve base64. Añadeoutput=imagepara forzar el binario. - Seguridad: solo URLs públicas http/https; las IPs internas/privadas se bloquean (anti-SSRF). El JavaScript de la web SÍ se ejecuta, en un contexto efímero y aislado.
- Límites: timeout 30 s; 30 capturas/min por IP. 1 captura = 1 crédito.
Opciones
| Opción | Por defecto | Descripción |
|---|---|---|
width | 1280 | Ancho de ventana en px (100–3840). |
height | 800 | Alto de ventana en px (100–2160). |
full_page | false | Captura toda la altura de la página. |
format | png | png o jpeg. |
quality | 90 | Calidad JPEG (1–100). Solo aplica a jpeg. |
wait_ms | 0 | Espera antes de capturar, en ms (máx. 5000). |
output | según modo | image (binario) o json (base64). |
Ejemplos
curl (URL a pelo, guarda la imagen en un fichero):
curl -X POST "https://api.cofferdock.com/screenshot?width=1280&height=800" \
-H "x-api-key: TU_LLAVE" \
-H "Content-Type: text/plain" \
--data "https://cofferdock.com" \
-o captura.png
JavaScript (Node 18+):
const r = await fetch('https://api.cofferdock.com/screenshot?width=1280&height=800', {
method: 'POST',
headers: { 'x-api-key': 'TU_LLAVE', 'Content-Type': 'text/plain' },
body: 'https://cofferdock.com',
});
const buffer = Buffer.from(await r.arrayBuffer());
require('fs').writeFileSync('captura.png', buffer);
Python:
import requests
r = requests.post(
'https://api.cofferdock.com/screenshot',
params={'width': 1280, 'height': 800},
headers={'x-api-key': 'TU_LLAVE', 'Content-Type': 'text/plain'},
data='https://cofferdock.com',
)
open('captura.png', 'wb').write(r.content)
Modo JSON (respuesta en base64)
Con Content-Type: application/json, la URL va en url y las opciones en el mismo objeto. La respuesta trae la imagen en base64:
{ "url": "https://cofferdock.com", "width": 1280, "full_page": true }
→ { "success": true, "image": "iVBORw0KGgo…", "mime_type": "image/png",
"meta": { "used": 12, "remaining": 488, "size_bytes": 95421 } }
Añade "output": "image" al JSON para recibir el binario en lugar del base64.
Lo que recibes
La imagen directamente (un archivo PNG o JPEG), lista para guardar, enviar por email o publicar. No hay que convertir nada: el paso siguiente de tu automatización ya recibe el archivo. (En el modo técnico con JSON, la imagen llega en base64.)
Si en un pico recibes “ocupado”
En momentos de mucha demanda, la API puede responder “ocupado” (código 503) y pedirte que esperes unos segundos. Es raro y puntual, pero para que tu automatización lo resuelva sola, activa el reintento en el paso de la petición:
- En n8n: en el nodo HTTP Request, pestaña Settings, activa “Retry On Fail”. Con 2–3 intentos sobra.
- En Make: añade un manejador de errores al módulo (clic derecho → Add error handler) con la directiva Break, que reintenta automáticamente.
Nuestra respuesta incluye la cabecera Retry-After con los segundos que conviene esperar. Con el reintento activado, tu flujo ni se entera.
Website screenshot
Website screenshot is an API that takes a screenshot of any web page from its link. You pass the URL and get an image (PNG or JPEG) of how it looks. Good for website thumbnails, link previews or keeping a visual record of a page, with no servers to maintain.
How it works
This tool opens a public web page (the one in the link you give it) and returns an image (PNG or JPEG) of how it looks. The page is rendered with its JavaScript, like in a normal browser.
It's made to be used from no-code platforms like n8n, Make or Zapier, without coding. Great for website thumbnails, link previews or saving how a page looked. Nothing is stored: the screenshot is generated on the fly.
All you need
- Your API key (your “password” for the tool). Create it in your dashboard with “+ Create key”. It's shown only once, so copy and save it.
- In your automation platform, an “HTTP Request” step (n8n, Make, Zapier, Pipedream… all have one).
How to use it in n8n (step by step)
You send the website link and you get the image back directly, ready to use. In the HTTP Request node:
- Method:
POST - URL:
https://api.cofferdock.com/screenshot - Send Query Parameters: on, and add the size:
width=1280,height=800. (You can addfull_page,format… see the table.) - Send Headers: on → add two:
x-api-key= your key, andContent-Type=text/plain - Send Body: on → Body Content Type: Raw → paste the website link in Body (for example
https://cofferdock.com) - Under Options → Response → Response Format: choose File
The node's output is already the image as a file: connect it straight to Drive, email, Telegram… One node and done.
In Make (HTTP → Make a request module): same method and URL, in Query String add width and height, in Headers the two headers, Body type: Raw, Content type: text/plain, and paste the link into Request content. The response is already the image file.
In short: POST to …/screenshot, width and height as Query Parameters, the x-api-key and Content-Type: text/plain headers, the website link in Body as Raw, and Response Format as File.
Options (as Query Parameters)
Options you can add as Query Parameters (name/value fields in n8n/Make):
| Option | Default | What it does |
|---|---|---|
width | 1280 | Viewport width in pixels. |
height | 800 | Viewport height in pixels. |
full_page | false | Capture the full page (not just the visible part). Set it to true. |
format | png | Format: png or jpeg. |
wait_ms | 0 | Wait before the shot (max 5000) in case something loads late. |
Public websites only: only http/https links reachable from the internet are allowed. For security, internal or private addresses cannot be captured.
API overview
- Endpoint:
POST https://api.cofferdock.com/screenshot - Auth: header
x-api-key: YOUR_KEY. - Input: the URL goes in the body as
text/plain(raw) or asapplication/jsonin theurlfield. - Output: by default, with
text/plainit returns the image binary (image/pngorimage/jpeg); with JSON it returns base64. Addoutput=imageto force the binary. - Security: public http/https URLs only; internal/private IPs are blocked (anti-SSRF). The page's JavaScript DOES run, in an ephemeral, isolated context.
- Limits: 30 s timeout; 30 screenshots/min per IP. 1 screenshot = 1 credit.
Options
| Option | Default | Description |
|---|---|---|
width | 1280 | Viewport width in px (100–3840). |
height | 800 | Viewport height in px (100–2160). |
full_page | false | Capture the full page height. |
format | png | png or jpeg. |
quality | 90 | JPEG quality (1–100). Applies to jpeg only. |
wait_ms | 0 | Wait before capturing, in ms (max 5000). |
output | per mode | image (binary) or json (base64). |
Examples
curl (raw URL, saves the image to a file):
curl -X POST "https://api.cofferdock.com/screenshot?width=1280&height=800" \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: text/plain" \
--data "https://cofferdock.com" \
-o screenshot.png
JavaScript (Node 18+):
const r = await fetch('https://api.cofferdock.com/screenshot?width=1280&height=800', {
method: 'POST',
headers: { 'x-api-key': 'YOUR_KEY', 'Content-Type': 'text/plain' },
body: 'https://cofferdock.com',
});
const buffer = Buffer.from(await r.arrayBuffer());
require('fs').writeFileSync('screenshot.png', buffer);
Python:
import requests
r = requests.post(
'https://api.cofferdock.com/screenshot',
params={'width': 1280, 'height': 800},
headers={'x-api-key': 'YOUR_KEY', 'Content-Type': 'text/plain'},
data='https://cofferdock.com',
)
open('screenshot.png', 'wb').write(r.content)
JSON mode (base64 response)
With Content-Type: application/json, the URL goes in url and the options in the same object. The response carries the image in base64:
{ "url": "https://cofferdock.com", "width": 1280, "full_page": true }
→ { "success": true, "image": "iVBORw0KGgo…", "mime_type": "image/png",
"meta": { "used": 12, "remaining": 488, "size_bytes": 95421 } }
Add "output": "image" to the JSON to receive the binary instead of base64.
What you get back
The image itself (a PNG or JPEG file), ready to save, email or publish. Nothing to convert: the next step of your automation already receives the file. (In technical mode with JSON, the image comes in base64.)
If you get “busy” during a spike
At peak times, the API may reply “busy” (status 503) and ask you to wait a few seconds. It's rare and brief, but to let your automation handle it on its own, turn on retry on the request step:
- In n8n: on the HTTP Request node, Settings tab, turn on “Retry On Fail”. 2–3 attempts is plenty.
- In Make: add an error handler to the module (right-click → Add error handler) with the Break directive, which retries automatically.
Our response includes a Retry-After header telling how many seconds to wait. With retry on, your flow won't even notice.