Free Rendertron Alternative: Screenshot API Without Self-Hosting
Free Rendertron Alternative: Screenshot API Without Self-Hosting
Rendertron is an open-source headless Chrome rendering service built by the Google Chrome team. It's designed primarily for dynamic rendering (serving pre-rendered HTML to crawlers), but developers often use it for screenshots and PDF generation as well. The catch: Rendertron is self-hosted. You run it, maintain it, and manage Chromium crashes, Docker containers, and memory spikes. If you're using it specifically for screenshots, there's a hosted API that handles the infrastructure.
Try It Instantly
# PNG screenshot
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=png" -o screenshot.png
# Full page
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&full_page=true&format=webp" -o fullpage.webp
# PDF
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=pdf" -o page.pdf
No Docker. No Chromium instance to manage. One HTTP call.
What Rendertron Does (and What This Covers)
Rendertron provides two primary features:
1. Dynamic rendering — serving rendered HTML to search crawlers for SEO (Googlebot, etc.)
2. Screenshot/PDF endpoints — /screenshot/URL and /pdf/URL
If you're using Rendertron for screenshots or PDFs, this API replaces those endpoints directly. If you're using Rendertron for dynamic rendering / SEO pre-rendering, that's a different use case — you'd still need a rendering proxy.
Feature Comparison
| Feature | Rendertron (self-hosted) | This API (hosted) |
|---|---|---|
| Signup required | No (self-hosted) | No |
| Infrastructure required | Yes (Docker/Node.js + Chromium) | No |
| PNG screenshots | Yes | Yes |
| WebP screenshots | No (via raw Chromium options) | Yes |
| JPEG screenshots | Yes | Yes |
| PDF export | Yes | Yes |
| Full page capture | Yes | Yes |
| Custom viewport | Yes | Yes (width, height, scale up to 3x) |
| Dark mode | No | Yes |
| Ad blocking | No | Yes (25+ domains) |
| Custom delay | Yes (renderDelay param) | Yes |
| wait_for selector | No | Yes (CSS selectors, up to 15s) |
| Custom JavaScript | No | Yes (2KB inline) |
| Element selector | No | Yes (CSS selectors) |
| Retina (2x/3x) | Via deviceScaleFactor | Yes (up to 3x) |
| Dynamic HTML rendering | Yes (core feature) | No |
| SEO pre-rendering | Yes | No |
| Self-hostable | Yes | No |
URL Pattern Comparison
Rendertron screenshot endpoint:
https://your-rendertron-instance.com/screenshot/https://example.com?width=1280&height=800
This API:
https://hermesforge.dev/api/screenshot?url=https://example.com&width=1280&height=800&format=png
Migration Example
Before (self-hosted Rendertron):
const renderUrl = `https://${RENDERTRON_HOST}/screenshot/` +
encodeURIComponent('https://example.com') +
'?width=1280&height=800';
const resp = await fetch(renderUrl);
const buffer = await resp.arrayBuffer();
// returns JPEG by default
After (hosted API):
const params = new URLSearchParams({
url: 'https://example.com',
width: '1280',
height: '800',
format: 'png' // or 'webp', 'jpeg'
});
const resp = await fetch(`https://hermesforge.dev/api/screenshot?${params}`);
const buffer = await resp.arrayBuffer();
Python Replacement
Before:
import requests
render_url = f"https://{RENDERTRON_HOST}/screenshot/{target_url}"
resp = requests.get(render_url, params={"width": 1280, "height": 800})
with open("screenshot.jpg", "wb") as f:
f.write(resp.content)
After:
import requests
resp = requests.get("https://hermesforge.dev/api/screenshot", params={
"url": "https://example.com",
"width": "1280",
"height": "800",
"format": "webp"
})
with open("screenshot.webp", "wb") as f:
f.write(resp.content)
Rendertron PDF Migration
Before:
curl "https://your-rendertron.com/pdf/https://example.com" -o page.pdf
After:
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=pdf&full_page=true" -o page.pdf
Self-Hosting Cost Comparison
Running Rendertron yourself requires: - A VPS or container host with enough RAM for Chromium (~512MB–1GB per headless instance) - Docker or Node.js runtime maintenance - Concurrency management (each screenshot request blocks an instance) - Chromium crash recovery (memory leaks, zombie processes) - TLS/SSL if exposed to HTTPS traffic
For screenshot use cases — especially side projects and low-to-medium volume tools — outsourcing to an API is almost always cheaper once you factor in server time and maintenance overhead.
What This API Adds (That Rendertron Lacks)
Dark mode. Rendertron doesn't expose a dark mode toggle. This API does:
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&dark_mode=true&format=webp" -o dark.webp
WebP output. Rendertron defaults to JPEG. WebP is 30–50% smaller:
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=webp" -o screenshot.webp
Ad blocking. 25+ ad/tracker domains blocked by default — cleaner screenshots without ad overlays:
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=png" -o clean.png
Element capture. Screenshot a specific CSS selector:
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&selector=.hero&format=png" -o hero.png
Retina scale. 2x or 3x device pixel ratio:
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&scale=2&format=png" -o retina.png
When to Use Which
Rendertron is better if you need: - Dynamic rendering / SEO pre-rendering for crawlers - Full control over the Chromium instance (custom flags, proxy config) - Self-hosted infrastructure with no external dependencies - Tight integration with App Engine or GCP infrastructure
This free alternative is better if you need: - Screenshots or PDFs without managing Chromium infrastructure - Dark mode, WebP output, or element-specific captures - Ad-blocked screenshots by default - Zero maintenance overhead - Testing capture parameters without provisioning a server - One-time or low-volume screenshot needs without a subscription
Pricing Comparison
| Tier | Rendertron (self-hosted) | This API (hosted) |
|---|---|---|
| Free | Server costs | Unlimited (2/min, no key) |
| Entry level | Server + maintenance time | $4 / 30 days |
| Mid volume | Larger instance or cluster | $9 / 30 days |
Rendertron is free to run but has real infrastructure costs. This API uses one-time purchasing — no servers to manage, no recurring charges.
Getting Started
No infrastructure needed:
https://hermesforge.dev/api/screenshot?url=https://example.com&format=png
Try parameters visually in the interactive screenshot tool.
For higher volume, get a free API key — 50 requests/day, no payment required.