Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →To capture a website with Screenshotlayer from PHP, send a GET request to https://api.screenshotlayer.com/api/capture with your access_key and the target url, then check the response before saving it as an image. The target URL must include its protocol, such as https://. This guide shows a cURL-based PHP pattern and how to handle options, errors, plan limits, and India-specific billing questions.
What the Screenshotlayer request needs
Screenshotlayer documents the capture endpoint as https://api.screenshotlayer.com/api/capture. Its required query parameters are access_key and url; include the complete target URL, including https:// or http://. The specification also shows an HTTP endpoint and says paid customers may use HTTPS. For a production integration, use the HTTPS endpoint.
The call is a GET request. Additional capture settings are query parameters too. The API can return an image, but the specification also describes error responses, so do not treat every response body as a valid image.
Make a basic capture with PHP cURL
This example keeps the access key in an environment variable and uses http_build_query() to encode query values. It checks the HTTP response and content type before writing the response body to disk. The code illustrates an integration pattern; verify current parameter spelling and response behavior in the Screenshotlayer API documentation before deploying.
#1 Best Overall
<?php
$accessKey = getenv('SCREENSHOTLAYER_ACCESS_KEY');
if ($accessKey === false || $accessKey === '') {
throw new RuntimeException('Set SCREENSHOTLAYER_ACCESS_KEY in the server environment.');
}
$params = [
'access_key' => $accessKey,
'url' => 'https://example.com/',
];
$endpoint = 'https://api.screenshotlayer.com/api/capture?' . http_build_query($params);
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 60,
]);
$body = curl_exec($ch);
if ($body === false) {
$error = curl_error($ch);
curl_close($ch);
throw new RuntimeException('Screenshotlayer request failed: ' . $error);
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE) ?: '';
curl_close($ch);
if ($status < 200 || $status >= 300 || stripos($contentType, 'image/') !== 0) {
// Error bodies may be JSON or another non-image response; log safely on the server.
throw new RuntimeException('Screenshotlayer did not return an image. HTTP ' . $status . '; content type: ' . $contentType);
}
if (file_put_contents(__DIR__ . '/screenshot.png', $body) === false) {
throw new RuntimeException('Could not write screenshot.png.');
}
echo 'Saved screenshot.png';
Protect the access key
- Set
SCREENSHOTLAYER_ACCESS_KEYin server-side configuration or your hosting environment. Do not put the key in HTML, browser JavaScript, or a publicly served PHP file. - Do not commit a real key to source control. If a key has been exposed, replace it through the provider’s account controls.
- Log enough information to diagnose failures—such as HTTP status and a sanitized error message—but avoid logging the secret or forwarding it to a client.
Return the image from a PHP endpoint instead of saving it
If your application needs to stream the result, first perform the same status and content-type checks. Only then send an appropriate image Content-Type header and the image bytes. On an error, return a suitable application error response rather than labeling an error object as PNG. Avoid exposing the access key or raw provider response to an unauthenticated visitor.
Add capture options
The specification documents these useful parameters. PNG is the default format; the provider also describes JPEG and GIF output. Its documented default viewport is 1440 × 900.
Rank #2
| Parameter | Purpose | Example |
|---|---|---|
fullpage |
Request a full-page capture. | fullpage=1 |
width |
Set the output or thumbnail width. | width=800 |
viewport |
Set the viewport dimensions. | Use the format specified in the current API documentation. |
format |
Select an output format. | PNG is the documented default; JPEG and GIF are also described. |
To add an option, add it to the PHP $params array before constructing the URL. For example, add 'fullpage' => 1 or 'width' => 800. Check the live documentation for accepted values and exact formatting, particularly for viewport and format.
Common errors and what to check
Screenshotlayer documents errors for missing or invalid access keys, exhausted usage limits, and invalid URLs. Check the HTTP response and response body in a controlled server-side log; an error response is not an image.
Free tools Windows power users keep installed
One-click scans. No signup required.
- Missing or invalid access key: confirm the environment variable is present in the PHP runtime, contains the right key, and is not being sent with extra whitespace. Do not echo it into a page or log.
- Usage limit reached: check the account’s current allowance and plan. The provider says it notifies users at 75%, 90%, and 100% of the monthly allowance; its FAQ describes overage charges after the quota is exhausted. Confirm the current account terms before relying on overages.
- Invalid URL: send a complete, correctly encoded URL with its scheme, such as
https://example.com/. Ensure the target is not an empty string or malformed value. - cURL transport failure or timeout: distinguish a local network/TLS/DNS issue from an API error by checking whether
curl_exec()returnedfalse. Set a reasonable timeout for your application and retry only transient failures, with a limit to avoid duplicate usage. - Non-image response saved with an image extension: inspect HTTP status and content type before writing. Store or display an error path separately instead of returning the body as PNG.
Choose a plan for the workload
Screenshotlayer’s pricing page, accessed 2026-10-03, lists the following USD prices and quotas. The provider says the free plan is for non-commercial use and paid tiers include commercial use. Prices and included features can change; confirm the plan page and terms before purchase.
| Plan | Price listed | Monthly snapshots | Listed features relevant to selection |
|---|---|---|---|
| Free | USD 0 per month | 100 | Non-commercial use |
| Basic | USD 19.99 monthly or USD 215.99 yearly | 10,000 | Commercial use, Retina/2x and WebP support, 10 dedicated workers |
| Professional | USD 59.99 monthly or USD 629.99 yearly | 30,000 | 20 dedicated workers; FTP/S3 export options |
| Enterprise | USD 149.99 monthly or USD 1,529.99 yearly | 75,000 | 40 dedicated workers; FTP/S3 export options |
Compare the plans against your expected monthly captures, whether the use is commercial, whether Retina/2x or WebP is needed, how much concurrent work dedicated workers must handle, and whether exports to FTP or S3 matter. Compare annual and monthly billing on the live pricing page rather than assuming that annual billing is a fixed discount.
Rank #4
What Indian developers should verify
The provider’s published prices are in USD. Its FAQ lists Visa, MasterCard, Discover, and Diners Club, but does not establish whether a particular Indian-issued card will work. The reviewed provider pages also do not establish INR billing, local tax treatment, or India-specific API behavior. Check the currency and final amount shown at account checkout, and ask Screenshotlayer about billing and tax details for your situation. Do not assume that the listed USD price is the final amount charged in India.
Or skip the browser setup
If you want a screenshot API with a one-call request, ScreenshotNeo is an alternative. This cURL call returns a WebP screenshot for the target URL; the ScreenshotNeo API documentation covers parameters and response handling.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallcurl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, and failed loads are not billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000.
Sign up for ScreenshotNeo’s free plan.
Frequently Asked Questions
Does Screenshotlayer return PNG by default?
Yes. Its API specification documents PNG as the default and also describes JPEG and GIF output.
Can I use the Screenshotlayer free plan for a commercial PHP application?
The provider’s pricing page describes the free tier as non-commercial use; check its live plan terms for your intended deployment.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




