Printwren
Free API + MCP server · no key

Any web page or HTML to a clean PDF

Paste a URL or send your HTML and get a PDF printed by real Chrome: A4 or Letter, margins, backgrounds and page numbers. For invoices, reports, receipts and saving pages. Free, no key.

Who it's for

Anyone who needs a PDF of a page or a template, from one click to an automated invoice run.

Invoices and receipts

POST your HTML template, get a print-ready PDF with backgrounds and page numbers.

Saving and sharing pages

Turn an article, docs page or dashboard into an A4 or Letter PDF.

No-code and scripts

One GET URL returns the PDF file, so it drops into Make, Zapier, n8n or a curl line.

AI agents

An MCP tool that returns the PDF as base64 plus its page count and size.

Try it

Enter a web page. Printwren prints it with real Chrome; click the result to download the PDF.

Prefilled with a real example. Press Make PDF.

Real sample output

Captured from a live call to this API.

{
  "results": [
    {
      "source": "https://developer.mozilla.org/en-US/docs/Web/CSS/@page",
      "status": "ok",
      "title": "@page CSS at-rule - CSS | MDN",
      "pages": 9,
      "bytes": 1517607,
      "format": "A4",
      "landscape": false,
      "renderMs": 4568,
      "downloadUrl": "https://printwren.cybermax-tools.workers.dev/pdf?url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FCSS%2F%40page&format=A4&pageNumbers=true",
      "renderedAt": "2026-09-26T00:31:08.019Z"
    }
  ],
  "count": 1
}

Limits, plainly

Free and rate limited so it stays fast for everyone. A bulk version (many URLs per run, custom headers and footers, waits for selectors, cookie-banner dismissal) is coming to the Apify Store.

  • 4 PDFs per minute per IP address, one document per call.
  • HTML up to 200 KB; public http(s) pages only.
  • About 25 seconds per document at most.
  • Shared free renderer: if it is busy you get a clear 503, try again a minute later.
  • Free, no key, no sign-up. Nothing is stored: the PDF is made on each call.

Use the API

JSON over HTTPS, CORS enabled, no key. GET for quick calls, POST a JSON body for lists. Spec: openapi.json · llms.txt

cURL
curl -s "https://printwren.cybermax-tools.workers.dev/api/pdf?url=example.com&format=A4&pageNumbers=false"

# lists: POST a JSON body
curl -s -X POST https://printwren.cybermax-tools.workers.dev/api/pdf \
  -H "content-type: application/json" \
  -d '{"html":"<h1>Invoice #1042</h1><p>Total: $120.00</p>","format":"Letter","pageNumbers":true,"includePdfBase64":true}'
Python
import requests

r = requests.post("https://printwren.cybermax-tools.workers.dev/api/pdf",
                  json={"html":"<h1>Invoice #1042</h1><p>Total: $120.00</p>","format":"Letter","pageNumbers":True,"includePdfBase64":True}, timeout=30)
r.raise_for_status()
for row in r.json()["results"]:
    print(row)

Endpoints: /api/pdf print a url or html to pdf (json result)

Add it to your AI agent (MCP)

A remote MCP server at https://printwren.cybermax-tools.workers.dev/mcp (streamable HTTP, no auth). Read-only tools with JSON schemas, so agents know exactly what to send.

MCP config
// Claude Desktop, Cursor, VS Code, any MCP client (remote, no key)
{
  "mcpServers": {
    "printwren": { "type": "http", "url": "https://printwren.cybermax-tools.workers.dev/mcp" }
  }
}

# Claude Code
claude mcp add --transport http printwren https://printwren.cybermax-tools.workers.dev/mcp

# Tools: url_to_pdf, html_to_pdf
# e.g. url_to_pdf({"url":"example.com","format":"A4"})
  • url_to_pdf
    Print a public web page to PDF with real Chrome. Returns title, page count, size, a direct download URL and (include_base64=true) the PDF bytes as base64.
  • html_to_pdf
    Print an HTML document (invoice, report, receipt; up to 200 KB, inline CSS) to PDF with real Chrome. Returns the PDF as base64 with page count and size.

FAQ

Why not the browser's Print to PDF?

Fine for one page. Printwren does the same real-Chrome printing from a URL or an HTML string, so a script, a no-code flow or an AI agent can make the PDF without a person clicking.

Why not wkhtmltopdf?

wkhtmltopdf uses an old WebKit engine and is archived; modern CSS (flexbox, grid, web fonts) often breaks. Printwren prints with current Chrome.

Can I get the file directly?

Yes: GET /pdf?url=example.com returns the PDF file itself (Content-Type application/pdf). /api/pdf returns JSON with a download link and optional base64.

Do you keep my HTML or PDFs?

No. Each PDF is made on the call and returned; nothing is stored.

Can I convert many pages or use custom headers?

The free API does one document per call. The bulk version with custom header/footer templates, wait-for-selector and cookie-banner dismissal is coming to the Apify Store.

Is there a key or a cost?

No. The API and MCP server are free and rate limited (4 PDFs per minute per IP).