Website Screenshot API: Full-Page, Mobile & PDF Capture
Pricing
from $2.00 / 1,000 screenshots
Website Screenshot API: Full-Page, Mobile & PDF Capture
Capture screenshots of any list of URLs with real Chromium: viewport, full-page, element and PDF captures in PNG, JPEG, WebP or PDF, with cookie-banner hiding, ad blocking, dark mode and custom CSS/JS. Also usable as a live HTTP API via Standby mode. By Steadyline Data.
Pricing
from $2.00 / 1,000 screenshots
Rating
0.0
(0)
Developer
Steadyline Data
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 days ago
Last modified
Categories
Features
Share
Website Screenshot API: full-page, element, mobile & PDF
Capture pixel-accurate screenshots of any number of web pages with a real Chromium browser (Playwright). You can capture the viewport, the full scrolling page, a single element, or an A4 PDF, in PNG, JPEG or WebP. Every image is stored in the run's key-value store and returned with a shareable link. Built and maintained by Steadyline Data.
Use cases
- Visual monitoring and archiving: dated screenshots of competitor pricing pages or your own releases.
- Link previews and thumbnails for directories, CMSs and newsletters.
- QA and design review: desktop and mobile captures of many pages at once.
- Compliance evidence: a PDF or PNG record of what a page showed on a given day.
- AI agents: let an agent 'see' a page by passing the image URL to a vision model.
Features
- Viewport presets: desktop 1920×1080, laptop 1366×768, tablet 820×1180 @2x, mobile 390×844 @3x (iPhone user agent and touch), or a custom size and pixel density.
- Full page: the Actor scrolls the page first so lazy-loaded images appear, then captures the whole page.
- Element capture: pass a CSS selector such as
headeror#pricingand only that element is captured. - Formats: PNG, JPEG and WebP (with quality), or PDF with backgrounds.
- Clean captures: cookie and consent banners from about 60 common consent managers and generic banners (OneTrust, Cookiebot, Didomi, Quantcast, Usercentrics, CookieYes and more) are hidden, never accepted. Requests to about 60 ad, tracker and chat-widget hosts are blocked, and you can add your own selectors to hide.
- Dark mode (
prefers-color-scheme: dark), custom CSS, and custom JavaScript that runs only inside the page's browser sandbox, for example to open a tab before capturing. waitUntil(networkidle, load or domcontentloaded), an extra delay, per-page timeouts, retries and concurrency.- Standby mode (live HTTP API): call
GET https://steadyline--website-screenshot.apify.actor/?url=example.com&viewport=mobile&fullPage=true&format=jpegwith your Apify token (Authorization: Bearer <token>) and the image comes back directly in the response. Query parameters use the same names as the input fields. Custom JS is only available in batch mode.
Output
Each URL produces one dataset row: url, finalUrl, status (HTTP), title, imageUrl (signed link to the stored image), kvKey, format, viewport, fullPage, width, height, bytes, takenAt and error.
Real output from a cloud test run (mobile preset). The second row shows a site that blocked the request with HTTP 403. That page is still captured so you can inspect it, but it is reported as an error and not charged:
[{"url": "https://www.wikipedia.org/","finalUrl": "https://www.wikipedia.org/","status": 200,"title": "Wikipedia","imageUrl": "https://api.apify.com/v2/key-value-stores/dYFMufuifjQUD6KJK/records/www-wikipedia-org-mobile-239cbc0600.png?signature=\u2026","kvKey": "www-wikipedia-org-mobile-239cbc0600.png","format": "png","viewport": "mobile","fullPage": false,"width": 390,"height": 844,"bytes": 391574,"takenAt": "2026-10-29T22:48:02.131Z","error": null},{"url": "https://www.nytimes.com/","finalUrl": "https://www.nytimes.com/","status": 403,"title": "nytimes.com","imageUrl": "https://api.apify.com/v2/key-value-stores/dYFMufuifjQUD6KJK/records/www-nytimes-com-mobile-5f9de1a079.png?signature=\u2026","kvKey": "www-nytimes-com-mobile-5f9de1a079.png","format": "png","viewport": "mobile","fullPage": false,"width": 390,"height": 844,"bytes": 106777,"takenAt": "2026-10-29T22:48:01.686Z","error": "HTTP 403: page returned an error or blocked the request (captured for reference, not charged)"}]
Pricing and cost example
Pay per event, with platform usage included:
screenshot: $0.002 per successful viewport or element screenshot.screenshot-fullpage-or-pdf: $0.004 per successful full-page screenshot or PDF.
Failed captures are never charged: DNS errors, timeouts, missing selectors and pages that answer with HTTP 4xx or 5xx. For example, 1,000 product pages captured as viewport PNGs cost $2.00, and 500 full-page JPEG captures cost $2.00. You can cap spend with the run's maximum total charge.
Tips and limits
- Use about 3 concurrent pages per 2 GB of memory. Full-page captures of very long pages (above roughly 16,000 px) can be heavy, and WebP is limited by the browser's canvas size.
- Some sites block cloud data-centre IPs, for example with HTTP 403. Those rows are flagged with
errorand not charged. networkidlefalls back gracefully on sites that never stop polling.
Use it from AI agents (MCP), Zapier, Make, n8n or the API
AI agents (Claude, Cursor, VS Code, ChatGPT and other MCP clients). Add Apify's hosted MCP server with just this Actor as a tool:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=steadyline/website-screenshot"}}}
Sign in with Apify (OAuth) on first connect, or add an Authorization: Bearer <APIFY_TOKEN> header. Then ask your agent, for example:
Use steadyline/website-screenshot to take full-page mobile screenshots of these 10 landing pages and give me the image links.
The agent sees this Actor's input schema and output fields, so it can call it without extra prompting. Agents that use the general Apify MCP server can also find it with search-actors.
Zapier, Make and n8n. Use the official Apify app: Zapier "Run Actor" action, Make "Run an Actor" module, or the n8n Apify node. Choose steadyline/website-screenshot, paste the input below, then use "Get dataset items" (or the run's dataset) to send results to Google Sheets, Slack, a CRM or a database.
API (any language). Run it and get the results in one call:
curl -X POST "https://api.apify.com/v2/acts/steadyline~website-screenshot/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://apify.com", "https://www.wikipedia.org/"]}'
Or with the Python client (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("steadyline/website-screenshot").call(run_input={"urls": ["https://apify.com", "https://www.wikipedia.org/"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Works well with other Steadyline Data tools
- Competitor monitoring: find pages changed this week with Site Discovery (
lastmodSince), then screenshot them here. - Domain due diligence: Domain Intel + Tech Stack Detector + a dated screenshot from this Actor.
- Related: Domain Intel (WHOIS/RDAP, DNS, SSL), Site Discovery (sitemaps, robots.txt, llms.txt), Tech Stack Detector.
FAQ
Can it capture the full page?
Yes, set fullPage: true (billed as screenshot-fullpage-or-pdf). Element captures use selector.
Where are the images?
In the run's key-value store. Each dataset row has a public imageUrl you can open or download.
Can I call it like a normal screenshot API? Yes, the Actor supports Apify Standby mode, so it can be called over HTTP. See the Standby tab on this page.
Can I run it on a schedule? Yes. Create an Apify Schedule (or a saved Task with a schedule) and connect a webhook or integration to receive results.
Need a feature or found a bug? Open an issue on the Issues tab of this page or email steadylinedata@proton.me. Built and maintained by Steadyline Data.
Acceptable use and legal
Only capture pages you are allowed to access. Respect each website's terms of service, robots rules and copyright, and do not use this Actor to bypass logins, paywalls or access controls, or to collect personal data unlawfully. Screenshots may contain third-party trademarks and copyrighted material, and you are responsible for how you use them. Steadyline Data is not affiliated with any of the websites you capture.
Support
Questions or feature requests: open an issue on the Actor's Issues tab.
Roadmap: proxy support, so you can capture sites that block data-centre IPs.