Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchCloudflare’s current Screenshot API is the /screenshot Quick Action in Browser Run, Cloudflare’s managed headless-browser service (formerly Browser Rendering). Send a URL or HTML document to the account endpoint, configure the viewport and capture options, and save the returned image. The current route is https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-run/screenshot. Older documentation may show browser-rendering/screenshot; use the Browser Run Quick Actions route for new integrations.
What the Cloudflare Screenshot API does
The Screenshot Quick Action performs one stateless browser render. It loads a supplied web address or HTML string, runs the page in Cloudflare’s managed browser, and returns an image. It is intended for straightforward captures, PDFs and scraping. If you need a long-lived browser, multi-step interaction, or existing Playwright, Puppeteer or CDP scripts, Cloudflare’s browser sessions are the better fit.
- Input: either
urlorhtmlin a JSON POST body. - Output: an image in the format selected by your request.
- REST authentication: an API token with the Browser Rendering – Edit permission.
- Worker authentication: invoke the Quick Action through a Workers Binding instead of putting an API token in the Worker.
Endpoint, authentication and request shape
Replace <accountId> with the Cloudflare account that has Browser Run enabled:
POST https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-run/screenshot
Authorization: Bearer <API_TOKEN>
Content-Type: application/json
Create a narrowly scoped API token with Browser Rendering – Edit. The token authorizes the Cloudflare API; it is not the same as credentials required by the destination website. Target-page cookies, HTTP Basic credentials and authorization headers are supplied separately in the screenshot options.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minute#1 Best Overall
A minimal JSON body contains one of these properties:
{"url":"https://example.com"}
{"html":"<!doctype html><html><body><h1>Hello</h1></body></html>"}
Do not assume that an old browser-rendering/screenshot path is equivalent to the current endpoint. It appears in older API reference material, while the current Quick Actions guide uses browser-run/screenshot.
First working request
cURL
curl -sS -X POST
"https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-run/screenshot"
-H "Authorization: Bearer <API_TOKEN>"
-H "Content-Type: application/json"
--data '{"url":"https://example.com"}'
-o screenshot.png
On success, screenshot.png contains the returned image. Check the HTTP status and response headers in production rather than assuming every response is an image.
Python
import requests
account_id = "<accountId>"
token = "<API_TOKEN>"
endpoint = f"https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-run/screenshot"
payload = {"url": "https://example.com"}
response = requests.post(
endpoint,
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
},
json=payload,
timeout=90,
)
response.raise_for_status()
with open("screenshot.png", "wb") as image:
image.write(response.content)
Node.js
const accountId = "<accountId>";
const token = "<API_TOKEN>";
const endpoint = `https://api.cloudflare.com/client/v4/accounts/${accountId}/browser-run/screenshot`;
const res = await fetch(endpoint, {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({ url: "https://example.com" })
});
if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);
const buffer = Buffer.from(await res.arrayBuffer());
require("node:fs").writeFileSync("screenshot.png", buffer);
Capture controls you can set
| Need | Relevant option | Practical guidance |
|---|---|---|
| Viewport | viewport |
The documented default is 1920 × 1080. Set width and height to match your target layout. |
| Full page | fullPage |
Captures the complete document rather than only the viewport. |
| One region | clip or selector capture |
Use clipping coordinates or a CSS selector when only a component is needed. |
| Image type | Format option | Choose PNG, JPEG or another format supported by the endpoint. |
| Compression | quality |
Quality applies to supported lossy formats such as JPEG, not the default PNG. |
| Sharpness | deviceScaleFactor |
Increase it when a large viewport produces a soft or pixelated image. |
| Background | Output background option | Configure the page background when transparent or custom output is required. |
Option names and nesting should follow the current Quick Actions screenshot guide. Validate the exact schema against that guide before deploying because Browser Run is evolving and older reference pages use a different route namespace.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Waiting for JavaScript-rendered pages
A navigation event does not guarantee that a single-page application has rendered its data. Set gotoOptions.waitUntil to networkidle0 or networkidle2 when network activity is a useful readiness signal. If the page has a reliable landmark, waiting for that CSS selector is usually more deterministic:
Rank #2
{
"url": "https://example.com/dashboard",
"gotoOptions": { "waitUntil": "networkidle2" },
"waitForSelector": ".dashboard-loaded"
}
Cloudflare documents navigation timeout up to 60 seconds and action or wait controls up to 120 seconds, subject to the endpoint’s overall limits. Choose the shortest timeout that accommodates the page. Waiting for all network traffic can stall on analytics, advertisements or long polling; a selector is preferable when your application can expose one.
Authentication and protected destinations
Cookies
Provide session cookies when the target site uses an authenticated browser session. Keep these credentials secret and avoid logging request bodies.
HTTP Basic authentication
Use the documented HTTP Basic authentication fields for sites protected by a username and password. This protects the destination request, not the Cloudflare API call.
Authorization headers
Custom headers can carry a destination API’s bearer token or another required credential. Scope and rotate that credential independently from your Cloudflare API token.
Bot protection boundaries
Cloudflare explicitly says Browser Run requests are identified as a bot. Changing the configured user-agent does not bypass bot protection. A failed challenge is an access-control outcome, not a reason to imply that the API defeats CAPTCHA or anti-bot systems; obtain permission or use an approved integration instead.
Rank #3
Choosing Quick Actions or browser sessions
| Requirement | Quick Action screenshot | Browser session |
|---|---|---|
| One independent capture | Designed for this stateless request. | More setup than necessary. |
| Playwright, Puppeteer or CDP control | Not the primary interface. | Designed for scripted browser workflows. |
| Multi-step navigation and interaction | Limited to documented action options. | Use a live browser and your automation library. |
| Billing concept | Browser hours. | Browser hours plus concurrent-browser usage. |
| Rate planning | Use Quick Actions request limits. | Plan against session concurrency limits. |
Limits and cost
Cloudflare’s limits page, updated September 26, 2026, lists these Quick Actions defaults:
| Plan | Quick Actions limit | Default browser timeout |
|---|---|---|
| Workers Free | One total request every 10 seconds | 60 seconds |
| Workers Paid | 30 requests per second | 60 seconds |
Cloudflare says it can increase account limits on request. These are plan defaults, not a performance guarantee.
The pricing page, updated April 21, 2026, says Quick Actions consume browser hours shared across Browser Run methods. Workers Free includes 10 minutes of browser time per day. Workers Paid includes 10 hours per month, then charges $0.09 per additional browser hour. Verify both limits and prices immediately before launch because Cloudflare can change them.
Common failures and fixes
401 or 403 response
Usually the token is missing, expired, attached to the wrong account, or lacks Browser Rendering – Edit. Create a new narrowly scoped token and confirm the account ID.
Validation error
Ensure the JSON is valid and includes exactly the required input, url or html. Check option names against the current Quick Actions documentation rather than an older API reference.
Rank #4
Blank or incomplete image
The page may render content after navigation. Add waitForSelector for a stable element or use an appropriate gotoOptions.waitUntil value. Increase the viewport or use fullPage if content is simply outside the initial frame.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Timeout
Reduce page complexity, avoid waiting for perpetual network activity, and select a readiness element. A destination that exceeds the documented timeout may need a browser session or a redesign of the capture flow.
Quality has no effect
Cloudflare warns that quality does not work with default PNG. Select JPEG or another supported lossy image type.
Pixelated output
Raise deviceScaleFactor, particularly for large desktop dimensions or high-density displays.
Bot challenge or login wall
Supply permitted cookies or destination credentials. Do not treat user-agent changes as a bypass; Browser Run identifies requests as bots.
Best Value
Or skip the browser setup
ScreenshotNeo is the alternative to try first when you want a production screenshot endpoint without assembling browser infrastructure: it removes cookie banners, newsletter popups and chat widgets before capture, bills only clean shots, and reports page and billing status in response headers. Bot checks, blank pages, failed loads and cache hits are not billed. It also provides an MCP server for Claude, Cursor and other MCP clients.
One GET request is enough:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for all options. Python and Node.js equivalents:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo includes 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.
FAQ
What is the current Cloudflare screenshot endpoint?
https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-run/screenshot, documented as the Browser Run Screenshot Quick Action.
Recommended Free Tools
Can I submit HTML instead of a URL?
Yes. Send an html property in the JSON body instead of url.
Does the API bypass CAPTCHA?
No. Cloudflare identifies Browser Run requests as bots and says changing the user-agent does not bypass bot protection.
When should I use a Worker Binding?
Use a Workers Binding when the call runs inside a Cloudflare Worker and you want the Worker integration without embedding a REST API token.
Frequently Asked Questions
Is Browser Run the same product as Browser Rendering?
Browser Run is the current product name; Cloudflare formerly called the managed browser service Browser Rendering.
Are Quick Action limits the same as browser-session concurrency limits?
No. Quick Actions have request-rate and timeout limits; browser sessions use separate concurrency limits and a different billing model.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

