Turn any URL or HTML into pixel-perfect screenshots, print-ready PDFs, or clean Markdown for LLMs. One API + a native MCP server — plug it into Claude, Cursor, Hermes and any agent.
curl -X POST https://snapforge.org/v1/markdown \
-H "x-api-key: sf_..." \
-H "content-type: application/json" \
-d '{"url": "https://example.com"}' # → clean Markdown for your LLM
Turn any web page into clean, readable Markdown (article extraction built in). Feed live web content to your AI agents — no scraping, no HTML noise.
Send your HTML template, get a print-ready PDF back. Perfect for invoices, contracts and exports — no wkhtmltopdf hacks.
Render dynamic Open Graph images and link previews from a URL or HTML snippet, at any viewport and scale factor.
Capture full-page screenshots of competitor pages, dashboards or legal evidence on a schedule.
Save any article or page as clean Markdown for your notes, Obsidian or Notion. Keep the content, drop the ads and clutter.
Screenshot your pages on every deploy to catch visual regressions and preview pull requests — no headless Chrome to babysit.
Real outputs from one API call — screenshots, PDFs and Markdown.






PDF samples: invoice · single-page article · multi-page report · certificate — or any page as Markdown.
Pass your key in the x-api-key header on every request.
{
"url": "https://example.com", // or "html": "<h1>Hi</h1>"
"width": 1280, "height": 800, // viewport (100–3840 / 100–2160)
"fullPage": true, // whole page (default); false = viewport only
"format": "png", // png | jpeg
"quality": 80, // jpeg only
"scale": 1, // deviceScaleFactor 1–3
"delay": 0, // extra ms to wait (max 10000)
"waitUntil": "load" // load | networkidle
}
Returns the binary image. Response headers expose x-quota-used / x-quota-limit.
{
"html": "<h1>Invoice #42</h1>", // or "url": "https://..."
"singlePage": false, // true = one tall page fit to content (no pagination)
"pageFormat": "A4", // A0–A6, Letter, Legal, Tabloid
"landscape": false,
"margin": "1cm",
"printBackground": true
}
Returns the binary PDF.
{
"url": "https://example.com" // or "html": "<article>…</article>"
}
Returns clean Markdown of the page (article extraction + HTML→Markdown). Perfect for feeding web content to an LLM.
Returns your plan, monthly usage and quota as JSON.
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Target host not allowed (private network) |
| 413 | HTML payload over 2 MB |
| 429 | Monthly quota exhausted — upgrade your plan |
SnapForge ships an official Model Context Protocol server, so Claude and other AI agents can capture screenshots and PDFs as a built-in tool — no glue code. Published on npm and GitHub.
{
"mcpServers": {
"snapforge": {
"command": "npx",
"args": ["-y", "snapforge-mcp"],
"env": { "SNAPFORGE_API_KEY": "sf_your_key" }
}
}
}
Works with Claude Code & Desktop, Cursor, Kilo Code, Cline, Windsurf and any MCP client. Tools exposed: snapforge_screenshot, snapforge_pdf and snapforge_markdown.
Prefer zero install? Connect to the hosted MCP server at https://snapforge.org/mcp (Streamable HTTP) — just send your key in the x-api-key header. There's also an llms.txt describing the full API for LLMs.
SnapForge ships a native MCP server — add it once and your agent gets screenshot, pdf and markdown as built-in tools. Hosted (zero-install) or via npx.
Subscribe with the same email as your API key — your quota upgrades automatically within a minute of checkout.
SnapForge turns any URL or raw HTML into a screenshot (PNG/JPEG), a print-ready PDF, or clean Markdown. Behind each request we run a real headless Chrome browser, so pages render exactly as they would for a visitor — fonts, CSS, web fonts and JavaScript included. Use it as a plain REST API, or as a native MCP server so AI agents can call it directly.
Yes — POST /v1/markdown (or the snapforge_markdown MCP tool) returns clean Markdown of any URL or HTML. It runs article extraction to keep the real content and drop nav, ads and clutter. Ideal for feeding live web pages to an LLM, or for clipping articles into your notes, Obsidian or Notion.
SnapForge ships a native MCP server, so screenshots, PDFs and Markdown become built-in tools for your agent. Connect the hosted endpoint https://snapforge.org/mcp (just send your key in the x-api-key header), run npx snapforge-mcp locally, or install the one-click Claude Code plugin. Works with Claude, Cursor, Kilo Code, Cline, Windsurf, Zed, VS Code, Hermes, OpenClaw and any MCP client.
No. The Free plan includes a one-time allowance of 100 renders and only requires an email address to generate your API key. It's a real trial — enough to build and test before you commit. Upgrade anytime from the pricing section; your quota is bumped automatically within a minute of checkout.
Every successful screenshot, PDF or Markdown response counts as one render against your quota — the free tier is a one-time 100-render allowance, paid plans reset monthly. Failed requests (invalid input, unreachable target page, render errors) are automatically refunded and do not consume quota. Your current usage is returned on every response in the x-quota-used / x-quota-limit headers, or via GET /v1/usage.
Yes. /v1/screenshot, /v1/pdf and /v1/markdown all accept either a url or an html field (up to 2 MB). Sending your own HTML is the typical workflow for invoices, reports and dynamic Open Graph images: render your template server-side, post it, get the file back.
Yes. Pages are rendered in headless Chrome with JavaScript enabled. For single-page apps, set "waitUntil": "networkidle" so we wait until network activity settles, and add a delay (up to 10 seconds) if the page needs extra time for animations or late-loading content.
Requests over the limit return HTTP 429 with a clear error message — we never silently bill you for overages. On the free tier (one-time 100), subscribe to keep going; your key keeps working the moment you upgrade. On paid plans, raise the limit instantly by upgrading, or wait for the monthly reset.
Subscriptions are handled by Stripe. Subscribe with the same email you used for your API key and your quota upgrades automatically — no key change, no redeploy. You can cancel anytime; your plan simply drops back to Free at the end of the billing period.
No. Screenshots and PDFs are generated on the fly, streamed back in the response and never written to disk. We only keep minimal metadata (timestamp, render duration, output size) for quota accounting and abuse prevention.
You can — until you have to keep Chrome patched, manage memory leaks and zombie processes, scale concurrent browsers, and debug fonts in Docker. SnapForge manages the browser fleet for you, so a screenshot stays what it should be: one HTTP call.