Why Developers Need a Free Screenshot API
Most screenshot APIs charge $20–$200/month for basic webpage captures. PageShot delivers the same quality for zero cost.
Website screenshot APIs have become essential developer infrastructure. Whether you are building link previews for a social platform, visual regression testing for a CI/CD pipeline, or generating Open Graph images for SEO, you need a reliable way to convert URLs into images programmatically. The problem is that nearly every screenshot API on the market requires a paid subscription, an API key, and imposes tight usage limits that make prototyping and small-project use painful.
PageShot takes a fundamentally different approach. Built on Chromium via Playwright, it renders pages exactly the way a real browser does, producing pixel-perfect PNG, JPEG, and WebP output. Every feature that paid alternatives gate behind premium tiers — full-page capture, dark mode, ad blocking, element selectors, device emulation, CSS injection, and PDF export — is available in PageShot at no cost. There is no API key to manage, no signup form, and no credit card on file. You send a request, you get a screenshot.
This page walks through a detailed comparison between PageShot and the three most popular paid screenshot APIs: ScreenshotAPI, Urlbox, and Screenshotlayer. You will see exactly what each service offers, what it costs, and why PageShot is the best choice for developers who want a webpage capture API that just works.
PageShot vs Paid Alternatives
A feature-by-feature breakdown of the four most used screenshot APIs in 2026.
| Feature | PageShot | ScreenshotAPI | Urlbox | Screenshotlayer |
|---|---|---|---|---|
| Price | $0 / forever | From $29/mo | From $49/mo | From $19.99/mo |
| API Key Required | No | Yes | Yes | Yes |
| Signup Required | No | Yes | Yes | Yes |
| Rendering Engine | Chromium (Playwright) | Chromium | Chromium | Mixed / Older engine |
| Output Formats | PNG, JPEG, WebP | PNG, JPEG, WebP, PDF | PNG, JPEG, WebP, PDF, SVG | PNG, JPEG, GIF |
| Full Page Capture | Yes | Yes | Yes | Paid plans only |
| Dark Mode Capture | Yes | Yes | Yes | No |
| Ad Blocking | Yes | Pro plan only | Yes | No |
| CSS Injection | Yes | Yes | Yes | No |
| Element Selector | Yes | Yes | Yes | No |
| Device Emulation | Yes | Yes | Yes | Limited |
| HTML to Image | Yes | Enterprise only | Yes | No |
| PDF Export | Yes | Yes | Yes | No |
| Geolocation Emulation | Yes | No | No | No |
| Batch Capture | Up to 5 URLs | Yes (extra cost) | Webhook-based | No |
Why Choose PageShot Over Paid Services
The practical advantages that matter to working developers.
❌ Paid Screenshot APIs
✅ PageShot
Get Started in Seconds
Copy-paste examples for the three most popular languages. No SDK, no dependency, no setup.
# Simple screenshot — capture any public URL curl "https://pageshot.site/v1/screenshot?url=https://example.com" \ --output screenshot.png # Full page, dark mode, WebP format curl "https://pageshot.site/v1/screenshot?url=https://github.com&full_page=true&dark_mode=true&format=webp" \ --output github-dark.webp # Capture a specific element by CSS selector curl -X POST "https://pageshot.site/v1/screenshot" \ -H "Content-Type: application/json" \ -d '{"url": "https://github.com/softvoyagers", "selector": ".pinned-item-list-item-content", "format": "png"}' \ --output element.png
// Capture a screenshot with POST const response = await fetch('https://pageshot.site/v1/screenshot', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://example.com', width: 1280, height: 800, full_page: true, format: 'png' }) }); const buffer = Buffer.from(await response.arrayBuffer()); fs.writeFileSync('screenshot.png', buffer); // Render raw HTML to an image const htmlResponse = await fetch('https://pageshot.site/v1/html', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ html: '<h1 style="color: cyan;">Hello World</h1>', width: 800, height: 600 }) });
import requests # Capture a webpage screenshot response = requests.post( 'https://pageshot.site/v1/screenshot', json={ 'url': 'https://example.com', 'width': 1920, 'height': 1080, 'full_page': True, 'dark_mode': True, 'block_ads': True } ) with open('screenshot.png', 'wb') as f: f.write(response.content) # Generate a PDF from a URL pdf_response = requests.post( 'https://pageshot.site/v1/pdf', json={ 'url': 'https://example.com', 'format': 'A4', 'landscape': False } ) with open('page.pdf', 'wb') as f: f.write(pdf_response.content)
What Developers Build With PageShot
Real-world applications powered by a free screenshot API.
🔗 Link Previews
Generate visual thumbnails for shared links in chat applications, social platforms, and content management systems. Show users what a page looks like before they click.
🧪 Visual Regression Testing
Capture screenshots of your web application after every deployment and compare them against baseline images. Detect unintended layout changes in your CI/CD pipeline.
📊 SEO Monitoring
Take periodic screenshots of your search engine results pages, competitor websites, and landing pages to track visual changes and SERP feature appearance over time.
🎨 Social Media Cards
Render custom HTML templates into images for Open Graph and Twitter Card previews. Create branded social cards with dynamic data using the HTML to image endpoint.
📄 PDF Reports
Convert dashboards, invoices, and data visualizations to PDF documents using the POST /v1/pdf endpoint. Full CSS support means your reports look exactly like the browser version.
🛡️ Security Research
Capture screenshots of suspicious URLs safely, with JavaScript disabled if needed, without exposing your browser to potentially malicious content. Geolocation emulation lets you check region-specific phishing pages.
Detailed Head-to-Head Comparisons
What each paid alternative charges for features PageShot gives away free.
PageShot vs ScreenshotAPI
ScreenshotAPI starts at $29/month for 1,000 screenshots, scaling to $189/month for 50,000 captures. Their free tier offers just 100 screenshots per month with a watermark on every image. Features like ad blocking and proxy rotation are locked behind their $79/month Business plan. PageShot matches every core ScreenshotAPI feature — full-page capture, device emulation, CSS injection, and element selectors — without requiring payment or authentication. For developers building internal tools or small SaaS products, that $348 to $2,268 annual cost difference is significant.
PageShot vs Urlbox
Urlbox positions itself as the premium option, starting at $49/month for 2,000 renders. Their rendering quality is excellent, and they offer unique features like retina screenshots and automated scroll-to-element. However, most of Urlbox's advanced capabilities — dark mode, webhooks, caching — require the $99/month or higher plan. PageShot provides comparable Chromium-based rendering for free. While Urlbox offers a more polished dashboard and analytics, developers who just need a reliable screenshot API for their projects will find PageShot delivers the same output without the invoice.
PageShot vs Screenshotlayer
Screenshotlayer is the budget paid option at $19.99/month, but its rendering engine is older and inconsistent compared to modern Chromium-based alternatives. It lacks dark mode support, CSS injection, element selectors, and PDF export. Full-page capture and viewport customization are restricted to paid plans. Screenshotlayer has not kept pace with modern web standards, making it a poor choice for capturing JavaScript-heavy single-page applications. PageShot surpasses Screenshotlayer in every category while costing nothing.
Complete API Endpoints
Every endpoint is free and requires no authentication. Full documentation at /docs.
GET /v1/screenshot
Capture a screenshot via query parameters. Pass url, format, width, height, full_page, and more. Returns the image directly in the response body.
POST /v1/screenshot
Full-featured screenshot capture via JSON body. Supports all options including selector, css, dark_mode, block_ads, cookies, and headers.
POST /v1/html
Render raw HTML/CSS to a pixel-perfect image. Generate social cards, email previews, and dynamic graphics from templates without deploying a webpage.
POST /v1/pdf
Convert any URL or HTML to a PDF document. Supports A4/Letter format, landscape orientation, custom margins, and header/footer templates with page numbers.
Free Screenshot API FAQ
Answers to the most common questions about using PageShot as your screenshot API.
Is PageShot really free with no hidden costs?
Yes. PageShot is 100% free with no API keys, no signup, no trial period, and no premium tier. It is part of the SoftVoyagers open developer ecosystem. You can make up to 30 requests per minute per IP address at no cost. There are no monthly quotas, no overage fees, and no plans to introduce paid tiers.
How does PageShot compare to ScreenshotAPI, Urlbox, and Screenshotlayer?
PageShot offers comparable Chromium-based rendering quality to ScreenshotAPI and Urlbox, and significantly better rendering than Screenshotlayer. The key difference is cost: PageShot is free while ScreenshotAPI starts at $29/month, Urlbox at $49/month, and Screenshotlayer at $19.99/month. Features like full-page capture, dark mode, ad blocking, CSS injection, and element selectors — which paid services gate behind premium plans — are all included in PageShot at no charge.
What output formats does the free screenshot API support?
PageShot supports PNG (lossless, best for UI captures), JPEG (smaller file size for photographs), and WebP (best compression for web use). You specify the format using the format parameter in your API request. The full documentation covers all output options including quality settings and viewport dimensions.
Can I use PageShot for commercial projects?
Absolutely. PageShot is free for personal, commercial, and enterprise use. There are no licensing restrictions. You can integrate it into SaaS products, internal tools, client projects, and automated workflows. The only constraint is the 30 requests per minute rate limit per IP address, which applies equally to all users.
How fast are screenshots captured?
Most screenshots complete in 1–3 seconds. Complex pages with heavy JavaScript, lazy-loaded images, or slow third-party resources may take up to 10 seconds. You can control the wait behavior with the delay parameter or let PageShot auto-detect when the page is fully loaded. Performance is comparable to paid alternatives since all services ultimately rely on headless Chromium.
Does PageShot store my screenshots or the URLs I capture?
No. Screenshots are generated on-the-fly and streamed directly to you in the HTTP response. PageShot does not store, cache, or log the images it produces. Request metadata is retained only for rate limiting and is automatically purged. Your data stays private.
What if I need more than 30 requests per minute?
For high-throughput workloads, you can self-host PageShot. The entire application is open source and ships with a production-ready Docker image. Clone the repository, run docker compose up, and you have an unlimited private instance with no rate limits. Alternatively, distribute requests across multiple IP addresses for the hosted API.