Automate website screenshots via API

Set up recurring screenshots, web scraping, PDF conversions, and animated screenshots. Effortlessly capture and update data on your schedule.

Built for developers

Fast, reliable website screenshots with a powerful API. Seamless integration, instant results.

Blazing-fast performance

Generate website screenshots in seconds. Optimized for speed, efficiency, and reliability.

Documentation for everything

Clear, detailed, and developer-friendly docs to get you started fast. Every feature, every endpoint—fully covered.

Geo-targeted content with IP selection

Access location-specific content with geo-targeted content, allowing you to choose the country of your IP, bypass geo-restrictions, and collect accurate, region-based data for precise market insights.

Country-Specific Access: Choose the country of your IP to access location-specific content.

No Geo Blocking: Bypass geo-restrictions and collect region-based data effortlessly.

Localized Content: Ensure accurate and localized results for your business.

<html lang="en" op="news"><head><meta name="referrer" content="origin"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" type="text/css" href="news.css?NN8u7ovhSCEX5FaImBQe"> <link rel="icon" href="y18.svg"><link rel="alternate" type="application/rss+xml" title="RSS" href="rss"> <title>Hacker News</title></head><body><center><table id="hnmain" border="0" cellpadding="0" cellspacing="0" width="85%" bgcolor="#f6f6ef"> <tbody><tr><td bgcolor="#ff6600"><table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding:2px"><tbody><tr><td style="width:18px;padding-right:4px"><a href="https://news.ycombinator.com">...

Automated & scheduled scraping

Automate your data collection, enabling recurring extractions, reducing manual effort, and easily managing tasks directly from your dashboard to keep your data always up to date.

Get Fresh Data: Set up recurring extractions to keep your data fresh and up to date.

Automate Scraping: Reduce manual work with fully automated scraping tasks.

Schedule Management: Monitor and manage schedules easily from your dashboard.

GPU rendering for high performance

Enhance performance and image quality with the power of GPU rendering.

Increased Performance and Speed: Leverage GPU acceleration to drastically reduce rendering times and boost overall performance.

Optimized Video Quality: Achieve professional-grade visuals with superior video quality powered by advanced GPU processing.

Scalability and Cost Efficiency: Seamlessly scale operations while maintaining cost efficiency through optimized GPU resource management.

Screenshot API

Fast and scalable Screenshot API for developers

Avoid the complexity of managing headless browsers: use our API to capture screenshots, generate PDFs, or scrape any website by URL. Get started for free with up to 100 requests. It’s scalable, reliable, and developer-friendly.

Website Screenshot API

Capture high-quality screenshots of any webpage with ease. Convert to JPEG, PNG, WEBP, or GIF formats.

Animated Screenshot API

Create animated screenshots to visualize webpage interactions and changes. Export to WEBM, MP4, MOV and AVI formats.

Web Scraping API

Extract html and data from any website with our powerful web scraping capabilities. Convert to HTML or Markdown format.

HTML to PDF API

Convert HTML content into high-quality PDFs effortlessly.

Automated Screenshot API

Automate screenshot, web scraping, or HTML to PDF conversion, for regular updates or monitoring.

Create screenshots without touching a single line of code

No-code integrations

Quickly render website screenshots with Zapier, Airtable, Make and your preferred no-code platforms

Code & SDK

Built for developers, in any language you love


import fs from "node:fs";
import { SDK } from "@screenshotmax/sdk";

// create API client
const sdk = new SDK("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");

// set up options and fetch screenshot (chaining methods)
const result = await sdk.screenshot
  .setOptions({
    url: "https://example.com",
    format: "png",
  })
  .fetch();

fs.writeFileSync("screenshot.png", Buffer.from(result.data, "binary"));
console.log("Image saved to screenshot.png");

from screenshotmax import SDK
from screenshotmax.enums import ImageFormat
from screenshotmax.options import ScreenshotOptions

sdk = SDK("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY")

# set up options
opts = ScreenshotOptions(
  url="https://example.com",
  format=ImageFormat.PNG
)

# fetch screenshot (chaining methods)
result, headers = sdk.screenshot.set_options(opts).fetch()

# save to file
output_file = "screenshot.png"
with open(output_file, "wb") as f:
  f.write(result)
print("Image saved to screenshot.png")
        

use ScreenshotMax\SDK;
use ScreenshotMax\Options\ScreenshotOptions;

$sdk = new SDK("YOUR_ACCESS_KEY", "YOUR_SECRET_KEY");

// set up options
$opts = new ScreenshotOptions();
$opts->url = "https://example.com";
$opts->format = "png";
$result = $sdk->screenshot->setOptions($opts)->fetch();

// optionally: generate signed URL
// (https://api.screenshotmax.com/v1/screenshot?url=https%3A%2F%2Fexample.com&format=png&access_key=YOUR_ACCESS_KEY&signature=370f5b161bc59eed13b76........1f778635d7fc595dbab12)
$url = $sdk->screenshot->getUrl();

// save screenshot to file
file_put_contents("screenshot.png", $result["data"]);
echo "Image saved to screenshot.png\n";
        

package main

import (
    "fmt"
    "io"
    "net/http"
    "net/url"
    "os"
)

