Website Screenshot API — Clean, No Popups avatar

Website Screenshot API — Clean, No Popups

Pricing

Pay per usage

Go to Apify Store
Website Screenshot API — Clean, No Popups

Website Screenshot API — Clean, No Popups

Clean, full-page screenshots of up to 500 websites per run. Cookie banners, popups and chat bubbles are hidden, lazy images are loaded, and endless pages are handled. Every link gets a clear result, and every failure is explained in plain words.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Prathu Agarwal

Prathu Agarwal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Features

Limited permissions

Share

Take clean, complete screenshots of many websites in one run. Paste your links, press start, and get one image and one clear result row for every link. It is made for people who need good screenshots at scale: marketers, designers, QA testers, researchers, and anyone who keeps records of web pages.

Cookie banners, popups and chat bubbles are hidden. Full pages are really full. Every failure comes with a reason in plain words.

Why it is better

  • Clean screenshots. Cookie banners, newsletter popups and chat bubbles are hidden. You can also ask for a click on "Reject all". The Actor never clicks "Accept all".
  • Real full page. Tall pages are taken slice by slice and joined, so there are no repeated headers. Pages that scroll inside a box are unrolled too.
  • Lazy images loaded. The page is scrolled slowly first, so pictures that load late are in the image.
  • Endless page guard. Pages that never stop loading are detected. You choose: keep the top part, or skip the page.
  • All languages and emojis. Hindi, Arabic, Chinese, Japanese, Korean, Thai, Hebrew and more, plus colour emojis.
  • Clear reasons. If a page fails, the row says what happened, why, and what to do.
  • One row per link, always. Even when a run is stopped, every link gets a row.
  • Safe by design. The Actor never opens private or internal addresses, never types into pages, and never logs in.

Quick start

  1. Paste your links in Website links (one per line, up to 500).
  2. Pick Device: Laptop or Phone.
  3. Pick Capture: Full page or Top only.
  4. Press Start.
FieldWhat it doesDefault
Website links1 to 500 links. https:// is added if missing. Duplicates are removed.https://example.com
DeviceLaptop = 1440 x 900. Phone = 390 x 844, sharp (2x), mobile layout.Laptop
CaptureFull page = top to bottom. Top only = the first screen.Full page

Example input

{
"urls": ["https://example.com", "https://www.wikipedia.org"],
"device": "phone",
"capture": "fullPage"
}

Example output row

{
"url": "https://example.com/",
"finalUrl": "https://example.com/",
"result": "Done",
"notes": "",
"charged": false,
"imageUrl": "https://api.apify.com/v2/key-value-stores/<store-id>/records/screenshot-94f871ba1cb95ff631b85415.png",
"imageKey": "screenshot-94f871ba1cb95ff631b85415.png",
"format": "png",
"width": 780,
"height": 1796,
"device": "Phone",
"takenAt": "2026-11-06T16:30:36.393Z",
"errorType": null,
"whatHappened": null,
"why": null,
"whatToDo": null
}

Advanced settings

All of these are optional. They sit in one collapsed section of the form.

GroupFieldValuesDefault
Size and viewDevice presetNone, iPhone, Android phone, iPad, Laptop, Big monitor (2560 x 1440). Overrides Device.None
Custom width / heightWidth 320 to 3840, height 320 to 2160. Fill in both. Overrides the preset.empty
2x sharp modeOn or off. Only when the width is 1920 or less.Off
CaptureCapture modeUse main field, Visible screen, Full page, Top N px, One element (CSS selector). Overrides Capture.Use main field
Top N px100 to 300003000
Element CSS selectorUp to 300 charactersempty
WaitingMax wait time5 to 60 seconds30
CleaningClean screenshotHides popups, newsletter boxes and chat bubblesOn
Cookie bannerHide, or Click "Reject all"Hide
Sticky elementsKeep once at top, Hide, Leave as isKeep once at top
Endless pagesWhen foundCapture top, or SkipCapture top
Max page height1000 to 30000 px15000
PaginationFollow pages up to N0 to 200
Click "Load more" up to N times0 to 200
ClicksRun these clicks firstUp to 10 stepsempty
OutputFormatPNG, JPEG, WebP, PDFPNG
Resize output width100 to 3840 px, keeps the shapeempty

Notes:

  • Device preset uses ready-made device settings (iPhone, Pixel, iPad). Custom width and height beat the preset, and the preset beats Device.
  • Sticky elements: "Keep once at top" shows a fixed header once at the top, not again and again down the image.
  • Follow pages: the Actor follows the page's "Next" link (or a link or button with text like Next, >, >>, or the next page number). Same website only. Each page gets its own row, for example "Page 2 (followed Next ...)".
  • Load more: presses buttons with text like Load more, Show more, See more or View more.
  • Run these clicks first: each step is the exact text of a button or link. Capital letters and extra spaces don't matter. Experts can write css:<selector>. Each step has 5 seconds. Text is up to 100 characters and a selector up to 300. The Actor never types anything.
  • Cookie banner → Click "Reject all": works in many languages. If no reject button is found, the banner is hidden instead and a note says so.

Output

Every link gets one row in the results table. The images are saved in the run's key-value store, and each row has a link to its image.

ColumnMeaning
URLThe link, after clean-up
ResultThe status (see below)
What we noticedNotes, for example "Cookie banner hidden" or "Max wait hit"
Charged?false for every row while the Actor is free
ImageLink to the picture

