Skip to content

Website Screenshot

Try for free

Capture screenshots of any public web page as PNG, JPEG or PDF, in desktop, laptop, tablet or phone size, viewport or full page. Each file gets a shareable link plus the page title, status and image size.

📸 Website Screenshot

Turn any list of public web pages into PNG, JPEG or PDF files in one run. Pick a desktop, laptop, tablet or phone screen, capture the visible screen or the whole page, and get a shareable link to every file plus the page title, HTTP status and image size. No login, no browser to install, no code.

✨ Why use Website Screenshot?

  • 🖥️ Every screen size — desktop 1920 x 1080, laptop 1366 x 768, Retina laptop, tablet, iPhone-size and Android phones, or any custom width and height.
  • 📄 PNG, JPEG or PDF — lossless PNG, compact JPEG with your own quality setting, or a printable PDF in A4, Letter, Legal, A3 and more.
  • 📏 Visible screen or full page — capture what a visitor sees first, or the whole scrollable page with lazy-loaded images scrolled into view.
  • 🍪 Clean pictures — common cookie consent banners are hidden automatically, and you can hide any other element (chat widgets, ads) with a CSS selector.
  • 🔗 Ready-to-share links — every file gets a link that opens without a Scrape.ly account, next to the final URL, status code and title in a table you can export.
  • 🛡️ Safe by design — only public websites are opened; local, private and internal addresses are refused with a clear message.

🎯 Use cases

  • 🧪 Visual monitoring — schedule daily captures of your landing pages and spot broken layouts or changed prices.
  • 📚 Archiving and compliance — keep dated PDF or PNG records of terms, offers, ads and public statements.
  • 📱 Responsive checks — capture the same pages on desktop, tablet and phone in one go.
  • 🕵️ Competitor and SEO research — collect how competitors' home and product pages look today.
  • 🖼️ Thumbnails and previews — create preview images for link directories, dashboards and reports.
  • 🤖 Automation — feed screenshots into QA tools, AI vision models or your own pipelines through the API.

🚀 How to use

  1. Paste one or more URLs into URLs (one screenshot per URL).
  2. Choose a Device, turn on Full page if you want the whole page, and pick a File format.
  3. Optional: adjust waiting (extra delay, wait for an element, scroll to load images), hide elements, or switch on dark mode.
  4. Click Start. Each finished page appears in the Screenshots table with a preview.
  5. Open or download the files from the links, or export the table to JSON, CSV or Excel.

📥 Input

FieldWhat it does
urlsPages to capture, one screenshot each. Duplicates are captured once.
devicedesktop, laptop, macbook, tablet, tablet-landscape, mobile, android or custom.
fullPagetrue captures the whole scrollable page, false only the visible screen.
formatpng, jpeg or pdf.
jpegQualityJPEG quality from 1 to 100 (default 80).
pdfPageSize, pdfLandscape, pdfPrintBackgroundPDF paper size, orientation and background graphics.
fullPageMaxHeightFull-page screenshots stop at this height (default 20,000 px).
waitUntil, delaySecs, waitForSelector, scrollToBottomWhen the screenshot is taken.
hideCookieBanners, hideSelectors, darkModeHow the page looks in the picture.
viewportWidth, viewportHeight, deviceScaleFactorCustom screen size and pixel density.
proxyConfigurationScrape.ly datacenter proxies by default; residential and country options available.
{
  "urls": [
    { "url": "https://playwright.dev/" },
    { "url": "https://www.python.org/" }
  ],
  "device": "desktop",
  "fullPage": false,
  "format": "png"
}

📤 Output

One row per URL. The file itself is stored in the run's key-value store; screenshotUrl links to it.

FieldDescription
urlURL from your input
finalUrlAddress after redirects
statusCodeHTTP status of the page
titlePage title
screenshotUrlShareable link to the PNG, JPEG or PDF file (valid for 31 days)
screenshotKeyKey of the file in the run's key-value store
format, contentTypeFile format and MIME type
device, viewportWidth, viewportHeight, deviceScaleFactor, fullPageHow the page was opened
width, heightImage size in pixels (PNG and JPEG)
pdfPageSize, pdfPagesPaper size and page count (PDF)
fileSizeBytesFile size
loadTimeMs, capturedAtLoad time and capture time (UTC)
warningNote about a partial load, a cut full-page image or an HTTP error page
error, errorCodeWhy a URL could not be captured (blocked-url, invalid-url, dns-error, timeout, navigation-error, capture-error, browser-error, storage-error)

