Show HN: Rasterly – a cheaper screenshot and PDF API with a live demo

latcom1 pts0 comments

rasterly — screenshot & PDF API

Live demo

Try it — screenshot any URL, right now.

No signup. This hits the real rasterly API and streams back a JPEG. Paste a URL and render it.

Render

try:<br>news.ycombinator.com<br>github.com<br>wikipedia.org

Public URLs only — internal, localhost and private addresses are refused by SSRF protection. Demo output is a 1280px JPEG; the API also does PNG, PDF, full-page and retina at up to 3&times;.

The reason to switch

Same 50,000 renders. A tenth of the bill.

The incumbents priced screenshots like an enterprise feature. It's a browser and a disk. Here's the same volume, side by side.

ScreenshotOne

$259/mo

50,000 renders · $5.18 per 1,000

vs

rasterly · Growth

$29/mo

50,000 renders · $0.58 per 1,000 · 89% less

Savings calculator

What are you overpaying?

Drag to your monthly render volume. We put you on the cheapest plan that covers it — no annual lock-in, no per-SKU add-ons.

Renders per month50,000

ScreenshotOne

$259

at $5.18 / 1,000

rasterly

$29

Growth plan

You keep $2,760 a year — a 89% cut.

One call, any stack

Copy, paste, ship.

No SDK required — it's a GET. Pass a URL, get bytes back. Full-page, viewport, retina scale and JPEG quality are query params.

curl<br>Node<br>Python

# PNG of a page, full height<br>curl "https://api.rasterly.dev/v1/screenshot?url=https://stripe.com&full_page=true" \<br>-H "X-Api-Key: sk_live_..." -o shot.png<br>const res = await fetch(<br>"https://api.rasterly.dev/v1/screenshot?url=https://stripe.com&format=pdf",<br>{ headers: { "X-Api-Key": process.env.SHOTBOLT_KEY } }<br>);<br>await writeFile("page.pdf", Buffer.from(await res.arrayBuffer()));<br>import requests<br>r = requests.get(<br>"https://api.rasterly.dev/v1/screenshot",<br>params={"url": "https://stripe.com", "format": "jpeg", "scale": 2},<br>headers={"X-Api-Key": KEY},<br>open("shot.jpg", "wb").write(r.content)

Pricing

Usage-based. Card, not a sales call.

Every plan is the full API — all formats, full-page, retina, SSRF protection. Pick by volume; upgrade when you outgrow it.

Free

$0

100 renders / mo

for kicking the tyres

All formats<br>Full-page & retina<br>Community support

Start free

Starter

$9/mo

10,000 renders

$0.90 / 1,000

Everything in Free<br>Email support<br>Overage $1.20/1k

Choose Starter

Most popular<br>Growth

$29/mo

50,000 renders

$0.58 / 1,000

Priority queue<br>Chat support<br>Overage $0.80/1k

Choose Growth

Scale

$99/mo

250,000 renders

$0.40 / 1,000

Dedicated capacity<br>SLA on request<br>Overage $0.50/1k

Choose Scale

How it stacks up

rasterly vs the incumbents

Same job — a URL in, an image or PDF out. The difference is the invoice.

50,000 renders / monthrasterlyUrlboxScreenshotOneSnapAPI

Monthly price$29 ~$99$259$79<br>Per 1,000$0.58 ~$1.98$5.18$1.58<br>PNG / JPEG / PDFAll threeAll threeAll threeScreenshots<br>Full-page & retinaYesYesYesYes<br>SSRF-guardedYesYesYesunstated<br>Sign up with a cardYesYesYesYes<br>MigrationDrop-in URL swap———

Deep dives:Best screenshot APIs 2026rasterly vs Urlboxvs ScreenshotOnevs ApiFlashvs Browserlessvs HTMLCSStoImage

Competitor prices are public list prices observed August 2026 and are shown for comparison only; check each vendor for current pricing. Urlbox has no exact 50k tier — figure interpolated from its published plans. rasterly is not affiliated with Urlbox, ScreenshotOne or SnapAPI.

Questions

The honest FAQ

How is it so much cheaper?A screenshot is a headless browser rendering a page and handing back the bytes. We reuse one browser across requests, so a warm render is about a second of CPU — cents, not dollars. The incumbents price on brand, not cost. We pass the real cost through.

Is it really drop-in for Urlbox?The request is the same shape: a base URL, an url= param, and options like full_page and format. In most codebases you change the hostname and the key. Formats and options map one-to-one for the common cases.

Can someone screenshot my internal servers through it?No. Every target URL is resolved and checked before we open a page; requests to localhost, *.local, and any address in a private, link-local or cloud-metadata range (like 169.254.169.254) are refused with a 403. This is enforced, not a setting.

What happens when I go over my plan?You keep rendering at the per-plan overage rate shown above — no hard stop mid-month, no surprise plan bump. You can set a spend cap in the dashboard.

PDF too, or just images?PDF is a first-class format — pass format=pdf and you get a print-ready A4 with backgrounds. Same endpoint, same price.

rasterly screenshot page renders full plan

Related Articles