๐ธ Website Screenshot Generator
Pricing
from $2.99 / 1,000 results
๐ธ Website Screenshot Generator
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Beautiful full-page PNG & PDF captures of any website โ at scale, with a built-in smart proxy ladder that gets past bot walls.
Drop in a list of URLs, pick PNG or PDF, hit Start. The Actor opens each URL in a real Chromium browser, scrolls to load lazy content, hides the cookie banners you don't want in the shot, and saves a pixel-perfect capture to your default key-value store. Metadata for every capture is also pushed to the dataset so you can export to JSON / CSV / Excel in one click.
๐ Why choose this Actor?
- ๐ก๏ธ Smart proxy fallback โ starts direct, automatically escalates to datacenter, then residential with retries when the target pushes back. Stops mid-flow when one tier works.
- ๐ผ๏ธ Full-page PNG or printable PDF โ your call, per run.
- ๐ฝ Lazy-load aware โ scrolls to the bottom, optionally waits for the network to go idle, so infinite-scroll feeds capture cleanly.
- ๐ Banner & widget hiding โ supply CSS selectors to wipe cookie popups, chat widgets, or anything that ruins the shot.
- ๐ฅ Live saving โ each capture lands in the dataset as soon as it's done, so a crash never loses earlier work.
- ๐ Rich, per-section logs โ you can watch URL-by-URL progress, proxy escalations, and final status in real time.
โจ Key features
| Feature | Detail |
|---|---|
| ๐ Bulk input | Paste URLs, drop a CSV, or pull from Google Sheets โ the standard Apify request-list editor |
| ๐ผ๏ธ Output | png (full page) or pdf (printable) |
| ๐ Viewport | Custom width (100โ3840 px), height fixed at 1080 with full-page mode |
| โณ Wait until | load ยท domcontentloaded ยท networkidle2 ยท networkidle0 |
| ๐ Retries | 3 retries on the residential tier with jittered backoff |
| ๐ก๏ธ Proxy ladder | direct โ datacenter โ residential โ automatic |
| ๐พ Storage | PNG/PDF in default KVS, metadata rows in default dataset |
๐งพ Input
{"urls": [{ "url": "https://apify.com" },{ "url": "https://github.com" }],"format": "png","waitUntil": "networkidle2","delay": 0,"viewportWidth": 1280,"scrollToBottom": true,"delayAfterScrolling": 2500,"waitUntilNetworkIdleAfterScroll": false,"waitUntilNetworkIdleAfterScrollTimeout": 30000,"selectorsToHide": ".cookie-banner, #chat-widget","proxyConfiguration": { "useApifyProxy": false }}
| Field | Meaning |
|---|---|
urls | ๐ List of URLs to capture. Items may be plain strings or { "url": "..." } objects. |
format | ๐ผ๏ธ png for image, pdf for printable document. |
waitUntil | โณ Browser navigation milestone before capture. |
delay | โฑ๏ธ Extra wait (ms) after navigation, before capture. |
viewportWidth | ๐ Browser viewport width in pixels. |
scrollToBottom | ๐ฝ Scroll the page top-to-bottom before capturing โ triggers lazy-loaded content. |
delayAfterScrolling | โฑ๏ธ Wait this long after scrolling, before capturing. |
waitUntilNetworkIdleAfterScroll | ๐ Instead of a fixed delay, wait for the network to settle after scrolling. |
waitUntilNetworkIdleAfterScrollTimeout | โฐ Hard cap on the network-idle wait. |
selectorsToHide | ๐ CSS selectors to hide before capturing (cookie banners, chat widgets, โฆ). |
proxyConfiguration | ๐ก๏ธ Default off โ Actor tries direct first and auto-escalates if the target blocks. |
๐ฆ Output
Each captured URL produces:
- A binary record in the default key-value store at
screenshot_<sanitized-url>_<md5>.<png|pdf>. - A metadata row in the default dataset:
{"startUrl": "https://apify.com","finalUrl": "https://apify.com/","pageTitle": "Apify: Full-stack web scraping and data extraction platform","format": "png","success": true,"error": "","proxyTier": "direct","attempts": 1,"navigationStatus": "ok","scrolledToBottom": true,"hiddenSelectors": "","screenshotKey": "screenshot_https___apify_com_d0734ca443cdd7bb52b219011c750508.png","screenshotUrl": "https://api.apify.com/v2/key-value-stores/<store-id>/records/screenshot_https___apify_com_<md5>.png","fileSizeBytes": 524288,"viewportWidth": 1280,"viewportHeight": 1080,"waitUntil": "networkidle2","capturedAt": "2026-05-23T10:39:31.592253+00:00"}
The dataset view comes pre-configured with two ready-to-use tables: ๐ผ๏ธ Capture Overview (the essentials) and ๐ Capture Details (everything, including the proxy tier used and number of attempts).
๐ How to use the Actor (via Apify Console)
- Log in at console.apify.com โ Actors.
- Open ๐ธ Website Screenshot Generator.
- Paste your URLs, pick the output format, leave proxy on No proxy (the Actor escalates automatically when sites push back).
- Click Start.
- Watch the live log โ you'll see each URL's status, the proxy tier used, and bytes captured.
- Open the Storage tab to grab your PNGs / PDFs and the Dataset tab to export metadata.
๐ก๏ธ How the proxy ladder works
โโโโโโโโโโโโ blocked โโโโโโโโโโโโโโโโ blocked โโโโโโโโโโโโโโโโโโโโ direct โ โโโโโโโโโโโถ โ datacenter โ โโโโโโโโโโโถ โ residential ร3 โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโretries w/ jitter
- Every capture starts on whatever tier the Actor is currently on.
- A block (HTTP 401/403/407/408/409/425/429/451/5xx or a CAPTCHA / "checking your browser" page) escalates the ladder one step.
- Residential is the last step and retries 3ร with jittered backoff before giving up on that URL.
- Once we escalate, we stay there โ the next URL begins on the new tier, so we don't burn time on a tier we already know the target rejects.
๐ง Best use cases
- ๐ Visual archives โ periodically snapshot dashboards, landing pages, blog posts.
- ๐ฌ QA & visual regression โ diff captures between deploys.
- ๐ฐ Press / link previews โ generate PDFs of articles before they paywall or change.
- ๐๏ธ Competitive intelligence โ track competitor pages over time.
โ Frequently asked questions
Q: Why does my screenshot look smaller than my desktop browser?
The default viewport width is 1280 px and full-page mode captures everything below the fold. Bump viewportWidth to 1920 (or larger) for "wide-monitor" captures.
Q: The page has a cookie banner blocking the top โ what do I do?
Add the banner's CSS selector to selectorsToHide, e.g. .cookie-banner, #onetrust-banner-sdk. The Actor sets display: none on the matched elements before capturing.
Q: Why do PDFs sometimes look different from PNGs?
page.pdf() is Chromium-headless only and uses a print-media stylesheet. If a site has heavy @media print rules, the PDF will reflect them โ that's by design.
Q: I want to skip the ladder and use residential straight away.
Set proxyConfiguration to { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] } โ the Actor will use residential only, with retries.
๐ Support and feedback
Found a bug or have a feature request? Open an issue in your Actor's GitHub repository, or message the maintainer directly via your Apify Console.
โ๏ธ Legal & ethical notes
- Only capture publicly available pages you have the right to view.
- Respect each site's Terms of Service.
- You are responsible for compliance with applicable laws (GDPR, CCPA, etc.).