getsnap
Official Python SDK for getSnap.dev — Screenshot & PDF API.
Zero dependencies. Uses only Python's standard library (urllib).
Installation
pip install getsnap
Quick Start
from getsnap import GetSnap
snap = GetSnap("sk_live_YOUR_KEY")
# Take a screenshot
result = snap.screenshot(url="https://github.com", format="png")
print(result["url"]) # CDN URL to your screenshot
Features
- Zero external dependencies (uses
urllib) - Python 3.8+
- Screenshot capture (URL or HTML)
- Binary response (raw image bytes)
- Batch capture (up to 100 URLs)
- Usage tracking
- All API parameters supported:
lazy_load,wait_for_selector,hide_selectors,remove_selectors,extract_text,extract_html,click_selector,scroll_to_selector, and more
API
GetSnap(api_key, base_url=None)
Create a client instance.
api_key— Your getSnap.dev key (starts withsk_live_orsk_test_)base_url— Custom base URL (default:https://api.getsnap.dev)
snap.screenshot(**kwargs)
Take a screenshot. Returns a dict with url, cached, request_id, and optionally extracted_text/extracted_html.
result = snap.screenshot(
url="https://example.com",
format="png",
full_page=True,
remove_popups=True,
lazy_load=True,
extract_text=True,
)
print(result["url"])
print(result["extracted_text"])
snap.screenshot_binary(**kwargs)
Get raw image/PDF bytes.
data = snap.screenshot_binary(url="https://example.com", format="webp", quality=90)
with open("screenshot.webp", "wb") as f:
f.write(data)
snap.og_image(url, **kwargs)
Generate a 1200x630 Open Graph / Twitter Card image from any URL.
Applies social-share-optimized defaults on the server side (PNG,
hi-DPI, wait for network idle, block popups + ads). Same billing
as screenshot(): 1 credit per fresh capture, 0 credits for cache
hits.
result = snap.og_image(url="https://blog.example.com/why-rust")
print(result["url"]) # drop into <meta property="og:image">
All defaults are overrideable via kwargs (viewport_width,
viewport_height, format, device_scale_factor, wait_for_selector,
extra_delay_ms, block_ads, remove_popups, dark_mode, css).
Pass response_type="binary" to get raw bytes with
Cache-Control: public, max-age=604800, immutable instead of a JSON
URL.
snap.batch(urls, **kwargs)
Capture multiple URLs in one request.
result = snap.batch(
urls=["https://github.com", "https://stripe.com", "https://vercel.com"],
format="png",
remove_popups=True,
)
print(f"{result['succeeded']}/{result['count']} captured")
for r in result["results"]:
print(f"{r['source_url']} -> {r['url']}")
snap.usage()
Check current usage and quota.
usage = snap.usage()
print(f"{usage['used']}/{usage['limit']} ({usage['plan']})")
snap.status(request_id)
Check status of an async (webhook) request.
status = snap.status("req_abc123")
Error Handling
from getsnap import GetSnap, GetSnapError
snap = GetSnap("sk_live_YOUR_KEY")
try:
snap.screenshot(url="https://example.com", format="png")
except GetSnapError as e:
print(e.status, e.error, str(e))
# 402, "quota_exceeded", "Monthly limit reached..."
License
MIT
Metadata
Release files for getsnap 1.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| getsnap-1.6.0.tar.gz | 7.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| getsnap-1.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.8 kB
Release files / getsnap-1.6.0.tar.gz
| Download URL | getsnap-1.6.0.tar.gz |
|---|---|
| Size | 7.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5156a6e7730461076781dcccd27ae6c7e120e3e11b3d6b073b405ed1ea9bc364
|
|
BLAKE2b-256 checksum How to use checksums |
08615c817c8cbdc745a73a922dcffeb80c94b6038cf261900c4fb8851e78f354
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / getsnap-1.6.0-py3-none-any.whl
| Download URL | getsnap-1.6.0-py3-none-any.whl |
|---|---|
| Size | 7.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c65b7cb16cf558e9d1d553661c5e5200d5bd6182e0703e24acc92889d7ca907
|
|
BLAKE2b-256 checksum How to use checksums |
b65d699f742bf139fe257d404d33c0409345fd74453deb92fa1d8ef7d88c16f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|