URL Screenshot 📸 Full-Page & Viewport — Only $1/1K 💰
Pricing
from $1.00 / 1,000 screenshot captureds
URL Screenshot 📸 Full-Page & Viewport — Only $1/1K 💰
Capture full-page or viewport screenshots of any list of URLs. Each image is stored in the Key-Value Store and returned as a public download URL in the dataset. Configurable viewport, PNG/JPEG format, lazy-load scroll and per-URL error isolation included.
Pricing
from $1.00 / 1,000 screenshot captureds
Rating
0.0
(0)
Developer
viralanalyzer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Capture full-page or viewport screenshots of any list of URLs. Each image is stored in the run's Key-Value Store and returned in the dataset as a public download URL.
Capture screenshots full-page ou de viewport de qualquer lista de URLs. Cada imagem é guardada no Key-Value Store da run e retornada no dataset como uma URL pública de download.
How it works / Como funciona
EN
- You provide a list of
urls(plus optional viewport, format, scroll options). - The actor opens each URL in a real Chromium browser (Playwright).
- It waits for load, optionally waits for a CSS selector, best-effort network idle (images), and scrolls to the bottom to trigger lazy loading.
- It captures the screenshot (full-page or viewport; PNG or JPEG) and saves the
bytes to the run's default Key-Value Store with key
screenshot-<i>.<ext>. - One dataset item per URL is pushed with the public download URL
(
https://api.apify.com/v2/key-value-stores/<storeId>/records/<key>), title, status code, viewport and timestamp.
PT
- Você informa uma lista de
urls(mais opções de viewport, formato e scroll). - O actor abre cada URL em um navegador Chromium real (Playwright).
- Ele espera o carregamento, opcionalmente um seletor CSS, network idle best-effort (imagens) e rola até o fim para ativar lazy loading.
- Captura o screenshot (full-page ou viewport; PNG ou JPEG) e salva os bytes no
Key-Value Store default da run com a chave
screenshot-<i>.<ext>. - Um item por URL é gravado no dataset com a URL pública de download
(
https://api.apify.com/v2/key-value-stores/<storeId>/records/<key>), title, status code, viewport e timestamp.
Features / Funcionalidades
- Full-page ou viewport — capture a página inteira ou apenas a área visível.
- Viewport customizável — qualquer resolução (default 1280x800).
- PNG ou JPEG — JPEG com qualidade ajustável (1-100).
- Lazy-load scroll — scroll incremental ativa imagens/conteúdo preguiçoso.
- Erros isolados por URL — uma URL que falha não derruba a run; vira item de
erro (
screenshot_url: null) e não é cobrada. - Sem anti-bot frustrado — se todas as URLs falharem, um item diagnóstico
(
setup_status: "DIAGNOSTIC_GUIDE") é emitido com causas e remediações.
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | string[] required | ["https://example.com"] | URLs to capture. Each produces one screenshot. |
fullPage | boolean | true | Capture the entire page height (true) or only the visible viewport (false). |
viewport | object | {width:1280, height:800} | Browser viewport size in pixels. |
format | enum | "png" | png or jpeg. |
quality | integer | 80 | JPEG quality 1-100 (only for jpeg). |
pageLoadTimeout | integer | 30 | Seconds to wait for each page to load before failing that URL. |
waitForSelector | string | "" | CSS selector to wait for before capture (e.g. body, #app). Empty = skip. |
scrollToBottom | boolean | true | Scroll incrementally before capture to trigger lazy loading. |
waitForImages | boolean | true | Best-effort wait for network idle so images render before capture. |
proxyConfig | proxy | {useApifyProxy: true} | Apify proxy; enable RESIDENTIAL if sites block datacenter IPs. |
Example input JSON / Exemplo de input
{"urls": ["https://example.com", "https://github.com", "https://news.ycombinator.com"],"fullPage": true,"viewport": { "width": 1280, "height": 800 },"format": "png","pageLoadTimeout": 30,"scrollToBottom": true,"waitForImages": true,"proxyConfig": { "useApifyProxy": true }}
Output fields / Campos de saída
| Field | Type | Description |
|---|---|---|
url | string | Source URL that was captured. |
screenshot_url | string | null | Public download URL of the image (null on error). |
key | string | null | Key-Value Store key of the image. |
title | string | null | Page title at capture time. |
status_code | number | null | HTTP status code of the page. |
viewport | string | null | Viewport used, e.g. 1280x800. |
fullPage | boolean | Whether full-page capture was used. |
timestamp | string | null | ISO timestamp of the capture. |
error | string | null | Error message when the capture failed. |
setup_status | string | null | DIAGNOSTIC_GUIDE when every URL failed. |
_dataQuality | string | screenshot | error | diagnostic. |
Example item / Exemplo de item:
{"url": "https://example.com","screenshot_url": "https://api.apify.com/v2/key-value-stores/xxx/records/screenshot-0.png","key": "screenshot-0.png","title": "Example Domain","status_code": 200,"viewport": "1280x800","fullPage": true,"timestamp": "2026-08-13T03:00:00.000Z","_dataQuality": "screenshot"}
Pricing / Preços & Free tier
- Charge:
$0.001per valid screenshot (eventscreenshot-captured, i.e. $1 per 1,000 screenshots). Errors and the diagnostic guide item are never charged. - Free tier (non-owner, non-paying): limited to 3 URLs per run. Upgrade your Apify plan to unlock the full input.
- PT:
$0.001por screenshot válido (eventoscreenshot-captured, ou seja $1 por 1.000 screenshots). Erros e o item de diagnóstico nunca são cobrados. Free tier (não-owner, não-pagante): limitado a 3 URLs por run.
FAQ
- Onde ficam as imagens? No Key-Value Store default da run. O dataset guarda apenas a URL pública de download de cada imagem.
- A imagem some depois? A KV store da run persiste enquanto a run existir na sua conta; baixe as imagens para armazenamento de longo prazo se precisar.
- Uma URL quebrada derruba a run? Não. Cada URL é isolada: falha vira item
com
screenshot_url: null,_dataQuality: "error"e sem cobrança. - E se TODAS falharem? A run emite um item diagnóstico () com causas e remediações e terminasetup_status: "DIAGNOSTIC_GUIDE"
SUCCEEDED, sem charge. - Qual proxy usar? Datacenter default é mais barato. Se o site bloquear,
use
RESIDENTIAL. - PT: As imagens ficam no KV Store default da run. URL quebrada não derruba a run. Se todas falharem, item diagnóstico + SUCCEEDED sem cobrança.
Limitations / Limitações (honestas)
- Sites com anti-bot agressivo (Cloudflare, captcha, fingerprinting) podem
bloquear a captura mesmo com proxy. Nesses casos, tente
RESIDENTIAL, aumentepageLoadTimeoutou use uma API oficial do site. - Full-page de páginas infinitas (scroll infinito) é truncado no limite do scroll — a captura cobre o conteúdo carregado até o fim do scroll.
networkidleé best-effort: sites com polling contínuo (analytics, websockets) podem capturar antes de todas as imagens renderizarem; aumentepageLoadTimeout/waitForSelectorpara forçar mais espera.- Sites que exigem login/autenticação não são suportados nesta versão.
- PT: Sites com anti-bot agressivo podem bloquear mesmo com proxy; full-page de páginas infinitas é truncado; login não é suportado.
Changelog
- v1.0 (2026-08-13): primeira versão — PlaywrightCrawler, KV Store + dataset,
FREE_TIER cap, UAG-SG guard, charge
screenshot-captured$1/1K com owner-skip.