URL Screenshot 📸 Full-Page & Viewport — Only $1/1K 💰 avatar

URL Screenshot 📸 Full-Page & Viewport — Only $1/1K 💰

Pricing

from $1.00 / 1,000 screenshot captureds

Go to Apify Store
URL Screenshot 📸 Full-Page & Viewport — Only $1/1K 💰

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

viralanalyzer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Apify Store Price

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

  1. You provide a list of urls (plus optional viewport, format, scroll options).
  2. The actor opens each URL in a real Chromium browser (Playwright).
  3. It waits for load, optionally waits for a CSS selector, best-effort network idle (images), and scrolls to the bottom to trigger lazy loading.
  4. 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>.
  5. 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

  1. Você informa uma lista de urls (mais opções de viewport, formato e scroll).
  2. O actor abre cada URL em um navegador Chromium real (Playwright).
  3. Ele espera o carregamento, opcionalmente um seletor CSS, network idle best-effort (imagens) e rola até o fim para ativar lazy loading.
  4. 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>.
  5. 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

FieldTypeDefaultDescription
urlsstring[] required["https://example.com"]URLs to capture. Each produces one screenshot.
fullPagebooleantrueCapture the entire page height (true) or only the visible viewport (false).
viewportobject{width:1280, height:800}Browser viewport size in pixels.
formatenum"png"png or jpeg.
qualityinteger80JPEG quality 1-100 (only for jpeg).
pageLoadTimeoutinteger30Seconds to wait for each page to load before failing that URL.
waitForSelectorstring""CSS selector to wait for before capture (e.g. body, #app). Empty = skip.
scrollToBottombooleantrueScroll incrementally before capture to trigger lazy loading.
waitForImagesbooleantrueBest-effort wait for network idle so images render before capture.
proxyConfigproxy{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

FieldTypeDescription
urlstringSource URL that was captured.
screenshot_urlstring | nullPublic download URL of the image (null on error).
keystring | nullKey-Value Store key of the image.
titlestring | nullPage title at capture time.
status_codenumber | nullHTTP status code of the page.
viewportstring | nullViewport used, e.g. 1280x800.
fullPagebooleanWhether full-page capture was used.
timestampstring | nullISO timestamp of the capture.
errorstring | nullError message when the capture failed.
setup_statusstring | nullDIAGNOSTIC_GUIDE when every URL failed.
_dataQualitystringscreenshot | 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.001 per valid screenshot (event screenshot-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.001 por screenshot válido (evento screenshot-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 (
    setup_status: "DIAGNOSTIC_GUIDE"
    ) com causas e remediações e termina 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, aumente pageLoadTimeout ou 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; aumente pageLoadTimeout/waitForSelector para 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.