---
title: "Website Screenshot"
description: "Capture a public web page as an image: desktop or mobile viewport, the visible screen or the full page, or one element by CSS selector"
updated: 2026-10-27
---

# Website Screenshot

**Node type:** `research:website_screenshot`  
**Category:** `Research`

## Description

Capture a public web page as an image: desktop or mobile viewport, the visible screen or the full page, or one element by CSS selector

## Canvas ports

These appear as port handles on the left side of the node.

| ID    | Label        | Details             |
| ----- | ------------ | ------------------- |
| `url` | **Page URL** | `TEXT` _(required)_ |

## Sidebar config

These render as form fields in the right-side config panel when the node is selected.

| ID                | Label                                                          | Details                                                                |
| ----------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `viewport`        | **Viewport**                                                   | `TEXT` · options: `desktop`, `mobile`, `custom` · default: `"desktop"` |
| `viewport_width`  | **Custom width (px, 320-3840; used when Viewport is custom)**  | `NUMBER`                                                               |
| `viewport_height` | **Custom height (px, 320-4096; used when Viewport is custom)** | `NUMBER`                                                               |
| `full_page`       | **Full page (the whole scroll, not just the screen)**          | `BOOLEAN` · default: `false`                                           |
| `selector`        | **CSS selector (optional; captures just that element)**        | `TEXT`                                                                 |
| `wait_ms`         | **Extra wait after load (ms, 0-10000; blank = 0)**             | `NUMBER`                                                               |

## Outputs

| ID       | Label      | Type     |
| -------- | ---------- | -------- |
| `image`  | **Image**  | `IMAGE`  |
| `width`  | **Width**  | `NUMBER` |
| `height` | **Height** | `NUMBER` |

## What it is for

The homepage or product screen a launch video, an ad or a brand board needs,
captured on the board. Wire a text node holding the URL into **Page URL**,
press **Capture**, and the page comes back as a PNG on our CDN, ready to wire
into the Compositor, the Video Editor or any image model.

The URL comes from the port only. A `#fragment` is kept for the browser, so
a hash-routed app (`example.com/#/pricing`) captures the screen you named.

## Settings

| Setting                   | What it does                                                                                                                                                 |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Viewport**              | `desktop` is 1440 x 900 at 1x. `mobile` is 390 x 844 at 3x, like the phone it imitates, so the PNG is 1170 x 2532. `custom` uses the two fields below at 1x. |
| **Custom width / height** | 320 to 3840 wide, 320 to 4096 tall, in CSS pixels. Only read when Viewport is `custom`. A value outside the range is refused, never quietly clamped.         |
| **Full page**             | Off: the visible screen. On: the whole scroll.                                                                                                               |
| **CSS selector**          | Captures one element (`header`, `#pricing`, `.hero`). Waits up to 10 seconds for it to appear, and wins over Full page.                                      |
| **Extra wait**            | Up to 10000 ms after the page loads, for sites that animate in.                                                                                              |

**Width** and **Height** come off the PNG itself, so they are the captured
size (3x on mobile), not the requested one.

## What it refuses

- Private, loopback, link-local, metadata and internal-only addresses, judged
  on what the URL says AND on what the hostname resolves to, on the URL you
  give and on every redirect it answers with. A public page that redirects to
  `169.254.169.254` or `10.0.0.1` is refused before any capture happens.
- Pages the site's robots.txt disallows for `WireflowBot` or `*`. No
  readable robots.txt means allowed.
- A PNG over 25 MB. A very long page on Full page can get there: turn Full
  page off, or crop to one element.

It sends no cookies, no logins and no custom headers, so it only ever sees
what a signed-out visitor sees. A URL with a username and password in it is
refused rather than stripped.

## How it captures

The page runs in a sandboxed browser outside our network. It waits for the
page to go network-idle for up to 30 seconds and captures what is there if it
never does (a chat widget that polls forever does not fail the capture). The
whole capture has a 90 second budget.

## What it costs

No credits. Captures are counted instead: 10 a day on the free plan and 300 a
day on a paid plan, reset at 00:00 UTC. A capture refused before the browser
runs (a blocked address, robots.txt, a bad setting) does not count.

It is run-gated: it never re-captures on its own when something upstream
changes, only when you press Capture or run the workflow, because every
capture is a real visit to someone else's site.

---

_Auto-generated from the Wireflow node registry._

Last updated: 2026-10-27

---

Documentation index: fetch https://www.wireflow.ai/llms.txt for the full list of Wireflow docs.
