Skip to content
3 BROWSER APIS · 1 KEY

One API key.
Screenshot, PDF,
Markdown.

LLM-ready render output for agents and developers. Three primitives on one billing meter — half the price of ScreenshotOne, no Puppeteer infra to babysit.

  • 500 free renders to start
  • No card required
  • MCP server included
POSTPOST /v1/screenshot
curl https://api.renderkit.tech/v1/screenshot \
  -H "x-api-key: $RK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://stripe.com",
    "full_page": true,
    "format": "png"
  }'
200 OKrendered in 842ms · cached: false
stripe.com
screenshot.png · 1280×3200

Rendering for engineering teams at

VantralooplinePARSEC LABSQuillstackNordwindHEXA SYSTEMSBrightfoldkitewiredatafjordOctavia AI
WHAT YOU GET

Three primitives. One billing meter.

Stop stitching together ScreenshotOne, PDFShift, and Firecrawl. Every render — shot, doc, or markdown — counts against the same quota and the same key.

/v1/screenshot

Screenshot

Full page, viewport, or a single element by CSS selector. PNG, JPEG, or WebP at any device scale.

  • Element selector capture
  • Retina + custom viewport
  • Blocks ads & cookie banners
yoursite.com
PNGJPEGWebPp50 0.6s
/v1/pdf

PDF

Print-grade PDFs with custom page size, margins, and print CSS. Plus JSX-to-PDF — render a component straight to paper.

  • Custom page size & margins
  • Print stylesheet support
  • JSX-to-PDF (unique)
rk
A4LetterCustomp50 1.1s
/v1/extract

Extract

Clean, LLM-ready markdown with image alt extraction. Strips chrome, keeps structure — chunked for agent context windows.

  • Boilerplate stripped
  • Token-aware chunking
  • RAG-ready in one call

# Pricing — plans & limits

Plans start at **$29/mo** with…

- 500 renders included

chunk 1 · 512 tokchunk 2 · 498 tok
MarkdownChunksJSONp50 0.9s
1 render = 1 credit · any primitive, same meter

No per-product pricing. No three dashboards. One quota.

TRY IT

Build the request. Watch it run.

Same JSON shape across all three endpoints — flip the toggles and the request updates live. This is the whole API; there is no step two.

Request options

Options

Request

POST /v1/screenshot
curl https://api.renderkit.tech/v1/screenshot \
  -H "x-api-key: $RK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://news.ycombinator.com",
  "full_page": true,
  "block_ads": true
}'

Response

hit “Send request” to render
HOW IT WORKS

Key to CDN URL in three steps.

No browser pools, no queues to operate, no Chrome versions to pin. The infrastructure is the product — you just make HTTP calls.

  1. 01

    Grab a key

    Sign up with GitHub or email. Your key and 500 free renders are waiting on the dashboard — no card, no sales call.

  2. 02

    Make the call

    POST a JSON body to /v1/screenshot, /v1/pdf, or /v1/extract. Same auth header, same shape, same billing meter.

  3. 03

    Get a CDN URL

    Every render lands on our edge CDN with a signed URL. Hotlink it, webhook it, or pipe the bytes straight through.

~/your-app

WATCH IT WORK

Three flows, recorded off the wire.

What your code sends and what comes back — looped, unedited, no mock data. Every frame below is the actual request lifecycle.

FLOW 01/v1/screenshot

URL in. Pixel-perfect PNG out.

One POST boots a managed browser, waits for the page to actually settle, strips the cookie wall, and drops a retina capture on the edge CDN — signed URL included.

  • Cookie banners blocked
  • Retina 2×
  • Edge-cached 80ms
Run this flow live
screenshot-flow.mp4REC
rk shot https://stripe.com --full-page --retina
stripe.com
screenshot.png · 412 KB
↳ https://cdn.renderkit.tech/r/9f2c81/shot.png · signed · ttl 7d
0:09
FLOW 02/v1/pdf

React component in. Print-grade PDF out.

Send JSX with props and get back a paginated document that obeys real print CSS. Invoices, reports, certificates — same design system as your app, rendered to paper.

  • A4 / Letter / custom
  • Print CSS
  • JSX-to-PDF
See the JSX example
jsx-pdf-flow.mp4REC
invoice.tsx

const Invoice = (props) => (

<Doc paper="a4" margin="24mm">

<LineItems rows={rows} />

<Total due={total} />

</Doc>)

→ POST /v1/pdf

INVOICE

INV-2041 · May 2026