Example row from a real run:

{
  "url": "https://playwright.dev/",
  "requestedUrl": "https://playwright.dev/",
  "finalUrl": "https://playwright.dev/",
  "statusCode": 200,
  "title": "Fast and reliable end-to-end testing for modern web apps | Playwright",
  "screenshotUrl": "https://api.scrape.ly/v2/key-value-stores/<store-id>/records/0001-playwright-dev.png?signature=<signature>",
  "screenshotKey": "0001-playwright-dev.png",
  "format": "png",
  "contentType": "image/png",
  "device": "desktop",
  "viewportWidth": 1920,
  "viewportHeight": 1080,
  "deviceScaleFactor": 1,
  "fullPage": false,
  "width": 1920,
  "height": 1080,
  "fileSizeBytes": 415918,
  "loadTimeMs": 3722,
  "capturedAt": "2026-10-24T14:46:31Z",
  "warning": null,
  "error": null,
  "errorCode": null
}

A refused address looks like this:

{
  "url": "http://169.254.169.254/latest/meta-data/",
  "screenshotUrl": null,
  "errorCode": "blocked-url",
  "error": "Refused for safety: 169.254.169.254 is a private, local or reserved address. Only public websites can be captured."
}

💰 Pricing

  • $0.50 per 1,000 screenshots ($0.0005 per saved screenshot or PDF), plus platform usage (compute, proxy traffic and storage writes), which you pay as you go.
  • URLs that fail (refused, unreachable, timed out) are not charged. A page that answers with an HTTP error such as 404 is still captured and charged, and its row carries a warning.
  • Measured on our test runs at the default 2 GB memory:
    • 1,000 encyclopedia articles (desktop, visible screen, JPEG) took 69 minutes and used $1.26 of platform usage (compute $0.69, datacenter proxy traffic $0.51 for 0.51 GB, storage writes $0.06). With the $0.50 screenshot fee that is about $1.76 per 1,000 screenshots.
    • 5 home pages at laptop size (PNG) cost $0.0144 in total: $0.0025 screenshot fee plus $0.0119 usage, including the run's start-up.
    • Full-page captures of long pages take more time and traffic.
  • Set a maximum cost per run in the run options; the run stops cleanly when it is reached.

❓ FAQ

Is it legal to take screenshots of websites? Capturing public pages is generally fine, but what you do with the images matters: respect copyright, the site's terms and privacy laws, and do not publish personal data without a legal basis. If unsure, ask a lawyer.

Do I need a login, a proxy or my own browser? No. The actor runs its own browser and uses Scrape.ly datacenter proxies by default. Pages behind a login cannot be captured.

How many URLs can I add? As many as you like; there is no limit on the number of URLs. Large lists simply take longer: at the default 2 GB about 4 pages run in parallel and 1,000 pages took about 70 minutes in our tests. The default run timeout is 1 hour: for lists of more than about 800 URLs, raise the timeout in the run options or give the run more memory (more memory also gives the browser more CPU, so pages finish faster). Screenshots finished before a timeout are kept.

Why is a cookie banner or pop-up still visible? The actor hides the banners of common consent tools. Add the banner's CSS selector to Hide elements to hide any other overlay.

What happens with very long pages? Full-page images stop at Full page height limit (20,000 px by default) and the row gets a warning. Very long, heavy pages can take several minutes in full-page mode; more memory also gives the browser more CPU.

How long do the file links work? Links are valid for 31 days. The files stay in the run's storage for your account's data retention period; download them or copy them to your own storage for longer.

Can I schedule it or use the API? Yes. Schedule runs in the console, call the actor from the Scrape.ly API, the Python or JavaScript clients, or connect it to your workflows with webhooks.

⚠️ Limits

  • Only public http and https pages. Local, private, link-local (cloud metadata), carrier-grade NAT and other non-public addresses, and other schemes (file:, ftp:, data:, ...) are refused, also when a page redirects to them.
  • Pages behind a login, a paywall or a bot check show what a logged-out visitor sees; some sites may block datacenter addresses (switch to residential proxies).
  • Full-page images are cut at the height limit (default 20,000 px, at most 32,000 pixels) because the whole image is held in memory while it is encoded.
  • Video and audio files are not downloaded by default (players show their poster image); turn off Skip video and audio downloads to change that.
  • Cookie banners are hidden, never accepted, so content that only appears after consent is not shown.

Related actors

//From the blog\\

Latest articles

All articles
G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

No credit card. No setup calls.