The All details view adds: final URL (after redirects), image key, format, width, height, device, time taken, and for problems: error type, what happened, why, and what to do.

Statuses

StatusMeaningCharged?
DoneFull screenshot deliveredCounts as delivered
Cut shortEndless or too-tall page; the top part is deliveredCounts as delivered
PartialImage saved, but something went wrong (a click step was not found, the max wait was hit, or similar)No
BlockedThe site blocked us (for example 403), or the address is privateNo
FailedAny error from the table belowNo
SkippedEndless page with Skip, an age check, a login page, or the run stopped before this linkNo
Invalid linkThe link failed the check before the runNo

While the Actor is free, the Charged? column is false on every row, because nothing is charged. The run summary still counts the delivered screenshots (Done and Cut short).

Run summary

At the end of each run the Actor saves a SUMMARY record in the key-value store and shows it as the run status message. It has the number of links per status, delivered screenshots, time taken, and compute used.

Downloads

Open the Storage tab of the run (or use the API) and download the results table as JSON, CSV or Excel.

Keep your images

Apify keeps the storage of a run for a limited time. Download the images you need to keep.

Failure reasons

What happenedWhyWhat to do
Invalid linkThe link is not a valid web addressFix the link and run again
Domain doesn't existNo website with this nameCheck the spelling
404 Not foundThe site works, the page does not existCheck the link in your browser
403 BlockedThe site refuses automated toolsTry later; some sites never allow it
500 Server errorA problem on the site's side (we tried twice)Try later
TimeoutThe site took too long (we tried twice)Try later, or raise Max wait time
SSL certificate problemThe security certificate is expired or wrongTell the site owner
Redirect loopThe page sent us on more than 10 timesUse the final link
Private address blockedThe link points to a private or internal addressUse a public website link
Too bigThe page tried to download more than about 50 MBTry Top only
Page crashedThe page used too much memoryTry Top only. If you lowered the memory, run with 2048 MB (the default)
Connection problemThe connection failed (we tried twice)Try later
Element not foundYour CSS selector matches nothing visibleCheck the selector
Endless page skippedEndless page, and the setting is SkipSet it to Capture top
Age check found, not clickedThe page asks for age; the Actor never clicks itSee "Age checks" below
Login neededThe page needs a loginUse a public page
Not finished in timeThe run was stopped before this link was doneRun it again

Limits

LimitValue
Links per run500 (duplicates removed), up to 2048 characters each
Pages at once3 overall, 2 per website, with a short pause between pages of the same site
Time per linkAbout 90 seconds
Screen sizeWidth 320 to 3840, height 320 to 2160
Page heightUp to 30000 px (default 15000)
Total image sizeAbout 40 million pixels
Click steps10 per link; Load more 20; Follow pages 20 (total pages per run 500)
Max wait time5 to 60 seconds
Image file sizeAbout 8.5 MB. Bigger images are made smaller and a note says so
Links allowedhttp and https, ports 80 and 443 only
Memory2048 MB by default (you can lower it to 1024 MB, but heavy pages may crash)
Run timeout3600 seconds by default

Formats: PNG, JPEG, WebP, PDF. PDF is the page's print layout, not a picture of the screen. WebP can't be taller than 16,383 px, so taller images are made smaller and noted.

Pricing

The Actor is free to use for now. You only pay Apify for the platform usage of your runs (compute and storage). A typical run of a few pages uses a tiny part of the free monthly credit.

Acceptable use

You are responsible for the pages you capture and for any clicks you add. Follow each website's terms and the law.

Not allowed:

  • Logins or private pages.
  • Getting around age or ID checks, paywalls or CAPTCHAs.
  • Harassment, or capturing illegal content.
  • Flooding a site with requests.

What the Actor does and does not do:

  • It never clicks age checks by itself. If it finds one, the row says "Age check found, not clicked". You may add the button text in "Run these clicks first" at your own responsibility.
  • It never types into pages, never logs in, and never solves CAPTCHAs.
  • It never opens private, local or internal addresses.

Privacy

  • The Actor stores nothing about page content except the images you asked for, in your own run storage.
  • Logs show website names only. They never show full links, page text, cookies or HTML.
  • It does not use Apify Proxy or any other proxy service, and it does not send your data anywhere else.

FAQ

Why is a page Blocked? The site refused us (for example a 403 error), or the link points to a private address. Some sites block automated tools. Try again later.

Why is a page Cut short? The page is endless (it keeps loading more) or taller than "Max page height". You get the top part. This counts as a delivered screenshot.

Why is a page Partial? The image was saved, but something went wrong. The notes tell you what: a click step was not found, the page was still loading when Max wait ran out, or a cookie banner could not be removed.

Why does a page look different from my browser? Websites show different things by location, cookies, device and time. The Actor opens each page fresh, with no cookies, from a data centre.

How do I add a click step? Open the page in your browser. Find the button or link you want pressed. In "Run these clicks first", add its exact text, for example Show all. Steps run in order before the screenshot.

Why was my page Skipped with "Age check found, not clicked"? The page shows an age check. The Actor never clicks these by itself.

A banner is still in my image. Banner and popup detection is a best guess, and rare designs can be missed. Report the website in the Issues tab and we will look at it.

Support

Found a problem? Open the Issues tab of this Actor. Please include the website name and what you expected.

Coming in version 2

Before/after comparison, dark mode, ad blocking, Standby mode, and a proxy country setting.