Skip to main content

Official Python SDK for SnapRender Screenshot API

Project description

snaprender

PyPI version PyPI downloads license

Official Python SDK for the SnapRender Screenshot API — capture pixel-perfect screenshots of any webpage with a single API call.

50 free screenshots/month — Get your API key

Features

  • Multiple output formats — PNG, JPEG, WebP, and PDF
  • Device emulation — iPhone, iPad, Pixel, and more presets
  • Dark mode — Capture pages with prefers-color-scheme: dark
  • Ad blocking — Remove ads automatically before capture
  • Cookie banner removal — Clean screenshots without consent popups
  • Smart caching — Configurable CDN cache with TTL control
  • Full-page captures — Screenshot the entire scrollable page

Install

pip install snaprender

Quick Start

from snaprender import SnapRender

snap = SnapRender(api_key="sk_live_...")

# Capture a screenshot
image = snap.capture("https://example.com")
with open("screenshot.png", "wb") as f:
    f.write(image)

# Capture with options
jpg = snap.capture(
    "https://example.com",
    format="jpeg",
    width=1920,
    height=1080,
    full_page=True,
    dark_mode=True,
    quality=95,
)

# Check cache status
info = snap.info("https://example.com")
print(info["cached"])      # True/False
print(info["expires_at"])  # ISO date string (when cached)

# Get usage
usage = snap.usage()
print(f"{usage['used']}/{usage['limit']} screenshots used")

Context Manager

with SnapRender(api_key="sk_live_...") as snap:
    image = snap.capture("https://example.com")

API

SnapRender(api_key, base_url="https://app.snap-render.com", timeout=60.0)

snap.capture(url, **options) -> bytes

Option Type Default Description
url str URL to capture (required)
format str "png" "png", "jpeg", "webp", or "pdf"
width int 1280 Viewport width
height int 800 Viewport height
full_page bool False Capture full scrollable page
quality int 90 JPEG/WebP quality (1-100)
delay int 0 Wait ms after page load
dark_mode bool False Emulate dark mode
block_ads bool True Block ad networks
block_cookie_banners bool True Remove cookie banners
device str Device preset ("iphone_14", "iphone_15_pro", "pixel_7", "ipad_pro", "macbook_pro")
hide_selectors str Comma-separated CSS selectors to hide
click_selector str CSS selector to click before capture
user_agent str Custom user agent string
cache bool True Use cache
cache_ttl int 86400 Cache TTL in seconds
response_type str "json" returns metadata + base64 data URI

snap.info(url) -> dict

Check if a screenshot is cached without capturing. Returns { url, cached, cache_key, cached_at, expires_at, content_type }.

snap.usage() -> dict

Get current month's usage.

snap.usage_daily(days=30) -> dict

Get daily usage breakdown (default 30 days).

LangChain Integration

Use SnapRender as a LangChain tool for AI agents:

import os
from langchain_core.tools import tool
from snaprender import SnapRender

client = SnapRender(api_key=os.environ["SNAPRENDER_API_KEY"])

@tool
def take_screenshot(url: str, format: str = "png", dark_mode: bool = False) -> str:
    """Capture a screenshot of any website URL. Returns base64 data URI."""
    result = client.capture(
        url, format=format, dark_mode=dark_mode, response_type="json"
    )
    return result["image"]

Works with LangGraph, CrewAI, and any framework that supports LangChain tools.

Error Handling

from snaprender import SnapRender, SnapRenderError

snap = SnapRender(api_key="sk_live_...")

try:
    snap.capture("https://example.com")
except SnapRenderError as e:
    print(e.code)    # "QUOTA_EXCEEDED"
    print(e.status)  # 429
    print(e)         # "Monthly quota exceeded"

Links

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snaprender-0.2.3.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snaprender-0.2.3-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file snaprender-0.2.3.tar.gz.

File metadata

  • Download URL: snaprender-0.2.3.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.1

File hashes

Hashes for snaprender-0.2.3.tar.gz
Algorithm Hash digest
SHA256 175dd6e622f72830c1e5b4a8bb0d209e801653e678afb5052365beee1ef53d8d
MD5 ecc3b455baf217f0e9f976169396fbb3
BLAKE2b-256 3cd1d8be52edd85887679857a483d713b9a5f3e62f95e820abf0a59e33c25593

See more details on using hashes here.

File details

Details for the file snaprender-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: snaprender-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.1

File hashes

Hashes for snaprender-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1ebe6ef869e01ca4d6a44ce537a35b397713ff49444e6df73129ffcf9ab70898
MD5 d10ec82d6436554adeb449a1e24ad29c
BLAKE2b-256 1622e44df55112210cdbf25d20ced8eeb6d66878583e4ce1ad150ec4c08df533

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page