Website Screenshot API for Developers
Turn any URL into a full-page image, automate browser actions, schedule recurring captures, and deliver every result directly to storage you control. Start with 100 free captures and move from one request to bulk production jobs without changing platforms.
- 100 free captures monthly
- No concurrency throttling
- Your storage, your retention
api.addscreenshots.com/screenshots{
"url": "https://example.com",
"fullpage": true,
"s3": "example-screenshots"
}Quick Start: Screenshot a URL in 60 Seconds
Authenticate with your API key and send requests to https://api.addscreenshots.com/screenshots. Control viewport, load waits, CSS and JavaScript injection, and where screenshots land—all with a single payload.
Node.js (axios)
import axios from "axios";
const payload = {
urls: [
"https://example.com",
"https://example.com/pricing"
],
s3: "example-screenshots",
folder: "{domain}",
file: "{filepath}",
fullpage: true
};
const response = await axios.post(
"https://api.addscreenshots.com/screenshots/bulk/multi?apikey=" +
process.env.ADDSCREENSHOTS_KEY,
payload,
{ headers: { "Content-Type": "application/json" } }
);
console.log(response.data.message, response.data.jobId);
Python (requests)
import os
import requests
payload = {
"url": "https://example.com/pricing",
"fullpage": True,
"wait": 3500,
"json": True
}
response = requests.post(
"https://api.addscreenshots.com/screenshots",
params={"apikey": os.environ["ADDSCREENSHOTS_KEY"]},
json=payload
)
print(response.json())
PHP (cURL)
<?php
$payload = [
"url" => "https://example.com/login",
"section" => "#hero",
"format" => "png"
];
$ch = curl_init("https://api.addscreenshots.com/screenshots?apikey=" . getenv("ADDSCREENSHOTS_KEY"));
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>Ruby (Net::HTTP)
require "json"
require "net/http"
uri = URI("https://api.addscreenshots.com/screenshots/bulk/multi?apikey=#{ENV["ADDSCREENSHOTS_KEY"]}")
payload = {
urls: ["https://example.com/dashboard"],
webhook: "https://hooks.example.com/screenshots",
webhookheaders: { "x-hook-secret" => "demo-secret" },
metadata: true,
fullpage: true
}
request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
Explore the GET and POST API reference plus advanced guides for CSS overrides, script injection, and storage templates.
Need inline payloads? See JSON base64 screenshot responses for API-ready image delivery.
Need a quick capture workflow? Use the URL to image converter or dive into the full page website screenshot tool for examples.
Why teams choose Add Screenshots
- No throttling or queueing: Capture high-volume batches without hidden concurrency caps.
- Global parity testing: Route jobs through three regions to validate localized pricing, consent banners, and CDN behavior.
- Automation-friendly: Schedule recurring jobs, trigger webhooks, and chain workflows via Zapier, Make, or custom integrations.
- Developer observability: Access usage logs, diff highlights, and granular response codes to troubleshoot quickly.
- Flexible delivery: Stream captures to S3, Azure Blob, Google Cloud Storage, Cloudflare R2, FTP/SFTP, or email.
- Format control: Choose PNG, JPEG, WEBP, or AVIF via the image format guide and tune quality settings.
Automation workflows the API unlocks
Visual QA and regression testing
Pair screenshots with diff detection to alert engineering when UI changes exceed configurable thresholds. Capture before/after views during release pipelines or nightly builds.
Competitor and price monitoring
Schedule hourly captures across US, Europe, and Australia / Asia Pacific to track competitor pricing, promotional banners, and checkout flows. Drop assets into S3, share to Slack, or archive for compliance.
Compliance and record keeping
Generate timestamped captures for legal holds, advertising approvals, and regulatory submissions. Retain residency control by routing jobs through specific regions and storage buckets.
Add Screenshots vs other website screenshot APIs
| Capability | Add Screenshots | Urlbox | ApiFlash | Site-Shot |
|---|---|---|---|---|
| No throttling on concurrent jobs | Yes | Limits by plan | Limits by plan | Queue delays |
| Global capture regions | US, Europe, Australia / Asia Pacific | Limited regions | EU & US only | Single EU region |
| Direct uploads (S3, Azure, GCS, R2) | Included on all plans | Add-on configuration | S3 only | Email & download |
| Scheduled bulk jobs | Hourly, daily, CRON | Limited automation | Manual or Zapier | Daily |
| Visual diff change detection | Integrated | Yes | Not available | Not available |
Want the full picture? See the screenshot API comparison with verified pricing, or the detailed Urlbox alternative breakdown. Migrating? Read the website screenshot service overview or contact support for tailored onboarding.
Infrastructure and trust signals
- Multi-region resiliency: Dedicated capture servers in the US, Europe, and Australia / Asia Pacific with automatic retries when infrastructure hiccups.
- Secure storage handoff: Signed URLs, encrypted transfers, and customer-controlled retention policies.
- Redundant by design: Every request runs against a fleet of 12+ dedicated capture servers across three continents, with automatic retries and geo-failover on every single request. Read how it works on the reliability page.
- Proven at scale: Capturing the web since July 2020. Our largest customer captures over 1,000,000 screenshots every month — peaking at 2,785,861 in a single month. Read the production volume case study.
- Accountable operator: Add Screenshots Limited publishes its company history and operating model, security practices, and direct support contact.
- GDPR-ready: Route EU data to regional storage and integrate consent banners using cookie consent automation.
Website Screenshot API FAQs
Is there a free website screenshot API plan?
Yes. Every Add Screenshots account starts with 100 free captures per month, perfect for prototypes and staging validation. Upgrade any time for higher volume, team seats, and advanced automation features.
How fast are captures returned?
Real-time captures complete in a few seconds depending on page complexity. Batch jobs run concurrently with no throttling, and you can use webhooks to receive completion notifications without polling.
Can I capture behind authentication or consent walls?
Absolutely. Use authentication helpers, inject custom JavaScript, or simulate clicks and form fills before capture. Consent banners can be accepted automatically using the cookie consent features.
How do I store screenshots in my own cloud?
Define a storage block in your request with credentials for S3, Azure Blob, Google Cloud Storage, Cloudflare R2, FTP, or email. The API delivers assets directly without temporary hosting.
Can I trigger captures using my sitemap?
Yes. Use sitemap screenshot patterns to fan out captures across thousands of URLs, or combine with scheduled jobs for recurring coverage.