# Rendershed

> Screenshots of the page. Not the cookie banner.

A screenshot API that removes consent walls, sign-in modals and paywall overlays before it captures. Most screenshot APIs succeed 93% of the time and return something usable 69% of the time — we measured it, and fixed it.

## Measured

- **93%** renders succeed (across a 29-URL benchmark)
- **69%** are actually usable (the gap nobody quotes)
- **1 / 29** blocked by bot protection (7 ruined by consent walls)
- **~2s** median render (p50, viewport capture)

## What it does

### Clean by default
Consent walls, sign-in modals, newsletter popups and paywall scrims are removed before capture. Known CMPs are declined properly; anything else is caught by shape — fixed, painted, high z-index, covering the page.

### It never clicks Accept
Declining on your behalf for a throwaway render is defensible. Agreeing on your behalf is not. Reject buttons that are really paywall funnels are detected by their own label and skipped in favour of hiding.

### No signup to try it
The examples on this page work pasted, with no key and no account — 20 renders an hour against your address. A free key raises that, and signed URLs let you drop a render into an <img src> without publishing a credential to every browser that loads the page.

### The controls you expect
Viewport, device pixel ratio, full-page, PNG / JPEG / WebP, quality, dark mode, locale, timezone, element waits and delays. Sensible defaults so the simple call stays one line.

### Built for agents
An MCP server, an OpenAPI description, llms.txt and a machine-readable api-catalog. Your agent can discover and call it without you writing a wrapper first.

### Honest about limits
Some pages are behind bot protection and no browser trick gets past them — we tested that too, and say so rather than pretending. You get a clear error, not a picture of a challenge page.

## Usage

```bash
# No key needed. Paste this as it is.
curl -X POST https://shots.rendershed.com/v1/render \
  -H "Content-Type: application/json" \
  -d '{"url": "theguardian.com/international"}' \
  -o shot.png

# A free key raises the limit from 20 renders an hour to 100 a month
# and keeps working from any address:
#   -H "X-API-Key: $RENDERSHED_KEY"
```

## Parameters

| Name | Type | Default | Description |
|---|---|---|---|
| `url` | string | required | The page to render. http and https only. |
| `width` | int | 1440 | Viewport width, 200–3840. |
| `height` | int | 900 | Viewport height, 200–4320. |
| `dpr` | float | 1 | Device pixel ratio, up to 3. |
| `full_page` | bool | false | Capture the whole document, not just the viewport. |
| `format` | enum | png | png, jpeg or webp. |
| `quality` | int | — | 1–100, for jpeg and webp. |
| `overlay_mode` | enum | dismiss | off, hide or dismiss. |
| `block_ads` | bool | true | Drop known ad and tracker requests. |
| `dark_mode` | bool | false | Render with prefers-color-scheme: dark. |
| `wait_for_selector` | string | — | Wait for a CSS selector before capture. |
| `delay_ms` | int | 0 | Extra settle time, up to 10000. |
| `locale` | string | en-US | Browser locale. |
| `timezone` | string | UTC | IANA timezone. |

## For agents

- OpenAPI: https://rendershed.com/openapi.json
- MCP server card: https://rendershed.com/.well-known/mcp/server-card.json
- MCP endpoint: https://mcp.rendershed.com/mcp (streamable HTTP)
- API catalog: https://rendershed.com/.well-known/api-catalog

## FAQ

**What makes this different from other screenshot APIs?**

Most of them return the page with the cookie banner still on it. We benchmarked a 29-URL corpus: 93% of renders technically succeeded, but only 69% were images you could actually use. Seven were ruined by consent overlays and exactly one by bot protection. rendershed treats that gap as the product.

**Does it click “Accept all” on cookie banners?**

Never. It either declines, where a genuine reject control exists, or it hides the banner cosmetically, which consents to nothing. Reject buttons that actually lead to a paid subscription are detected and skipped.

**Can it screenshot pages behind bot protection?**

Sometimes, and we do not claim otherwise. We measured headless, stealth and headful browsers from both residential and datacenter addresses: the browser makes no difference, the IP makes some, and a small number of sites are simply not renderable. Those return an error rather than an image of a challenge page.

**How do I use it in an <img> tag?**

Mint a signed URL with POST /v1/sign and use it as the src. The signature covers every parameter, so the URL cannot be edited into a different render, and your API key never reaches the browser.

**Is there an MCP server?**

Yes. Rendershed exposes an MCP server so an AI agent can render a page and look at it as part of a task, plus an OpenAPI description and llms.txt for discovery.

**Do I need an API key to start?**

No. Calls without a key run on an anonymous tier of 20 renders an hour, metered against your address, so the examples on this page work when pasted. A free key raises that to 100 a month from anywhere; paid plans run $9.99 for 3,000, $39.99 for 20,000 and $99 for 75,000. Cached renders are free at every tier and never count against a quota.
