# 1. Create the batch
curl -X POST https://api.screenshotcenter.com/v1/batch/create \
-H "X-API-KEY: YOUR_API_KEY" \
-F "[email protected]" \
-F "country=us" \
-F "size=page" \
-F "name=Site audit — Feb 2026" \
-F "hide_ads=true" \
-F "format=png"
# => { "id": 98765, "status": "processing", ... }
# 2. Poll for status
curl "https://api.screenshotcenter.com/v1/batch/info?key=YOUR_API_KEY&id=98765"
# => { "status": "finished", "count": 1240, "processed": 1238, "failed": 2, "zip_url": "https://..." }
# 3. Download the ZIP
curl -o screenshots.zip "https://..."
import { ScreenshotCenterClient } from 'screenshotcenter';
import { readFileSync } from 'fs';
const client = new ScreenshotCenterClient({ apiKey: 'YOUR_API_KEY' });
const urls = readFileSync('urls.txt', 'utf8').trim().split('\n');
const batch = await client.batch.create(urls, {
country: 'us',
size: 'page',
name: 'Site audit — Feb 2026',
hideAds: true,
});
const result = await client.batch.waitFor(batch.id);
await client.batch.saveZip(result.id, './screenshots.zip');
console.log(`Done — ${result.processed} captured, ${result.failed} failed`);
from screenshotcenter import ScreenshotCenterClient
client = ScreenshotCenterClient(api_key="YOUR_API_KEY")
with open("urls.txt") as f:
urls = f.read().strip().splitlines()
batch = client.batch.create(urls, country="us", size="page",
name="Site audit — Feb 2026", hide_ads=True)
result = client.batch.wait_for(batch["id"], timeout=300)
client.batch.save_zip(result["id"], "./screenshots.zip")
print(f"Done — {result['processed']} captured, {result['failed']} failed")
use ScreenshotCenter\Client;
$client = new Client(getenv('SCREENSHOTCENTER_API_KEY'));
$urls = file('urls.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$batch = $client->batch->create($urls, [
'country' => 'us',
'size' => 'page',
'name' => 'Site audit — Feb 2026',
'hide_ads' => true,
]);
$result = $client->batch->waitFor($batch['id']);
$client->batch->saveZip($result['id'], './screenshots.zip');
echo "Done — {$result['processed']} captured, {$result['failed']} failed\n";
import (
"fmt"
sc "github.com/juliensobrier/screenshotcenter-go"
)
client := sc.New("YOUR_API_KEY")
urls, _ := sc.ReadLines("urls.txt")
batch, _ := client.Batch.Create(urls, &sc.BatchParams{
Country: "us",
Size: "page",
Name: "Site audit — Feb 2026",
HideAds: true,
})
result, _ := client.Batch.WaitFor(batch.ID, nil)
client.Batch.SaveZip(result.ID, "./screenshots.zip", nil)
fmt.Printf("Done — %d captured, %d failed\n", result.Processed, result.Failed)
require "screenshotcenter"
client = ScreenshotCenter::Client.new(ENV["SCREENSHOTCENTER_API_KEY"])
urls = File.readlines("urls.txt", chomp: true)
batch = client.batch.create(urls,
country: "us",
size: "page",
name: "Site audit — Feb 2026",
hide_ads: true
)
result = client.batch.wait_for(batch["id"])
client.batch.save_zip(result["id"], "./screenshots.zip")
puts "Done — #{result['processed']} captured, #{result['failed']} failed"
import io.screenshotcenter.ScreenshotCenterClient;
import io.screenshotcenter.models.*;
import java.nio.file.*;
public class Main {
public static void main(String[] args) throws Exception {
var client = new ScreenshotCenterClient("YOUR_API_KEY");
var urls = Files.readAllLines(Path.of("urls.txt"));
var batch = client.batch().create(urls, new BatchParams()
.country("us").size("page")
.name("Site audit — Feb 2026").hideAds(true));
var result = client.batch().waitFor(batch.getId());
client.batch().saveZip(result.getId(), "./screenshots.zip");
System.out.printf("Done — %d captured, %d failed%n",
result.getProcessed(), result.getFailed());
}
}
using ScreenshotCenter;
var client = new ScreenshotCenterClient("YOUR_API_KEY");
var urls = await File.ReadAllLinesAsync("urls.txt");
var batch = await client.Batch.CreateAsync(urls, new BatchParams {
Country = "us",
Size = "page",
Name = "Site audit — Feb 2026",
HideAds = true,
});
var result = await client.Batch.WaitForAsync(batch.Id);
await client.Batch.SaveZipAsync(result.Id, "./screenshots.zip");
Console.WriteLine($"Done — {result.Processed} captured, {result.Failed} failed");