Official Python SDK on PyPI

Screenshot API
for Python

Capture any website as PNG, JPEG, WebP, or PDF with four lines of Python. No Selenium, no webdriver, no browser binaries to install.

200 free screenshots/month. No credit card required.

Python quickstart: screenshot in 4 lines

Install the official SDK from PyPI, paste your API key, and capture. Python 3.8+ supported.

Install
pip install snaprender
screenshot.py
from snaprender import SnapRender

snap = SnapRender(api_key="sk_live_your_key_here")

image = snap.capture("https://example.com")
with open("screenshot.png", "wb") as f:
    f.write(image)
Full page, mobile device, dark mode, cached
image = snap.capture(
    "https://example.com",
    format="jpeg",
    full_page=True,
    dark_mode=True,
    device="iphone_15_pro",
    cache=True,
)

Ads and cookie banners are blocked by default. The same client also handles signed URLs, content extraction, batch jobs, and webhooks.

Take a website screenshot in Python without Selenium or Playwright

Selenium needs a webdriver that matches your browser version. Playwright needs playwright install, which downloads several hundred megabytes of browser binaries. Both need those browsers present, healthy, and updated on every machine that runs your code: your laptop, your CI runner, your production hosts. For browser testing that overhead is justified. For taking screenshots, it is not.

A screenshot API removes the browser from your side entirely. The snaprender package is a small HTTPS client: you call snap.capture(url) and real Chrome on our servers loads the page, strips the cookie banners and ads, and returns the finished image as bytes. Your requirements.txt stays clean and your Docker image does not grow by half a gigabyte.

This matters most in constrained environments. Lambda layers have size limits that headless Chrome regularly breaks. Notebooks on Colab or a shared JupyterHub often cannot install system browsers at all. An API call works in all of them, the same way it works on your laptop. Our guide to screenshotting websites in Python walks through more complete examples.

SnapRender SDK Selenium / Playwright
Setup pip install, done Browser binaries + driver matching
Works in Lambda / Cloud Run Yes, no layers Custom images, size limits
Works in notebooks Yes Often blocked by the host
Cookie banners and ads Blocked by default Custom code per site
Browser updates Handled for you Yours to maintain

Runs anywhere Python runs

Because the SDK is pure HTTP, the same four lines work in a Django view, a Flask endpoint, a FastAPI background task, an Airflow DAG, a Lambda handler, a Cloud Run job, a cron script on a bare VPS, and a cell in a Jupyter notebook. Capture a competitor's pricing page on a schedule, archive articles as PDFs, generate thumbnails for every URL in your database, or feed page images to a vision model.

Need the result hosted instead of returned? Ask for a signed URL and embed the screenshot directly in dashboards or emails without storing the file yourself. Want to see the rendering quality before signing up? Run a capture in the free website screenshot tool: it uses the same engine as the API.

Python screenshot API FAQ

How do I take a screenshot of a website in Python without Selenium?+

Install the snaprender package from PyPI, create a client with your API key, and call snap.capture(url). The page is rendered in real Chrome on SnapRender's servers and the screenshot comes back as bytes you can write to a file or upload to storage. There is no webdriver to install, no browser version matching, and no headless display setup.

Does the Python screenshot SDK work in AWS Lambda and Jupyter notebooks?+

Yes. The SDK is a thin HTTPS client, so it runs anywhere Python runs: AWS Lambda, Google Cloud Run, Jupyter and Colab notebooks, Airflow tasks, Django and Flask apps, and cron scripts. You never need to package Chromium with your code or fight Lambda layer size limits.

How is a screenshot API different from Selenium or Playwright in Python?+

Selenium and Playwright automate a browser that you install, run, and keep healthy on your own machines. A screenshot API moves the browser to the provider's servers: you make one HTTP call and receive the finished image. That removes webdriver management, browser binary downloads of several hundred megabytes, version pinning, and crash recovery from your codebase.

Can I capture full-page screenshots and mobile views in Python?+

Yes. Pass full_page=True for the entire scrollable page, device="iphone_15_pro" for mobile emulation, dark_mode=True for dark theme captures, and format="pdf" to save the page as a PDF. Ads and cookie banners are blocked by default.

Is there a free tier for the Python screenshot API?+

Yes. The free plan includes 200 screenshots per month with every feature: all formats, full-page capture, device emulation, dark mode, and caching. No credit card is required to sign up.

Not writing Python today?

The same API has official quickstarts for other languages.

Related guide: How to screenshot a website in Python.

pip install snaprender and ship

No webdriver, no browser binaries, no maintenance. 200 free screenshots per month, no credit card.