Code Examples

Take Screenshots with Java

Ready-to-copy Java code for capturing website screenshots, generating PDFs, and processing pages at scale. Uses java.net.http.HttpClient (Java 11+).

Quick Start

Screenshot in Java — minimal example

The simplest way to capture a screenshot. Just a URL and your API key.

Javaquickstart
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.screenshotdev.com/v1/screenshot?url=https://example.com&access_key=YOUR_ACCESS_KEY"))
    .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
Files.write(Path.of("screenshot.png"), response.body());
Full Example

Production-ready Java script

Complete working script with options for viewport, format, full page capture, and error handling.

Javafull example
import java.io.IOException;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;

public class Screenshot {
    private static final String API_KEY = "YOUR_ACCESS_KEY";
    private static final String BASE_URL = "https://api.screenshotdev.com/v1/screenshot";
    private static final HttpClient client = HttpClient.newHttpClient();

    public static byte[] takeScreenshot(
        String url, String format, int width, boolean fullPage
    ) throws IOException, InterruptedException {
        var query = String.join("&",
            "url=" + URLEncoder.encode(url, StandardCharsets.UTF_8),
            "access_key=" + API_KEY,
            "format=" + format,
            "width=" + width,
            "full_page=" + fullPage
        );
        var request = HttpRequest.newBuilder()
            .uri(URI.create(BASE_URL + "?" + query))
            .build();
        var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
        if (response.statusCode() != 200) {
            throw new IOException("Screenshot failed (" + response.statusCode() + "): "
                + new String(response.body()));
        }
        return response.body();
    }

    public static void main(String[] args) throws Exception {
        byte[] img = takeScreenshot("https://example.com", "webp", 1440, true);
        Files.write(Path.of("screenshot.webp"), img);
        System.out.printf("Saved screenshot.webp (%d bytes)%n", img.length);
    }
}
Advanced

More Java examples

PDF generation, batch processing, webhooks, CSS/JS injection, and S3 upload.

PDF Generation

Javapdf
var query = String.join("&",
    "url=" + URLEncoder.encode("https://example.com", StandardCharsets.UTF_8),
    "access_key=YOUR_ACCESS_KEY",
    "format=a4",
    "landscape=false",
    "margin=20px"
);
var request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.screenshotdev.com/v1/pdf?" + query))
    .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
Files.write(Path.of("page.pdf"), response.body());

Batch Screenshots

Javabatch
var urls = List.of(
    "https://example.com",
    "https://github.com",
    "https://news.ycombinator.com"
);

var futures = urls.stream().map(url -> CompletableFuture.supplyAsync(() -> {
    try {
        byte[] img = takeScreenshot(url, "webp", 1280, false);
        var host = URI.create(url).getHost();
        Files.write(Path.of(host + ".webp"), img);
        return host + ".webp (" + img.length + " bytes)";
    } catch (Exception e) {
        return "Failed: " + url + " — " + e.getMessage();
    }
})).toList();

futures.forEach(f -> System.out.println("  " + f.join()));

Async with Webhooks

Javawebhooks
var body = """
    {
      "url": "https://example.com",
      "access_key": "YOUR_ACCESS_KEY",
      "webhook_url": "https://your-app.com/api/webhooks/screenshot",
      "format": "webp",
      "full_page": true
    }
    """;
var request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.screenshotdev.com/v1/screenshot"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Job queued: " + response.body());

Custom CSS/JS Injection

Javainject
var query = String.join("&",
    "url=" + URLEncoder.encode("https://example.com", StandardCharsets.UTF_8),
    "access_key=YOUR_ACCESS_KEY",
    "inject_css=" + URLEncoder.encode(
        "body { font-family: 'Inter', sans-serif; } .ad { display: none; }",
        StandardCharsets.UTF_8),
    "inject_js=" + URLEncoder.encode(
        "document.querySelectorAll('[data-cookie-banner]').forEach(el => el.remove())",
        StandardCharsets.UTF_8),
    "block_ads=true"
);
var request = HttpRequest.newBuilder()
    .uri(URI.create(BASE_URL + "?" + query))
    .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
Files.write(Path.of("clean.webp"), response.body());

S3 Upload

Javas3
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;

// 1. Capture
byte[] img = takeScreenshot("https://example.com", "webp", 1280, false);

// 2. Upload
var s3 = S3Client.create();
s3.putObject(
    PutObjectRequest.builder()
        .bucket("my-screenshots")
        .key("captures/example-com.webp")
        .contentType("image/webp")
        .build(),
    RequestBody.fromBytes(img)
);

Try it live

Test the API in the interactive playground — pre-filled with Java snippets.

Setup

Installation

Install the HTTP library used in the examples above.

Terminalinstall
# No dependencies — uses java.net.http from Java 11+

Uses java.net.http.HttpClient (Java 11+). Any HTTP client that supports GET requests will work.

More Examples

Code examples in other languages

Start capturing screenshots
with Java today.

100 free API calls per month. No credit card. First screenshot in under 30 seconds.

Take Screenshots with Java — ScreenshotDEV