URL Screenshot (closes cookie banners)
Give your agent a clean screenshot of any page
Give it page URLs and get a PNG screenshot of each one, the way a person sees the page, without the cookie or consent banner on top. For agents and automations that need to look at a page: visual checks, evidence and archiving.
$0.006 per screenshot delivered, plus $0.006 for each full-page one. Pages that fail are not charged.
{
"url": "https://frameskim.dev/",
"finalUrl": "https://frameskim.dev/",
"title": "Frameskim: tools for AI agents",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/aBcDeF123/records/screenshot-3f2a9c1d5e7b8a40?signature=...",
"screenshotKey": "screenshot-3f2a9c1d5e7b8a40",
"fullPage": false,
"width": 1280,
"height": 800,
"bytes": 184233,
"truncated": false,
"banner": { "found": true, "action": "rejected", "framework": "Cookiebot", "reason": null }
}Values shortened. screenshotUrl is a signed link to the PNG in the run's key-value store and screenshotKey is its key there. banner.action is rejected, accepted, hidden or left, and truncated is true when a full page was cut at the pixel cap.
Use cases
Visual checks from Claude or Cursor
Give the agent a URL and it gets a link to the PNG of the page as a person sees it, without the cookie banner covering the content.
Evidence and archiving
A PNG of each page with its final URL, title and size in every item, for evidence and archives.
Full pages and any window size
Capture the whole page instead of the window, or set the window from 320 to 1920 px wide.
Input and output
{
"urls": ["https://frameskim.dev/"],
"fullPage": false,
"width": 1280
}urls takes public http or https URLs of HTML pages; a repeated URL is opened once. closeBanners is on by default.
{
"url": "https://example.com/missing",
"error": "This page could not be captured. Nothing was charged for it."
}A URL that could not be captured comes back with the reason and is not charged.
Pricing
$0.006 per screenshot,
$0.006 more for each full-page one
Pay per event on Apify, no subscription: one screenshot event per screenshot delivered and one full-page event more for each full-page screenshot. Pages that fail are not charged, and a run never charges more than the maximum you set.
Limits
urlstakes 1 to 100 public http or https URLs of HTML pages per run; a repeated URL is opened once.- The window is 320 to 1920 px wide and 320 to 1080 px tall; a full page grows past it, up to 7,000 px tall at 1280 px wide.
- Each page gets up to 40 s in the browser, and a PNG larger than 7 MB is not stored; 1 page at a time.
- Pages are opened as
FrameskimFetch, which checksrobots.txtfor each page, its redirects and its navigations and opens only public addresses; the images, styles and scripts a page loads are fetched as any browser fetches them.
Use it by API or from Claude
curl -X POST "https://api.apify.com/v2/acts/emttn~url-screenshot/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://frameskim.dev/"], "fullPage": false}'{ "mcpServers": { "apify": {
"url": "https://mcp.apify.com/?actors=emttn/url-screenshot"
} } }Then ask: "Take a screenshot of frameskim.dev and tell me what the first screen says."
FAQ
What is charged and what is not?
One screenshot event per screenshot delivered, and one full-page event more for each full-page screenshot. Pages that could not be captured are not charged. Set a maximum charge per run and it stops before a screenshot that would pass it.
How are cookie banners handled?
Before the screenshot, it handles the known consent platforms (OneTrust, Cookiebot, Didomi, Quantcast, TrustArc, Usercentrics and more) and runs a generic check in seven languages. The banner is rejected when there is a reject button, else accepted, else hidden (or left when hiding it could remove page content), and each item says what was done in banner. Many sites show their banner only to visitors from Europe, so many pages have no banner to close.
Does it click through logins and paywalls?
No. A box it recognizes, by its words in seven languages or a password field, as asking to log in, sign up, subscribe or pay is never clicked or hidden: the screenshot shows it and banner.reason says why.
How long do the PNG links last?
screenshotUrl is a signed link to the PNG in the run's key-value store. It stops working when Apify deletes the run's storage (unnamed storages expire after 7 days by default), so copy the PNG if you need it longer.
How can a site keep its pages out?
Disallow FrameskimFetch in your robots.txt; that also stops the other Frameskim actors that fetch pages. The bot checks robots.txt for each page, its redirects and its navigations; the images, styles and scripts a page loads are fetched as any browser fetches them.