Migrate from Screenshotlayer to ScreenshotAPI
Replace Screenshotlayer with ScreenshotAPI. Modern features, better pricing, and flexible subscriptions. Complete migration guide with code examples.
Last updated: 2026-03-25
Try ScreenshotAPI free
200 free screenshots/month. No credit card required.
Screenshotlayer is one of the older screenshot APIs, but it has fallen behind modern alternatives in features, rendering quality, and pricing flexibility. If you are using Screenshotlayer and encountering limitations, migrating to ScreenshotAPI gives you modern Chromium rendering, dark mode support, WebP output, SPA waiting strategies, and flexible subscription-based pricing.
Feature Comparison
| ScreenshotAPI | Screenshotlayer | |
|---|---|---|
| Free tier | 200 free screenshots per month | 100/month |
| ~5,000/mo | $19/mo (5,000 screenshots) | $20/mo (5,000 screenshots) |
| ~25,000/mo | $49/mo (25,000 screenshots) | $40/mo (15,000 screenshots) |
| ~100,000/mo | $149/mo (100,000 screenshots) | $80/mo (50,000 screenshots) |
Our advantages:
- 200 free screenshots per month free tier (vs 100/month)
- Flexible credit packs for pay-as-you-go usage
- Screenshotlayer: Part of APILayer marketplace
- Screenshotlayer: Fewer modern features
Parameter Mapping
| Screenshotlayer | ScreenshotAPI | Notes |
|---|---|---|
access_key=xxx (query param) | x-api-key: xxx (header) | Auth method changed |
url | url | Same |
viewport=1440x900 | width=1440&height=900 | Separate params |
fullpage=1 | fullPage=true | Different format |
format=PNG | type=png | Lowercase, renamed |
quality=80 | quality=80 | Same |
delay=5 (seconds) | delay=5000 (milliseconds) | Unit changed |
force=1 | N/A | Not needed |
css_url=... | N/A | Not yet supported |
accept_lang=en | N/A | Not yet supported |
Before: Screenshotlayer (JavaScript)
javascriptconst ACCESS_KEY = 'your_screenshotlayer_key'; async function takeScreenshot(url) { const params = new URLSearchParams({ access_key: ACCESS_KEY, url, viewport: '1440x900', format: 'PNG', fullpage: '0', }); const response = await fetch( `https://api.screenshotlayer.com/api/capture?${params}` ); return Buffer.from(await response.arrayBuffer()); }
After: ScreenshotAPI (JavaScript)
javascriptasync function takeScreenshot(url) { const params = new URLSearchParams({ url, width: '1440', height: '900', type: 'png', waitUntil: 'networkidle' }); const response = await fetch( `https://screenshotapi.to/api/v1/screenshot?${params}`, { headers: { 'x-api-key': process.env.SCREENSHOT_API_KEY } } ); if (!response.ok) throw new Error(`Screenshot failed: ${response.status}`); return Buffer.from(await response.arrayBuffer()); }
Before: Screenshotlayer (PHP)
php$params = http_build_query([ 'access_key' => 'your_screenshotlayer_key', 'url' => 'https://example.com', 'viewport' => '1440x900', 'format' => 'PNG', ]); $image = file_get_contents("https://api.screenshotlayer.com/api/capture?{$params}"); file_put_contents('screenshot.png', $image);
After: ScreenshotAPI (PHP)
php$params = http_build_query([ 'url' => 'https://example.com', 'width' => 1440, 'height' => 900, 'type' => 'png', ]); $ch = curl_init("https://screenshotapi.to/api/v1/screenshot?{$params}"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['x-api-key: sk_live_your_api_key'], ]); $image = curl_exec($ch); curl_close($ch); file_put_contents('screenshot.png', $image);
Before: Screenshotlayer (Python)
pythonimport requests params = { "access_key": "your_screenshotlayer_key", "url": "https://example.com", "viewport": "1440x900", "format": "PNG", } response = requests.get("https://api.screenshotlayer.com/api/capture", params=params) with open("screenshot.png", "wb") as f: f.write(response.content)
After: ScreenshotAPI (Python)
pythonimport requests response = requests.get( "https://screenshotapi.to/api/v1/screenshot", params={ "url": "https://example.com", "width": 1440, "height": 900, "type": "png", "waitUntil": "networkidle", }, headers={"x-api-key": "sk_live_your_api_key"}, ) with open("screenshot.png", "wb") as f: f.write(response.content)
New Features Available After Migration
After switching, you gain access to features Screenshotlayer does not offer:
Dark mode
javascriptconst params = new URLSearchParams({ url: 'https://github.com', width: '1440', height: '900', colorScheme: 'dark', type: 'png' });
WebP output (smaller files)
javascriptconst params = new URLSearchParams({ url: 'https://example.com', width: '1440', height: '900', type: 'webp', quality: '85' });
SPA support with selector waiting
javascriptconst params = new URLSearchParams({ url: 'https://myreactapp.com', width: '1440', height: '900', waitForSelector: '#content-loaded', waitUntil: 'networkidle', type: 'png' });
Migration Steps
- Sign up at screenshotapi.to — 200 free screenshots/month included
- Update endpoint:
api.screenshotlayer.com/api/capture→screenshotapi.to/api/v1/screenshot - Update auth: Move from
access_keyquery param tox-api-keyheader - Update params:
viewport→width+height,format→type,fullpage→fullPage - Update delay: Convert seconds to milliseconds
- Test: Compare screenshot output visually
- Cancel Screenshotlayer subscription
Next Steps
- Browse the API documentation for all available parameters
- See the best screenshot APIs for a broader comparison
- Check pricing for subscription plans
- Try the cURL guide for quick testing
Frequently asked questions
Why switch from Screenshotlayer?
Screenshotlayer uses subscription pricing starting at $19.99/month, offers only basic screenshot features, has no dark mode support, and is part of a 100+ API ecosystem with limited focus on screenshot quality. ScreenshotAPI offers flexible subscription-based pricing, modern features, and SDKs for all major languages.
Is the migration difficult?
No. Both are REST APIs. You update the endpoint URL, switch from access_key query parameter to x-api-key header, and rename a few parameters. Most migrations take under 30 minutes.
Does ScreenshotAPI have a free tier like Screenshotlayer?
ScreenshotAPI provides 200 free screenshots/month. Screenshotlayer offers 100 free screenshots per month on its free tier, but with significant limitations (low resolution, limited format options, no HTTPS capture on free plan).
Will my screenshots look better?
Likely yes. ScreenshotAPI uses modern Chromium for rendering with full CSS Grid, Flexbox, and web font support. Screenshotlayer's rendering engine may not support the latest CSS features.
Related resources
Start capturing screenshots today
Create a free account and get 200 free screenshots per month to try the API. No credit card required.