To screenshot multiple URLs with Browserless, send one authenticated POST request to its regional /screenshot endpoint for each URL, run a controlled number of requests concurrently, and save each image under a distinct filename. Browserless returns image data; your script handles the URL-to-file mapping, errors, and any retries.
How the Browserless multi-URL workflow works
- Get a Browserless API token and choose the correct regional endpoint for your account. The REST endpoint expects the token in the
tokenquery parameter. See the Browserless connection URLs documentation. - For every URL, send a
POSTrequest to the regional/screenshotendpoint. Put the page URL and any screenshot options in a JSON request body. - Read the response as binary image data and write it to a distinct file. Preserve the URL-to-filename mapping so a failed capture can be identified and retried.
- For a list, submit requests concurrently rather than waiting for each capture to finish before starting the next. Browserless documents that each REST request opens an independent browser session, but does not prescribe a universally safe concurrency limit.
The endpoint documentation describes PNG as the default in its example and supports PNG, JPEG, and WebP. For options and request details, see the Browserless screenshot REST API.
Runnable JavaScript example
This Node.js example sends one request per URL, checks HTTP status, and saves response bytes with stable, distinct filenames. Set BROWSERLESS_TOKEN to your token and replace the endpoint with the regional URL for your account.
import { writeFile } from "node:fs/promises";
const urls = ["https://example.com/", "https://example.org/"];
const token = process.env.BROWSERLESS_TOKEN;
const endpoint = "https://production-sfo.browserless.io/screenshot";
if (!token) throw new Error("Set BROWSERLESS_TOKEN before running this script.");
const results = await Promise.all(urls.map(async (pageUrl, index) => {
const response = await fetch(`${endpoint}?token=${encodeURIComponent(token)}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
url: pageUrl,
options: { fullPage: true, type: "png" }
})
});
if (!response.ok) {
throw new Error(`Screenshot failed for ${pageUrl}: HTTP ${response.status}`);
}
const image = Buffer.from(await response.arrayBuffer());
const filename = `screenshot-${String(index + 1).padStart(3, "0")}.png`;
await writeFile(filename, image);
return { pageUrl, filename };
}));
console.log(results);
The example uses Promise.all, so a rejected request rejects the overall operation. For larger jobs, use a concurrency limiter and catch errors per URL so one failed page does not prevent other successful screenshots from being recorded. Do not put the token in source control or log full request URLs containing it.
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 reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute#1 Best Overall
- 14" diagonal, 1366x768 resolution, HD BrightView LED, Glossy NON-TOUCH Display
Choose capture settings per page
Viewport or full page
Without full-page capture, the image covers the configured viewport. Set options.fullPage: true when the entire document is needed; the resulting image can be substantially taller and larger than a viewport capture.
Image format and quality
The REST documentation lists PNG, JPEG, and WebP. PNG is useful when crisp text or lossless output matters; JPEG and WebP can be appropriate when smaller output is more important. The available quality setting is relevant to lossy formats. Use format and quality values supported by the endpoint documentation.
Viewport, device scale, clip, and selector
Set viewport dimensions and device scale when captures must match a particular display size or pixel density. Use options.clip to capture a defined rectangle, or a selector-related option when only a specific page element is required. These choices affect the captured area; they do not change which URL is requested.
Rank #2
- 1.1 GHz (boost up to 2.4GHz) Intel Celeron N5030 Quad-Core
- 4GB DDR4 System Memory; 128GB Solid State Drive
- 11.6" HD (1366 x 768) Multi-Touch Display
- Combo headphone/microphone jack - Noble Wedge Lock slot - HDMI; 2 USB 3.1 Gen 1
- Windows 11 Pro
Wait for content and lazy loading
For pages that render content after navigation, choose an endpoint wait option appropriate to the page. A full-page screenshot does not by itself guarantee that images or sections loaded only on scroll have appeared. Browserless documents scrollPage: true as an aid for scrolling before capture; inspect the target page’s behavior and use the option when needed.
Concurrency, reliability, and cost considerations
Concurrency reduces the time spent waiting on a list compared with strictly sequential requests, but there is no documented universally safe parallel-request count. Start with a modest bounded number, then adjust based on your account limits, target-site behavior, and observed failures. Browserless’s concurrent-session example describes total completion time as roughly the duration of the slowest request; treat that as an illustrative explanation, not a guaranteed service level.
- Keep a record of each input URL, output filename, status, and error so reruns can target only failed pages.
- Check non-success HTTP responses before treating the body as an image.
- Use bounded retries for transient failures, with a delay between attempts. Avoid retrying indefinitely or retrying pages that consistently reject automated access.
- For large output sets, consider writing files incrementally rather than retaining every response in memory.
- The documentation reviewed does not establish a fixed speedup, performance figure, or cost per capture; check current Browserless account terms for applicable limits and pricing.
Browserless REST API or BrowserQL?
| Approach | Request and result | When it fits |
|---|---|---|
REST /screenshot |
HTTP POST with JSON; image returned as binary data. See REST screenshot docs. | A simple URL list where each URL maps naturally to a separate request and image file. |
| BrowserQL | BrowserQL mutation workflow; the screenshot result is provided as a base64 field. See BrowserQL screenshot docs. | Projects already using BrowserQL or needing its query-based browser interface. |
For a basic batch of URLs, REST avoids an extra base64-decoding step: issue one request per page and save the returned bytes. Browserless’s REST API overview describes the broader REST interface.
Rank #3
- 256 GB SSD of storage.
- Multitasking is easy with 16GB of RAM
- Equipped with a blazing fast Core i5 2.00 GHz processor.
Troubleshooting failed or unexpected screenshots
HTTP error or no image file
Confirm that the request is a POST, the body is valid JSON with a url, the token is present as a query parameter, and the endpoint matches your account’s region. Check the status code and response details rather than writing an error response to a file with a PNG extension.
Blank or incomplete capture
The page may not have finished rendering, or its content may depend on scrolling. Adjust the endpoint’s wait behavior and consider scrollPage: true for lazy-loaded sections. Verify that the requested URL itself loads as expected.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →CAPTCHA, access denied, or bot-check page
This can indicate that the target site is blocking automated access, rather than a failure to serialize the screenshot. Browserless documents /unblock as a separate route for certain bot-detection cases. Respect the target site’s access rules and do not treat bypassing restrictions as a default capture setting.
Rank #4
- EFFORTLESS EVERYDAY PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 Home system, delivering reliable, low-power efficiency for daily tasks like document editing, email, online classes, and web browsing
- 15.6-INCH FULL HD DISPLAY: Enjoy immersive visuals on the 15.6" FHD (1920x1080) anti-glare screen with micro-edge bezels. Delivers clear details and comfortable viewing for long study sessions, working on spreadsheets, and video playback
- RESPONSIVE MULTITASKING & STORAGE: Built with 4GB LPDDR4 RAM and 128GB eMMC storage for smooth daily essential use. Expand your storage by up to 1TB via the integrated TF card slot to easily store movies, photos, and working files
- ADVANCED CONNECTIVITY: Outfitted with 2x Full-Featured Type-C ports for data transfer, fast charging, and dual-monitor output, alongside 2x USB 3.2 Gen1 ports and a 3.5mm audio jack for complete peripheral compatibility
- LIGHTWEIGHT & SILENT OPERATION: Slim and portable for effortless travel or commuting. Features a 1MP HD webcam for remote meetings, 38Wh battery with 45W Type-C fast charging, and a fanless silent design for peaceful work environments.
Files overwritten or associated with the wrong page
Concurrent requests can finish in a different order from the input list. Derive filenames from stable indices or identifiers rather than completion order, and retain the mapping from each original URL to its filename.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server. Its one-call request accepts a URL and returns an image; add your own loop over the URL list and assign a different output filename to each response. See the ScreenshotNeo API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie and consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, with response headers indicating the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.
Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month, no card required.
Best Value
- WINDOWS 11 | STABLE PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 system, this laptop delivers stable performance for everyday computing tasks. It supports web browsing, online learning, document editing, email communication, and basic office work with optimized power efficiency, providing a practical and reliable experience for essential daily use for daily use.
- 15.6” FHD IPS DISPLAY: Features a 15.6-inch Full HD IPS display with narrow bezels, offering wider viewing angles and clearer image details compared to standard panels. The improved screen-to-body ratio enhances visual experience for study, reading, document work, and video playback, making it suitable for both productivity and entertainment use.
- 4GB DDR4 + 128GB eMMC STORAGE: Equipped with 4GB DDR4 memory and 128GB eMMC storage for everyday basics such as browsing, documents, email, and online learning platforms. The built-in TF card slot supports storage expansion up to 1TB, giving you more flexibility for files, photos, videos, and daily documents. TF card not included.
- CONNECTIVITY & PORTS: Includes 1× TF card slot, 2× USB 3.2 Gen1 ports, and 2× full-featured Type-C ports (USB 3.2 Gen1). The Type-C ports support data transfer, charging, and video output, enabling flexible connection with external devices such as monitors, storage, and peripherals for daily work and study use.
- LIGHTWEIGHT DESIGN | ONLINE COMMUNICATION: Designed with a slim, portable profile, this laptop is easy to carry for school, commuting, and travel. A built-in 1MP front camera supports online classes, video meetings, remote communication, and everyday conferencing. The 3300mAh battery works with the low-power system design to support practical daily use, while thermal optimization helps maintain quieter operation during extended tasks.
Frequently Asked Questions
Does Browserless return a screenshot as a file attachment?
The REST screenshot endpoint returns image data in the response; your client code must write those bytes to a file.
Can I save one screenshot per URL while requests run concurrently?
Yes. Associate each request with a stable index or identifier and use that value to create its filename, since requests may finish in a different order from the input list.
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.

