✓ Verified 💻 Development ✓ Enhanced Data

Snaprender

Give your agent eyes on the web — screenshot any URL as an image file.

Rating
4.2 (230 reviews)
Downloads
4,122 downloads
Version
1.0.0

Overview

Give your agent eyes on the web — screenshot any URL as an image file.

Complete Documentation

View Source →

SnapRender — Give Your Agent Eyes

Your agent can read the web but can't see it. One command and it captures pixel-perfect screenshots — any site, any device, in seconds.

"Screenshot stripe.com on iPhone", "Compare desktop vs mobile", "Full-page dark mode capture" — just ask.

Free tier: 500 screenshots/month, no credit card. Get a key →


IMPORTANT: Use the exec tool with curl. NEVER use the browser tool for screenshots.

How to Capture

Run this command via the exec tool. Replace ENCODED_URL with the URL-encoded target (e.g. https%3A%2F%2Fstripe.com):

bash
curl -s "https://app.snap-render.com/v1/screenshot?url=ENCODED_URL&response_type=json&format=jpeg&quality=60&block_ads=true&block_cookie_banners=true" \
  -H "X-API-Key: $SNAPRENDER_API_KEY" \
  | tee /tmp/snap_response.json \
  | jq -r '.image' | sed 's|data:image/[^;]*;base64,||' | base64 -d > /tmp/screenshot.jpg \
  && jq '{url, format, size, cache, responseTime, remainingCredits}' /tmp/snap_response.json

This saves the screenshot to /tmp/screenshot.jpg and prints metadata.

Rules

  • Use exec tool only — NEVER the browser tool
  • $SNAPRENDER_API_KEY is already set — use it literally in the command, do NOT replace it
  • URL-encode the targethttps://stripe.comhttps%3A%2F%2Fstripe.com
  • Always use format=jpeg&quality=60 — keeps response small enough for the agent context
  • Always pipe to save the image to a file — the base64 response is too large to display inline
  • Report metadata to the user — file size, response time, cache status, remaining credits

Parameters

Add as query parameters to the URL:

ParameterValuesDefault
urlURL-encoded targetrequired
response_typejsonjson (always use this)
formatjpeg, png, webp, pdfjpeg
quality1-10060
deviceiphone_14, iphone_15_pro, pixel_7, ipad_pro, macbook_prodesktop
dark_modetrue, falsefalse
full_pagetrue, falsefalse
block_adstrue, falsetrue
block_cookie_bannerstrue, falsetrue
width320-38401280
height200-10000800
delay0-100000 (ms wait after page load)
cachetrue, falsetrue (set false to force fresh capture)
cache_ttl0-259200086400 (seconds, clamped to plan max)
hide_selectorsCSS selectorsnone (comma-separated, hides elements before capture)
click_selectorCSS selectornone (clicks element before capture)
user_agentstringdefault Chrome UA

Examples

Desktop screenshot of stripe.com:

bash
curl -s "https://app.snap-render.com/v1/screenshot?url=https%3A%2F%2Fstripe.com&response_type=json&format=jpeg&quality=60&block_ads=true&block_cookie_banners=true" -H "X-API-Key: $SNAPRENDER_API_KEY" | tee /tmp/snap_response.json | jq -r '.image' | sed 's|data:image/[^;]*;base64,||' | base64 -d > /tmp/screenshot.jpg && jq '{url, format, size, cache, responseTime, remainingCredits}' /tmp/snap_response.json

Mobile screenshot: add &device=iphone_15_pro to the URL

Full scrollable page: add &full_page=true to the URL

Dark mode: add &dark_mode=true to the URL

Compare desktop vs mobile: make two calls, save to /tmp/screenshot_desktop.jpg and /tmp/screenshot_mobile.jpg

After Capturing

  • Tell the user the screenshot was saved to /tmp/screenshot.jpg (or the filename you used)
  • Report metadata: file size, response time, cache status, remaining credits
  • For comparisons, save each screenshot to a different filename

Errors

  • 401: Invalid API key — check SNAPRENDER_API_KEY
  • 429: Rate limit or quota exceeded — wait or upgrade plan
  • Timeout: Target site is slow — add &delay=3000 to wait longer
  • Empty response: URL unreachable or blocked

Get an API Key

Free at https://snap-render.com/auth/signup — 500 screenshots/month, no credit card.

Installation

Terminal bash

openclaw install snaprender
    
Copied!

💻Code Examples

&& jq '{url, format, size, cache, responseTime, remainingCredits}' /tmp/snap_response.json

--jq-url-format-size-cache-responsetime-remainingcredits-tmpsnapresponsejson.txt
This saves the screenshot to `/tmp/screenshot.jpg` and prints metadata.

## Rules

1. **Use `exec` tool only** — NEVER the `browser` tool
2. **`$SNAPRENDER_API_KEY` is already set** — use it literally in the command, do NOT replace it
3. **URL-encode the target** — `https://stripe.com` → `https%3A%2F%2Fstripe.com`
4. **Always use `format=jpeg&quality=60`** — keeps response small enough for the agent context
5. **Always pipe to save the image to a file** — the base64 response is too large to display inline
6. **Report metadata to the user** — file size, response time, cache status, remaining credits

## Parameters

Add as query parameters to the URL:

| Parameter | Values | Default |
|-----------|--------|---------|
| url | URL-encoded target | required |
| response_type | json | json (always use this) |
| format | jpeg, png, webp, pdf | jpeg |
| quality | 1-100 | 60 |
| device | iphone_14, iphone_15_pro, pixel_7, ipad_pro, macbook_pro | desktop |
| dark_mode | true, false | false |
| full_page | true, false | false |
| block_ads | true, false | true |
| block_cookie_banners | true, false | true |
| width | 320-3840 | 1280 |
| height | 200-10000 | 800 |
| delay | 0-10000 | 0 (ms wait after page load) |
| cache | true, false | true (set false to force fresh capture) |
| cache_ttl | 0-2592000 | 86400 (seconds, clamped to plan max) |
| hide_selectors | CSS selectors | none (comma-separated, hides elements before capture) |
| click_selector | CSS selector | none (clicks element before capture) |
| user_agent | string | default Chrome UA |

## Examples

**Desktop screenshot of stripe.com:**
example.sh
curl -s "https://app.snap-render.com/v1/screenshot?url=ENCODED_URL&response_type=json&format=jpeg&quality=60&block_ads=true&block_cookie_banners=true" \
  -H "X-API-Key: $SNAPRENDER_API_KEY" \
  | tee /tmp/snap_response.json \
  | jq -r '.image' | sed 's|data:image/[^;]*;base64,||' | base64 -d > /tmp/screenshot.jpg \
  && jq '{url, format, size, cache, responseTime, remainingCredits}' /tmp/snap_response.json

Tags

#web_and-frontend-development #web

Quick Info

Category Development
Model Claude 3.5
Complexity Multi-Agent
Author user0856
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install snaprender