POST /v1/pdf
Invoices, tickets and reports
Send your HTML template and get a print-ready PDF with page numbers. A4, Letter or a receipt width.
- You send
- HTML or a URL
- You get
- A PDF file
Send a URL or your own HTML, get the file back. Every script and emoji renders, ads and cookie banners are removed. 25,000 renders for $15 a month.
Free plan: 100 renders a month with every feature. No card needed.
Your result appears here. Ads and cookie banners are removed in this demo.
Get this from your own code. The same request as an API call:
Three endpoints, one key. Every plan includes all of them.
POST /v1/pdf
Send your HTML template and get a print-ready PDF with page numbers. A4, Letter or a receipt width.
POST /v1/screenshot
Capture a page, one element or a 1200×630 card. Cookie banners and ads are gone before the shot.
POST /v1/extract
Get the main text of a page as Markdown, with title, language and word count. Menus and footers are dropped.
# Screenshot without ads or cookie banners curl https://rendersbolt.com/v1/screenshot \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"url":"https://stripe.com","format":"webp","block_ads":true,"block_cookie_banners":true}' \ -o stripe.webp # Invoice HTML to PDF curl https://rendersbolt.com/v1/pdf -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"html":"<h1>Invoice #1042</h1>","format":"A4","margin":"15mm"}' -o invoice.pdf
const res = await fetch('https://rendersbolt.com/v1/extract', { method: 'POST', headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://en.wikipedia.org/wiki/Headless_browser' }), }); const { title, content } = await res.json(); // content is clean Markdown
import os, requests r = requests.post("https://rendersbolt.com/v1/screenshot", headers={"Authorization": f"Bearer {os.environ['API_KEY']}"}, json={"url": "https://github.com", "full_page": True, "format": "png"}) r.raise_for_status() open("github.png", "wb").write(r.content)
page.pdf() works on your laptop. In production, these are the parts that take the time:
Each open page needs a few hundred MB. A queue, a pool of warm browsers and regular restarts keep a traffic spike from taking down your app server.
Every render has a hard time limit. A browser that doesn't close is killed and replaced, so nothing piles up overnight.
Turkish, Arabic, Hebrew, Chinese, Japanese, Korean, Thai and Devanagari fonts and color emoji are installed and tested.
Maintained filter lists remove consent pop-ups and ads before the capture, and unlock scrolling.
Rendering URLs your users send can reach internal services. Every request, redirect and DNS lookup is checked before it leaves.
Chromium, filter lists and fonts are kept up to date for you.
Prefer to run it yourself? Gotenberg is a good open-source option. Our guide covers what to plan for.
We run on our own hardware instead of per-second cloud functions, so the price per render is a fraction of what most hosted screenshot and PDF APIs charge.
| Service | Plan | Per 1,000 | Per month | Included |
|---|---|---|---|---|
| render-bolt Starter | Starter | $0.60 | $15 | 25,000 renders |
| render-bolt Growth | Growth | $0.39 | $39 | 100,000 renders |
| ScreenshotOne Basic | Basic | $8.50 | $17 | 2,000 screenshots |
| ScreenshotOne Growth | Growth | $7.90 | $79 | 10,000 screenshots |
| Urlbox Hi-Fi | Hi-Fi | $9.80 | $49 | 5,000 renders |
| Urlbox Ultra | Ultra | $6.60 | $99 | 15,000 renders |
| PDFShift Startup | Startup | $18.00 | $9 | 500 credits |
| DocRaptor Basic | Basic | $120.00 | $15 | 125 documents |
| Firecrawl Hobby | Hobby | $3.80 | $19 | 5,000 pages |
| Firecrawl Standard | Standard | $0.99 | $99 | 100,000 pages |
Not in this table: Cloudflare Browser Run bills browser time and can cost less per render at high volume, and Gotenberg or Puppeteer are free if you run the servers yourself.
Detailed comparisons. List prices from each provider's public pricing page, checked October 2026. Feature sets differ, so compare the options you actually need. Sources: ScreenshotOne, Urlbox, PDFShift, DocRaptor, Firecrawl.
Every plan includes all three endpoints and every option. Only successful renders count. When you reach your quota, requests stop with a clear error, never an overage bill.
Trying the API and side projects
One product in production
Several products or nightly batch jobs
High-volume pipelines and agencies
More than 500,000 renders a month? Email us for volume pricing.
50 left. Pay once, keep the price.
One successful screenshot, PDF or extract request. Requests that fail (timeouts, blocked addresses, invalid parameters) are free. Cached responses count as a render.
Yes. Pass html instead of url on any endpoint, up to 5 MB. This is the usual way to make invoices and tickets: your template, our browser.
No. Files are streamed back and deleted. If you ask for response_type: "url", the file is kept for 24 hours so you can share the link, then removed.
Pages behind a login, and sites with aggressive bot protection such as interactive challenges. Requests to private networks and localhost are refused for security.
There are no cold starts: browsers stay open and each request gets a fresh, isolated tab. Total time mostly depends on how fast the target site loads. The demo above shows the real time for each render.
Yes. If render-bolt doesn't work for you, write to [email protected] within 14 days of your first payment and we refund it.
They are rendered in a fresh, isolated browser and the result streams back to you. Nothing is kept unless you ask for a file link (deleted after 24 hours) or turn on caching. The security page has the details.
Yes. Monthly plans can be cancelled from your dashboard and stay active until the end of the paid period.
100 free renders every month. Upgrade only when you need more.