Website screenshot API API
Capture any page as an image or PDF on desktop or mobile. Use this reference to choose an operation and integrate its documented response contract.
Operations
GET /v1/screenshot
GET
/v1/screenshot
Credits: 10
Query parameters
| Parameter | Type | required |
|---|---|---|
| url | string | required |
| device |
string
Allowed values
desktopmobile
Default
desktop
|
optional |
| full_page | boolean | optional |
| format |
string
Allowed values
pngjpegwebppdf
Default
png
|
optional |
| output |
string
Allowed values
jsonbinary
Default
json
|
optional |
Response fields
| Field | Type |
|---|---|
url |
string |
final_url |
string |
status |
string |
reason |
string | null |
checked_at |
string |
http_status |
integer | null |
redirect_count |
integer |
duration_ms |
integer |
resource_limit_reached |
boolean |
capture |
object |
capture.format |
string |
capture.mime_type |
string |
capture.device |
string |
capture.full_page |
boolean |
capture.width |
integer | null |
capture.height |
integer | null |
capture.bytes |
integer |
capture.format_fallback |
string | null |
capture.data_base64 |
string |
Example request
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/screenshot?url=https%3A%2F%2Fexample.com&device=desktop&full_page=false&format=png&output=json"const response = await fetch("https://domscan.net/v1/screenshot?url=https%3A%2F%2Fexample.com&device=desktop&full_page=false&format=png&output=json", {
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
"https://domscan.net/v1/screenshot?url=https%3A%2F%2Fexample.com&device=desktop&full_page=false&format=png&output=json",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/screenshot?url=https%3A%2F%2Fexample.com&device=desktop&full_page=false&format=png&output=json", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/screenshot?url=https%3A%2F%2Fexample.com&device=desktop&full_page=false&format=png&output=json")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))Example response
{
"url": "https://example.com/",
"final_url": "https://example.com/",
"status": "ok",
"reason": null,
"checked_at": "2026-10-13T12:00:00.000Z",
"http_status": 200,
"redirect_count": 0,
"duration_ms": 4210,
"resource_limit_reached": false,
"capture": {
"format": "png",
"mime_type": "image/png",
"device": "desktop",
"full_page": false,
"width": 1366,
"height": 768,
"bytes": 182340,
"data_base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
}
}
HTTP status codes
200OK400Bad Request401Unauthorized402Payment Required429Too Many Requests