Blog
Screenshot rendering
min read

How to take website screenshots with PHP

Capture website screenshots in PHP using popular libraries like , Puppeteer, or Screenshot API as a Service. Learn the pros and cons of each approach.

Taking automated website screenshots from PHP can be daunting—especially when juggling server setup, headless browser quirks, and error handling. Here’s a practical guide comparing three different approaches so you can choose the one that fits your project, your resources, and your timeline.

Selenium for PHP: run chrome headlessly

PHP Webdriver gives you full control over a real browser like Chrome or Firefox, allowing Javascript execution, network throttling, and custom cookies—making it ideal for highly dynamic or interactive pages. However, it does require maintaining headless browser binaries and drivers, and can be a bit heavyweight if you only need simple snapshot functionality.

Example (using php-webdriver):


addArguments([
    '--headless',
    '--disable-gpu',
    '--window-size=1280,720'
]);

$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);

$driver = RemoteWebDriver::create($host, $capabilities);
$driver->get('https://example.com');

$screenshot = $driver->takeScreenshot();
file_put_contents('selenium-screenshot.png', $screenshot);

$driver->quit();
echo "Screenshot saved as selenium-screenshot.png\n";

Puppeteer equivalent in PHP

Using PuPHPeteer (no maintened anymore) option offers a cleaner, more concise API similar to Node.js Puppeteer and is often faster to set up, especially when using Docker. However, it still requires headless Chrome and up-to-date PHP extension support, which can be a limitation in some environments.

Example (using nesk/puphpeteer):


launch([
    'args' => ['--no-sandbox', '--disable-setuid-sandbox'],
]);

$page = $browser->newPage();
$page->setViewport(['width' => 1280, 'height' => 720]);
$page->goto('https://example.com', ['waitUntil' => 'networkidle2']);
$page->screenshot(['path' => 'puppeteer-screenshot.png', 'fullPage' => true]);

$browser->close();
echo "Screenshot saved as puppeteer-screenshot.png\n";

ScreenshotMAX – Screenshot API as a Service

If you’d rather skip server maintenance, dependencies, and complexity, ScreenshotMAX offers a powerful alternative.

Why ScreenshotMAX?

You don’t need to manage browsers or drivers. ScreenshotMAX is ultra-reliable, fast, and scalable. It offers advanced features like screen size control, delays, CSS injection, authentication, PDF export, and more—all with pay-as-you-go pricing, so you never waste resources.

Basic PHP example (direct HTTP request)


 $accessKey,
        'url'       => $url,
        'width'     => 1280,
        'height'    => 720,
        'full_page' => 'true',
    ])
);

file_put_contents('screenshotmax-basic.png', $response);
echo "Screenshot saved via ScreenshotMax (basic method)\n";

PHP SDK example

Here is an example of using the ScreenshotMax PHP SDK


capture([
    'url'       => 'https://example.com',
    'width'     => 1280,
    'height'    => 720,
    'full_page' => true,
]);

file_put_contents('screenshotmax-sdk.png', $result->getImage());
echo "Screenshot saved via ScreenshotMax SDK\n";

Comparison table

Feature Selenium Puppeteer (PHP) ScreenshotMax (SaaS)
Dependency setup Browser & WebDriver required Headless Chrome, Puphpeteer lib None (cloud API)
Control over page Full browser environment Full browser environment Limited to API parameters
Maintenance High (binaries, updates) Medium Low
Performance Moderate (self-hosted) Better than Selenium Very fast (cloud-optimized)
Scalability Self-managed Self-managed Fully managed
Pricing Infrastructure costs Infrastructure costs API usage-based

Which one is right for you?

If you need to automate complex browser interactions or generate screenshots in tightly controlled environments, Selenium or Puppeteer offers fine-grained control. It’s ideal for one-off screenshots, local development, or workflows where you need to manipulate the DOM or wait for dynamic content.

However, if your goal is to capture hundreds or thousands of screenshots reliably, especially in a production setting, a screenshot API like ScreenshotMAX is a better choice. It handles the infrastructure, parallel processing, and scaling for you, so you don’t have to worry about memory limits, browser crashes, or queueing jobs manually. You just call the API and get your result back quickly, with consistent rendering and high availability. It’s purpose-built for bulk screenshot tasks and large workloads.

If you need maximum control and flexibility, go with Selenium or Puppeteer. If you prefer minimal maintenance and effortless scalability, choose ScreenshotMAX.

Our mission is to empower your team to ship faster, stress-free. With ScreenshotMAX, you get pixel-perfect results without the hassle of browser upkeep—perfect when you want to focus on your product, not plumbing.

Get started with ScreenshotMAX today

  1. Sign up at screenshotmax.com
  2. Grab your free API key
  3. Try it with our REST API doc and PHP guide
  4. Start taking reliable screenshots within minutes!
Published on

Read more screenshot rendering

Get practical tips, detailed guides, trusted best practices and updates.

Start now

Take website screenshots in minutes
No browser setup, no headaches, no scaling concerns

Complete API for rendering website screenshots, HTML to PDF, animated screenshots, web page scraping, and scheduled screenshots.

No credit card required