Developer Resources

Screenshot API Code Examples

Copy-paste ready code examples in cURL, JavaScript, Python, PHP, Ruby, and Go. Get started capturing screenshots in minutes.

API Endpoint

GET https://api.rasterwise.com/v1/get-screenshot
apikey (required)
url (required)
width (optional)
fullpage (optional)

Basic Screenshot

The simplest API call - just provide your API key and the URL to capture.

curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com"
const apiKey = 'YOUR_API_KEY';
const targetUrl = 'https://example.com';

const params = new URLSearchParams({
  apikey: apiKey,
  url: targetUrl
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);

const data = await response.json();
console.log(data.screenshotImage); // URL to screenshot
import requests

api_key = 'YOUR_API_KEY'
target_url = 'https://example.com'

response = requests.get(
    'https://api.rasterwise.com/v1/get-screenshot',
    params={
        'apikey': api_key,
        'url': target_url
    }
)

data = response.json()
print(data['screenshotImage'])  # URL to screenshot
<?php
$apiKey = 'YOUR_API_KEY';
$targetUrl = 'https://example.com';

$params = http_build_query([
    'apikey' => $apiKey,
    'url' => $targetUrl
]);

$response = file_get_contents(
    "https://api.rasterwise.com/v1/get-screenshot?{$params}"
);

$data = json_decode($response, true);
echo $data['screenshotImage']; // URL to screenshot
require 'net/http'
require 'json'
require 'uri'

api_key = 'YOUR_API_KEY'
target_url = 'https://example.com'

uri = URI('https://api.rasterwise.com/v1/get-screenshot')
uri.query = URI.encode_www_form({
  apikey: api_key,
  url: target_url
})

response = Net::HTTP.get(uri)
data = JSON.parse(response)
puts data['screenshotImage'] # URL to screenshot
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
    "net/url"
)

func main() {
    apiKey := "YOUR_API_KEY"
    targetUrl := "https://example.com"

    params := url.Values{}
    params.Add("apikey", apiKey)
    params.Add("url", targetUrl)

    resp, _ := http.Get(
        "https://api.rasterwise.com/v1/get-screenshot?" + params.Encode(),
    )
    defer resp.Body.Close()

    var data map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&data)
    fmt.Println(data["screenshotImage"])
}

Full Page Screenshot

Capture the entire scrollable length of a webpage with fullpage=true.

curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com/long-page" \
  --data-urlencode "fullpage=true" \
  --data-urlencode "width=1280"
const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  url: 'https://example.com/long-page',
  fullpage: 'true',
  width: '1280'
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);

const data = await response.json();
// data.screenshotImage contains the full page screenshot
import requests

response = requests.get(
    'https://api.rasterwise.com/v1/get-screenshot',
    params={
        'apikey': 'YOUR_API_KEY',
        'url': 'https://example.com/long-page',
        'fullpage': 'true',
        'width': '1280'
    }
)

data = response.json()
# data['screenshotImage'] contains the full page screenshot

PDF Generation

Generate a PDF document from any webpage with format=pdf.

curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com/article" \
  --data-urlencode "format=pdf" \
  --data-urlencode "pdfFormat=A4"
const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  url: 'https://example.com/article',
  format: 'pdf',
  pdfFormat: 'A4'
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);

const data = await response.json();
console.log(data.pdfFile); // URL to PDF file
import requests

response = requests.get(
    'https://api.rasterwise.com/v1/get-screenshot',
    params={
        'apikey': 'YOUR_API_KEY',
        'url': 'https://example.com/article',
        'format': 'pdf',
        'pdfFormat': 'A4'
    }
)

data = response.json()
print(data['pdfFile'])  # URL to PDF file

Custom Viewport Size

Capture mobile, tablet, or custom dimensions with width and height.

# iPhone 14 viewport
curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com" \
  --data-urlencode "width=390" \
  --data-urlencode "height=844" \
  --data-urlencode "deviceScaleFactor=3"
// iPhone 14 viewport
const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  url: 'https://example.com',
  width: '390',
  height: '844',
  deviceScaleFactor: '3'  // Retina 3x
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);
# iPhone 14 viewport
import requests

response = requests.get(
    'https://api.rasterwise.com/v1/get-screenshot',
    params={
        'apikey': 'YOUR_API_KEY',
        'url': 'https://example.com',
        'width': '390',
        'height': '844',
        'deviceScaleFactor': '3'  # Retina 3x
    }
)
iPhone 14
390 x 844, scale 3x
iPad Pro
1024 x 1366, scale 2x
Desktop HD
1920 x 1080, scale 1x

