Official Python SDK for SnapRender Screenshot API
Project description
snaprender
Official Python SDK for the SnapRender Screenshot API — capture pixel-perfect screenshots of any webpage with a single API call.
500 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file snaprender-0.2.4.tar.gz.
File metadata
- Download URL: snaprender-0.2.4.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
423d8e65ec117c585daf12719d1b2bba4cbe2efac265176aab40aea102c1904f
|
|
| MD5 |
166d13eac3e7f6052bc8ed50f427740a
|
|
| BLAKE2b-256 |
24e28590371539ed198681792ae713f7ad50f5415b3dc2d68fb2ca54a88172a3
|
File details
Details for the file snaprender-0.2.4-py3-none-any.whl.
File metadata
- Download URL: snaprender-0.2.4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49081809c71d4d744433bcbfd839d02df6615e052f91c3300c30530806fbf63c
|
|
| MD5 |
6313f84f501c92c958f16f59b75eb0d0
|
|
| BLAKE2b-256 |
d8d12abcf0c0e0f4668820808fb72bbfe526fb404c94ac9ce5528bf054a8c3eb
|