rk
Growth plan — May$29.00
Overage · 3,210$9.63
Total due$38.63
invoice.pdf · A4 · 2 pages
0:09
FLOW 03/v1/extract

Messy page in. Clean markdown out.

Nav, ads, and cookie chrome dissolve; structure survives. Output arrives chunked to your token budget with overlap — embeddings-ready without a parsing library.

  • Boilerplate stripped
  • Token-aware chunks
  • RAG-ready
Try it on your URL
extract-flow.mp4REC
edge-weekly.com/article
ADVERTISEMENT
COOKIE CONSENT
extract.md

# The state of edge rendering

Latency budgets moved the goalposts…

## What changed in 2026

- Browsers became a metered utility

- Agents read markdown, not DOM

chunk 1/3 · 512 tokchunk 2/3 · 498 tokchunk 3/3 · 211 tok
0:09
PRODUCTION GRADE

The boring parts, done properly.

Everything you'd otherwise build around a headless browser — caching, blocking, waiting, retrying, observing — ships in the box.

Edge cache built in

Identical render requests hit our CDN, not a browser. Cache keys you control with cache_ttl — repeat renders return in ~80ms and don't burn quota.

cache_ttl: 86400

→ HIT · 81ms · 0 credits

→ HIT · 79ms · 0 credits

→ HIT · 84ms · 0 credits

Ads & cookie banners, gone

block_ads and block_banners ship with maintained filter lists. Your screenshots stop looking like a GDPR crime scene.

Webhooks for slow renders

Pass webhook_url and we POST the finished render. No polling loops, no 30-second HTTP timeouts.

Geo rendering

Render from a US or UK IP with locale-correct headers — see exactly what users in New York or London see.

Signed URLs

HMAC-sign render URLs client-side so your key never ships to the browser. Safe for <img src> straight from your frontend.

Smart waits, not sleep()

wait_until: network_idle, selector, or custom JS predicate. Renders fire the moment the page is actually ready.

A dashboard you'll actually open

Per-endpoint usage, p50/p95 latency, error drill-downs with the exact failing request — replayable with one click.

ONLY ON RENDERKIT

JSX in. PDF out.

Your invoices, reports, and certificates are already React components — so render them like one. Send JSX to /v1/pdf and get back a print-grade document with your design system intact. No HTML templates, no headless browser code, no wkhtmltopdf flashbacks.

  • Server-side rendered with your props, then printed via Chromium
  • A4, Letter, or custom page geometry with real print CSS
  • Think “Resend, but for PDFs” — components as documents
invoice.ts
await rk.pdf({
  jsx: `
    <Invoice
      number="INV-2041"
      customer="Brightfold GmbH"
      items={[
        { desc: "Growth plan — May", amount: 29.0 },
        { desc: "Overage: 3,210 renders", amount: 9.63 },
      ]}
      total={38.63}
    />
  `,
  paper: "a4",
});

// → https://cdn.renderkit.tech/rnd_7vq1z3.pdf

INVOICE

INV-2041 · May 2026

rk

Brightfold GmbH

Torstraße 140, 10119 Berlin

Growth plan — May$29.00
Overage: 3,210 renders$9.63
Total due$38.63
rendered by /v1/pdf · paper: a4 · 1 credit
.mcp.json
{
  "mcpServers": {
    "renderkit": {
      "command": "npx",
      "args": ["-y", "renderkit-mcp"],
      "env": { "RENDERKIT_API_KEY": "rk_live_..." }
    }
  }
}
Works withClaude CodeClaude DesktopCursorWindsurfYour agent loop
BUILT FOR THE AGENT ERA

Your agent's eyes on the web.

RenderKit ships an MCP server, token-aware markdown chunking, and structured errors agents can recover from. Wire it into Claude, Cursor, or your own loop in one config block.

MCP server included

renderkit-mcp exposes all three primitives as tools. Your agent screenshots, archives, and reads pages without leaving the conversation.

Token-aware chunks

chunk: true splits markdown on heading boundaries to your max_tokens budget with configurable overlap. Embeddings-ready, no extra library.

Errors agents understand

Machine-readable error codes with a retryable flag and retry_after hints. Agents recover without a human reading stack traces.

HOW WE COMPARE

All three primitives. Half the price.

The matrix the incumbents would rather you didn't screenshot. (Use /v1/screenshot, obviously.)

Feature comparison between RenderKit and competitors
RenderKitScreenshotOneUrlboxPDFShiftFirecrawl
Screenshot
PDF
Markdown
MCP server
JSX-to-PDF
Entry price$9/mo$17/mo$19/mo$9/mo$16/mo
0
render primitives, one API
0
billing meter for all three
0.0%
uptime SLA on Business
0
official SDKs — Node & Python
DEVELOPERS TALK