func main() {
    client := &http.Client{}

    endpoint := "https://api.screenshotmax.com/v1/screenshot"
    method := "GET"

    req, err := http.NewRequest(method, endpoint, nil)
    if err != nil {
        fmt.Println("Error creating request:", err)
        return
    }

    params := url.Values{}
    params.Add("access_key", "YOUR_ACCESS_KEY")
    params.Add("url", "https://example.com")
    params.Add("format", "png")

    req.URL.RawQuery = params.Encode()

    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Request failed:", err)
        return
    }
    defer resp.Body.Close()

    if resp.StatusCode != http.StatusOK {
        fmt.Println("Unexpected status:", resp.Status)
        return
    }

    outFile, err := os.Create("screenshot.png")
    if err != nil {
        fmt.Println("Error creating file:", err)
        return
    }
    defer outFile.Close()

    _, err = io.Copy(outFile, resp.Body)
    if err != nil {
        fmt.Println("Failed to write file:", err)
        return
    }

    fmt.Println("Image saved to screenshot.png")
}
                  

using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var client = new HttpClient();

        var url = "https://api.screenshotmax.com/v1/screenshot" +
                  "?access_key=YOUR_ACCESS_KEY" +
                  "&url=https://example.com" +
                  "&format=png";

        try
        {
            var response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();

            var imageBytes = await response.Content.ReadAsByteArrayAsync();
            await File.WriteAllBytesAsync("screenshot.png", imageBytes);

            Console.WriteLine("Image saved to screenshot.png");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Request failed: " + ex.Message);
        }
    }
}
                  

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class ScreenshotRequest {
    public static void main(String[] args) {
        HttpClient client = HttpClient.newHttpClient();

        String url = "https://api.screenshotmax.com/v1/screenshot" +
                      "?access_key=YOUR_ACCESS_KEY" +
                      "&url=https://example.com" +
                      "&format=png";

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .GET()
                .build();

        try {
            HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());

            if (response.statusCode() == 200) {
                try (FileOutputStream fos = new FileOutputStream("screenshot.png")) {
                    fos.write(response.body());
                }
                System.out.println("Image saved to screenshot.png");
            } else {
                System.out.println("Failed with HTTP status: " + response.statusCode());
            }
        } catch (IOException | InterruptedException e) {
            System.out.println("Request failed: " + e.getMessage());
        }
    }
}
                  

Focus on your app
We handle the screenshots

You have a business to run. Stop worrying about rendering issues, browser inconsistencies, and automation. Capture perfect website screenshots effortlessly—we've got it covered.

10,000,000+

Requests

24/7

Support

5 stars

Satisfaction

Pricing

Start for free, upgrade as you grow

Transparent and predictable pricing. Choose the plan that matches your workload, from startups to enterprise-level needs.

Monthly
Yearly 2 months free
FREE
$ 0

Free trial

Limited to 100 requests

All features included except Automated Screenshot, IP Location and GPU Rendering

10 requests per minute

Basic
$ 19 190

Monthly Yearly

2,000 requests per month 24,000 requests per year

Website Screenshot

HTML to PDF

Blocking Ads & Cookie Banners

Cache, Webhook & Zapier

Stealth Mode

Signed Requests

$0.009 per extra request

50 requests per minute

Get started for free
MOST POPULAR
Growth
$ 59 590

Monthly Yearly

10,000 requests per month 120,000 requests per year

All Basic Plan Features
Website Screenshot
HTML to PDF
Blocking Ads & Cookie Banners
Cache, Webhook & Zapier
Stealth Mode
Signed Requests

Animated Screenshot

Storage

$0.006 per extra request

100 requests per minute

Get started for free
Scale
$ 199 1,990

Monthly Yearly

50,000 requests per month 600,000 requests per year

All Basic + Growth Plans Features
Website Screenshot
HTML to PDF
Animated Screenshot
Blocking Ads & Cookie Banners
Storage
Cache, Webhook & Zapier
Stealth Mode
Signed Requests

Web Scraping

Choose IP Location

GPU Rendering

Scheduled Tasks (Full Automation)

Priority Support

$0.003 per extra request

200 requests per minute

Get started for free
?

Is ScreenshotMAX free for taking screenshots?

Yes! With our API, you can capture up to 100 website screenshots for free, including animated screenshots, web scraping, and HTML-to-PDF conversion. Upgrade to a paid plan for additional features like GPU rendering, storage, and scheduled tasks, as well as higher limits.

?

Can I easily cancel my subscription?

Yes! You can cancel anytime from the ‘Manage Subscription’ page by selecting ‘Cancel Plan.’ You won’t be charged again, and you’ll retain access to your screenshot quota until the end of your billing period.

?

Is API integration easy for developers?

Yes! Our API is developer-friendly, offering clear documentation and examples to help you seamlessly integrate screenshot capture, web scraping, and PDF generation. Check out our documentation for more details.

?

Can I use ScreenshotMAX for web scraping?

Yes! Our API allows you to efficiently extract website data, choose your IP location, and schedule tasks—perfect for web scraping, data mining, and automation. You can also convert HTML to PDF and capture animated screenshots.

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