Screenshot APIs Without a Subscription, Compared (2026)
Most screenshot APIs are sold as monthly subscriptions, and that pricing model punishes exactly the projects most likely to need one: side projects, internal tools, and agents with spiky usage. If you render 300 screenshots one month and 12 the next, a 2,000-per-month plan means you are paying for quota that evaporates on the 1st.
There are three real ways around it: prepaid credits that never expire, usage-based units, and building your own renderer on Cloudflare. This post compares all three against the standard subscription offers, with every price checked against the provider's public pricing page on August 13, 2026.
Disclosure up front: one of the prepaid options below is our own service, and the live request examples in this post were run against it. The competitor numbers come from their own pricing pages, quoted as published.
What the subscription model actually costs
The two best-known dedicated screenshot APIs both sell monthly quotas:
- ScreenshotOne starts at $17/month for 2,000 screenshots ($0.0085 each if you use the full quota), with overages at $0.009 per screenshot. There is a free tier of 100 screenshots per month.
- Urlbox starts at $19/month for up to 2,000 renders ($0.0095 each at full quota). There is no free plan, only a 7-day trial. Note the overage behavior: exceeding your quota automatically upgrades you to the next tier rather than billing a per-render overage. The next tier up is $49/month.
Those per-unit prices only hold if you consume the whole quota every month. Use half, and your effective price doubles. That is the whole trade: subscriptions are cheap per unit for steady, predictable volume and expensive for everything else.
The comparison
| Option | Model | Entry price | What you get | Per screenshot |
|---|---|---|---|---|
| ScreenshotOne | Subscription | $17/mo | 2,000 screenshots/mo | $0.0085 at full quota |
| Urlbox | Subscription | $19/mo | 2,000 renders/mo | $0.0095 at full quota |
| Browserless | Subscription, time-based units | $25/mo (annual billing) | 20,000 units/mo, 1 unit = up to 30s of browser time | $0.00125 for a sub-30s capture |
| Skillforge Render API (ours) | Prepaid credits, no expiry | $10 one time | 4,000 units, screenshot = 1 unit | $0.0025 |
| Cloudflare Browser Rendering (DIY) | Usage on Workers Paid | $5/mo | 10 browser-hours/mo included, then $0.09/hour | Depends on your code; see below |
Three of these are not quite measuring the same thing, so the fine print matters. Browserless bills browser time, not screenshots: a capture that finishes inside 30 seconds costs 1 unit, and slow pages cost more. Cloudflare bills browser hours, so your per-screenshot cost depends entirely on how fast your rendering code is. The subscription quotas and our prepaid units bill per successful render.
Prepaid credits: pay once, draw down
The prepaid model is the simplest fix for spiky usage: buy a pack, spend it at whatever pace your project actually runs at, buy another when it is empty. No billing cycle, nothing to cancel.
This is the model we built our own render API on, so here is what it looks like live, not from marketing copy. First, a trial key (100 units, no signup, no card, one key per IP per day):
curl -X POST https://render.skillforge99.com/v1/keys
{"apiKey":"sfr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
Then a screenshot:
curl -X POST https://render.skillforge99.com/v1/screenshot \
-H "Authorization: Bearer sfr_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","width":1280,"height":800,"format":"png"}' \
--output screenshot.png
Running exactly that today returned a 19,303-byte PNG with two response headers that do the accounting:
HTTP/2 200
content-type: image/png
x-render-units: 1
x-credit-remaining: 99
A viewport screenshot is 1 unit, a full-page screenshot or a PDF is 2, and the $10 starter pack is 4,000 units, which is $0.0025 per screenshot: less than a third of the entry-tier subscription prices above, and the units are still there next quarter if you do not use them this one. Failed renders are credited back automatically instead of billed.
The same renders are exposed as MCP tools (screenshot_url, render_pdf, render_og) at https://render.skillforge99.com/mcp, so an agent framework that speaks MCP can use the key without any HTTP glue code.
Usage-based units: Browserless
Browserless is a different shape of product: it hosts headless browsers and you drive them with your own Puppeteer or Playwright code, screenshots being just one thing you can do. Pricing is per unit of browser time (up to 30 seconds per connection), starting at $25/month for 20,000 units on annual billing, with a free tier of 1,000 units per month.
If your captures are fast, the math is excellent: $0.00125 per sub-30-second capture. The trade is that it is still a subscription (the monthly units reset), and you are writing and maintaining browser automation code rather than calling one endpoint.
Build your own on Cloudflare
If you want full control, Cloudflare's Browser Rendering runs headless Chromium inside Workers, and the Workers Paid plan ($5/month) includes 10 browser-hours per month, with additional time at $0.09 per hour. Cloudflare also exposes a REST endpoint that takes a URL and returns a screenshot without you writing Puppeteer code, though the interesting economics come from writing your own Worker.
Rough math: if your Worker captures a typical page in about 3 seconds of browser time, 10 hours is roughly 12,000 screenshots a month inside the $5 plan. That is the cheapest option on this page by a wide margin.
The honest cost is engineering time. You own viewport handling, timeouts, retries, caching, and crucially the security guards: an unprotected screenshot Worker is an SSRF machine that will happily photograph your internal dashboards if you let it fetch arbitrary URLs. We know because we built ours on exactly this stack, and the SSRF blocklist, budget guard, and refund-on-failure logic took longer than the rendering did. Build it yourself when screenshots are core to your product; buy prepaid credits when they are a feature.
Agents can skip the API key entirely
One more subscription-free path exists as of this year, aimed at AI agents rather than humans: pay-per-call over the x402 protocol. Send a render request with an Accept-Payment: x402 header and no credentials, and our endpoint answers with a machine-readable 402 quote instead of a 401:
{
"x402Version": 1,
"accepts": [{
"scheme": "exact",
"network": "base",
"maxAmountRequired": "5000",
"resource": "https://render.skillforge99.com/v1/screenshot",
"description": "Skillforge render API: screenshot ($0.005/call, USDC on Base)",
"payTo": "0x5A63b100934Ea26075F2C00025d7545b45f55491",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}],
"error": "X-PAYMENT header is required"
}
The agent pays $0.005 in USDC on Base with the retry, no account anywhere. That response above is the live endpoint's actual output from today, trimmed to the interesting fields. Per call it is twice our prepaid rate, which is the premium for holding no balance at all.
FAQ
Is there a completely free screenshot API?
Free tiers exist but they are small: ScreenshotOne gives 100 screenshots per month, Browserless gives 1,000 units per month, our trial keys carry 100 units (one key per IP per day), and Cloudflare's free Workers plan includes 10 minutes of browser rendering per day. Fine for development, not something to ship a product on.
How much should a screenshot API cost in 2026?
At current published prices: entry subscriptions run $0.0085 to $0.0095 per screenshot if you use your whole quota, prepaid credits run $0.0025, time-based units about $0.00125 for fast captures, and DIY on Cloudflare can land well under $0.001 at steady volume. Anything above a penny per screenshot is now the expensive end of the market.
Can I use a screenshot API without a credit card?
Yes: ScreenshotOne's 100-per-month free tier, Browserless's free tier, and our 100-unit trial keys all work without a card.
Why not just run Puppeteer on a VPS?
You can, and for one steady internal job it is fine. The hidden costs are keeping Chromium patched, handling memory leaks in long-running browsers, and scaling past one instance. The serverless options above exist because a fleet of headless Chromes is unpleasant to babysit.