Loved by people who read response headers.

Engineers switch for the price. They stay because the API never makes them think.

Replaced ScreenshotOne + a cron'd Puppeteer box with one key. The bill literally halved and I deleted 400 lines of browser babysitting.
Maya OkaforFounding engineer, Quillstack
JSX-to-PDF is stupidly good. Our invoices are a React component now — same design system as the app, rendered to paper-perfect PDF.
Daniel ReyesCTO, Brightfold
We point /v1/extract at any URL and get chunked markdown straight into pgvector. Our RAG ingestion is one HTTP call. That's it. That's the pipeline.
Priya NatarajanML lead, Octavia AI
The MCP server made our support agent self-sufficient — it screenshots the customer's page, reads the markdown, and answers with receipts.
Tom LindqvistStaff engineer, Nordwind
Migrated 150k renders/mo off Urlbox in an afternoon. The dashboard's error replay paid for the switch by itself in week one.
Aisha BelloPlatform lead, Datafjord
Finally an API where the PDF endpoint isn't an afterthought bolted onto a screenshot service. Print CSS support is the real deal.
Jonas WeberIndie hacker, Kitewire
Geo rendering quietly fixed a bug we'd chased for months — our UK users saw different cookie walls than us. Now we render from a London IP and see it too.
Sofia MarchettiHead of platform, Vantra
Signed URLs straight from the frontend, zero proxy code. Our key never leaves the server and the <img> tag just works. Exactly how it should be.
Lucas MeyerEngineering manager, Loopline

Three primitives, one API · hover to pause

PRICING

Priced to undercut. Built to scale.

Every tier includes all three primitives. Upgrade only when you outgrow your quota — no per-primitive add-ons, no surprise overage bills.

Free

$0/mo

 

500 renders to start

Start free
  • All 3 primitives
  • No card required
  • 30-day history
  • Community support

Hobby

$9/mo

 

5,000 renders/mo

Choose Hobby
  • CSS injection
  • Webhook delivery
  • Custom headers
  • Email support
Most popular

Growth

$29/mo

 

25,000 renders/mo

Choose Growth
  • Full JS injection
  • Geo rendering (US/UK)
  • Async + webhooks
  • Higher rate limits

Business

$79/mo

 

150,000 renders/mo

Choose Business
  • Highest concurrency
  • 99.9% uptime SLA
  • Priority support
  • Monthly invoice

Enterprise

Custom

 

Unlimited renders

Talk to us
  • Dedicated Chromium pool
  • White-label
  • Annual contract
  • SOC 2 on roadmap

All plans include all three primitives, the MCP server, signed URLs, and the dashboard. Prices in USD.

FAQ

Questions, answered.

Anything else — the founder answers email within a day.

One successful API response: a screenshot, a PDF, or an extract. Cache hits are free and failed renders (4xx/5xx from the target site) are never billed. All three primitives draw from the same quota.

ScreenshotOne's entry plan is $17/mo for screenshots only. RenderKit's Hobby plan is $9/mo and includes screenshots, PDFs, and markdown extraction on one meter — you'd need two or three vendors to match it.

Yes. Every render runs in a real headless Chromium with configurable wait_until conditions: network idle, a CSS selector appearing, or a custom JS predicate. React, Vue, and Svelte apps render exactly as users see them.

Send a React component string to /v1/pdf instead of a URL and we server-side render it straight to a print-grade PDF. Invoices, reports, and certificates become React components — no headless browser code on your side.

renderkit-mcp is an npm package that exposes screenshot, pdf, and extract as MCP tools. Add it to Claude Desktop, Claude Code, or Cursor with one config block and your agent can see and read any webpage.

Yes — pass country: "us" or "gb" on Growth and above to render from a US or UK IP with locale-correct headers, useful for region-walled pages. Custom proxy pools are on the roadmap.

Requests return 429 with a clear error code and your dashboard shows the reset date. You can enable hard caps (default) or opt into metered overage at the same per-render rate as your tier — never a surprise multiplier.

Business plans carry a 99.9% uptime SLA with service credits. Enterprise plans can include a dedicated Chromium pool with custom SLA terms. Live status is public at all times.

Still curious? [email protected]

Ship your first render in 60 seconds.

500 free renders to start. No card. Cancel by ignoring it.

Get your free key$npm i renderkit-sdk