Element Screenshot

Capture a specific element using CSS selector with selector.

# Capture just the main article content
curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com/blog-post" \
  --data-urlencode "selector=article.main-content"
// Capture just the main article content
const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  url: 'https://example.com/blog-post',
  selector: 'article.main-content'
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);
# Capture just the main article content
import requests

response = requests.get(
    'https://api.rasterwise.com/v1/get-screenshot',
    params={
        'apikey': 'YOUR_API_KEY',
        'url': 'https://example.com/blog-post',
        'selector': 'article.main-content'
    }
)

Hide Elements

Remove unwanted elements like ads, popups, or chat widgets with hideSelector.

# Hide ads, popups, and chat widgets
curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com" \
  --data-urlencode "hideSelector=.ads, #popup, .chat-widget, .cookie-banner" \
  --data-urlencode "hideCookieBanners=true"
// Hide ads, popups, and chat widgets
const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  url: 'https://example.com',
  hideSelector: '.ads, #popup, .chat-widget, .cookie-banner',
  hideCookieBanners: 'true'
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);
# Hide ads, popups, and chat widgets
import requests

response = requests.get(
    'https://api.rasterwise.com/v1/get-screenshot',
    params={
        'apikey': 'YOUR_API_KEY',
        'url': 'https://example.com',
        'hideSelector': '.ads, #popup, .chat-widget, .cookie-banner',
        'hideCookieBanners': 'true'
    }
)

Custom JavaScript Injection

Run JavaScript before capturing with js parameter. Perfect for interacting with the page.

# Click "Accept cookies" and expand collapsed sections
curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com" \
  --data-urlencode "js=document.querySelector('.accept-cookies')?.click(); document.querySelectorAll('.expand-btn').forEach(b => b.click());" \
  --data-urlencode "waitTime=2000"
// Click "Accept cookies" and expand collapsed sections
const customJs = `
  document.querySelector('.accept-cookies')?.click();
  document.querySelectorAll('.expand-btn').forEach(b => b.click());
`;

const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  url: 'https://example.com',
  js: customJs,
  waitTime: '2000'  // Wait 2s for animations
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);
# Click "Accept cookies" and expand collapsed sections
import requests

custom_js = """
document.querySelector('.accept-cookies')?.click();
document.querySelectorAll('.expand-btn').forEach(b => b.click());
"""

response = requests.get(
    'https://api.rasterwise.com/v1/get-screenshot',
    params={
        'apikey': 'YOUR_API_KEY',
        'url': 'https://example.com',
        'js': custom_js,
        'waitTime': '2000'  # Wait 2s for animations
    }
)

Wait Options

Control when to capture with waitUntil and waitTime.

# Wait for network to be completely idle, plus 3 extra seconds
curl -G "https://api.rasterwise.com/v1/get-screenshot" \
  --data-urlencode "apikey=YOUR_API_KEY" \
  --data-urlencode "url=https://example.com/dashboard" \
  --data-urlencode "waitUntil=networkidle0" \
  --data-urlencode "waitTime=3000"
// Wait for network to be completely idle, plus 3 extra seconds
const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  url: 'https://example.com/dashboard',
  waitUntil: 'networkidle0',  // Or: networkidle2, domcontentloaded, load
  waitTime: '3000'  // Additional 3s wait
});

const response = await fetch(
  `https://api.rasterwise.com/v1/get-screenshot?${params}`
);
waitUntil Value Description
load Wait for load event (default)
domcontentloaded Wait for DOMContentLoaded event
networkidle2 Wait until fewer than 2 network connections for 500ms
networkidle0 Wait until no network connections for 500ms (strictest)

API Parameters Reference

Complete list of available parameters

Parameter Type Description
apikey string Your API key (required)
url string URL to capture (required)
width number Viewport width in pixels (default: 1280)
height number Viewport height in pixels (default: 800)
fullpage boolean Capture entire scrollable page
format string Output format: png, jpeg, webp, pdf
selector string CSS selector for element screenshot
hideSelector string CSS selectors to hide (comma-separated)
hideCookieBanners boolean Auto-hide cookie consent banners
js string JavaScript to execute before capture
css string CSS to inject before capture
waitUntil string When to consider page loaded
waitTime number Additional wait time in ms
deviceScaleFactor number Pixel density (1, 2, or 3 for retina)

Ready to Start Capturing Screenshots?

Get your API key and start capturing screenshots in minutes. Plans start at $5/month with 2,500 screenshots included.