Skip to content
rppl

Self-hosted infra · No cold starts

Screenshots as an API call

Send us a URL, get back a hosted image. rppl renders the page in a real headless browser, uploads the result to object storage, and returns the link in the same response.

500 free screenshots / month · no credit card

Request
curl https://api.rppl.dev/v1/screenshot \  -H "Authorization: Bearer YOUR_API_KEY" \  -d url=https://example.com \  -d format=png
200 OK
{  "id": "shot_8fq2c1d0",  "url": "https://cdn.rppl.dev/…/8fq2c1d0.png",  "format": "png",  "width": 1280,  "height": 800,  "took_ms": 412}

Features

Everything you'd otherwise build yourself

Browser pools, memory limits, font packs, upload pipelines. We keep that part boring so your product code stays a single HTTP call.

  • Fast renders

    A warm pool of headless Chrome workers handles every request. No lambda cold starts, no queue to wait in — typical captures land in under a second.

  • Full-page or viewport

    Capture the visible viewport at any size, or scroll the whole document into one tall image. Set width, height, scale factor and device pixel ratio per call.

  • Storage included

    Every screenshot is uploaded to S3-compatible object storage and served from a CDN URL. Bring your own bucket if you would rather keep the bytes.

  • Plain API key auth

    One bearer token in the header and you're done. No OAuth dance, no SDK required — anything that speaks HTTP can take screenshots.

How it works

Three steps, one round trip

No webhooks to wire up and no polling loop to write. The request stays open until your image is stored and addressable.

  1. Step 1: Call the API

    POST /v1/screenshot

    Send a URL and your API key. Optionally pass viewport size, full-page mode, format or a render delay.

  2. Step 2: We render it

    headless chrome

    A worker picks up the job in a real browser, waits for the network to settle, and captures the page exactly as a visitor would see it.

  3. Step 3: Get the image URL

    200 OK · image url

    The screenshot is pushed to object storage and the public URL comes back in the response body. Ready to embed anywhere.

Pricing

Pay for screenshots, not for servers

Every plan runs on the same infrastructure. Upgrade when you need more volume or more concurrency — never to unlock a feature.

Free

$0/month

For side projects and kicking the tires.

Start for freeFree plan
  • 500 screenshots / month
  • 1 concurrent render
  • PNG & JPEG output
  • 7-day image retention
  • Community support
Most popular

Starter

$19/month

For production apps with steady traffic.

Get startedStarter plan
  • 10,000 screenshots / month
  • 5 concurrent renders
  • Full-page & custom viewport
  • 30-day image retention
  • Email support

Growth

$79/month

For high volume and custom storage.

Get startedGrowth plan
  • 100,000 screenshots / month
  • 25 concurrent renders
  • Bring your own S3 bucket
  • 12-month image retention
  • Priority support

Need more than 100k renders a month? Talk to us about volume pricing.

Your first screenshot is one curl away

Create a key, paste the snippet, ship the feature. The free tier never expires.