Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesUrlbox’s bulk-capture workflow is to discover the pages first, then submit one render job per URL—not to capture an entire website with one native request. For a small list, use CaptureDeck or a script; for a CSV and local files, use the CLI. For a large crawl, batch jobs, limit concurrency, and decide where results will be stored before starting.
How Urlbox bulk screenshot capture works
Urlbox says its service does not natively support bulk website captures in a single request. Its documented pattern is to assemble a list of page URLs and capture them individually using a dashboard workflow, CLI, or API script. The capture options and output organization depend on which route you choose.
As an Amazon Associate I earn from qualifying purchases.
1. Discover the URLs
Check the site’s XML sitemap, often at /sitemap.xml. A sitemap can contain a sitemap index that points to additional sitemap files. Urlbox’s JavaScript guide uses the sitemapper package to handle nested sitemap indexes. If no sitemap is apparent, check robots.txt, the site footer, or its help pages. Some sites do not publish a sitemap, so you may need an existing URL list or another discovery method.
2. Choose how to submit captures
Use CaptureDeck when you want to paste a list without writing capture code. For a custom integration, send a render request for each URL through the API. If the URLs are already in a CSV and you want files saved locally, the CLI can loop over its rows.
#1 Best Overall
- 14" diagonal, 1366x768 resolution, HD BrightView LED, Glossy NON-TOUCH Display
3. Plan the job and storage
For a large list, split the work into batches and use bounded concurrency rather than launching every request at once. Urlbox advises spacing requests for very large sites, including lists of 1,000 or more pages, and avoiding excessive load on the target site. These are vendor recommendations, not a throughput guarantee. Plan how to retain the outputs: the quickstart says render URLs expire after 30 days, so download results or arrange cloud-bucket storage if you need them longer.
Choose a Urlbox workflow
| Workflow | Best for | Output and considerations |
|---|---|---|
| CaptureDeck | Capturing a URL list without writing code | Organizes captures in a dashboard and supports ZIP download. Presets include social, full-page, and mobile captures. Take care with very large lists. |
| Urlbox API script | Integrating captures into an application or processing pipeline | Request-level render options; synchronous and asynchronous workflows are documented. Batch requests and bound concurrency for large jobs. |
| Urlbox CLI with CSV | Turning a CSV into locally saved image files | A shell loop can write one full-page PNG per URL. A simple loop runs sequentially; Urlbox recommends asynchronous rendering for very long lists. |
Capture a URL list with the Urlbox API
Urlbox’s bulk guide demonstrates mapping URLs to requests at /v1/render/sync, with full_page: true and format: 'png'. The example below uses a bounded worker pool: it avoids starting every capture simultaneously while still allowing several requests at a time. Set URLBOX_SECRET and replace the sample pages with the URLs you want to capture.
Urlbox documents HTTP Basic authentication for its POST render API, using the secret key as the username. Its current API reference and quickstart also document Bearer-secret authentication and synchronous and asynchronous endpoints. Follow the authentication method documented for the endpoint and API flow you use; never put the secret key in browser-side code or a public repository.
Recommended Free Tools
import os
import asyncio
import aiohttp
API_URL = "https://api.urlbox.io/v1/render/sync"
SECRET = os.environ["URLBOX_SECRET"]
URLS = [
"https://example.com/",
"https://example.com/about",
]
CONCURRENCY = 3
async def capture(session, semaphore, index, page_url):
async with semaphore:
payload = {
"url": page_url,
"full_page": True,
"format": "png",
}
# This example uses Bearer authentication. Use the authentication
# method required by the Urlbox endpoint/account configuration.
headers = {"Authorization": f"Bearer {SECRET}"}
async with session.post(API_URL, json=payload, headers=headers) as response:
response.raise_for_status()
content_type = response.headers.get("Content-Type", "")
if "image" not in content_type:
raise RuntimeError(
f"Expected image for {page_url}; received {content_type}"
)
data = await response.read()
os.makedirs("screenshots", exist_ok=True)
path = f"screenshots/{index:04d}.png"
with open(path, "wb") as output:
output.write(data)
print(f"Saved {page_url} to {path}")
async def main():
semaphore = asyncio.Semaphore(CONCURRENCY)
timeout = aiohttp.ClientTimeout(total=180)
async with aiohttp.ClientSession(timeout=timeout) as session:
tasks = [
capture(session, semaphore, index, page_url)
for index, page_url in enumerate(URLS, start=1)
]
results = await asyncio.gather(*tasks, return_exceptions=True)
failures = [result for result in results if isinstance(result, Exception)]
if failures:
for failure in failures:
print(f"Capture failed: {failure}")
raise SystemExit(f"{len(failures)} capture(s) failed")
asyncio.run(main())
Install the dependency with python -m pip install aiohttp. This illustrates the bounded-request pattern; verify the exact endpoint, authentication, response format, and options against the Urlbox API flow configured for your account. For very large jobs, use its asynchronous workflow rather than leaving a client waiting on a long sequence of synchronous renders.
Rank #2
- 256 GB SSD of storage.
- Multitasking is easy with 16GB of RAM
- Equipped with a blazing fast Core i5 2.00 GHz processor.
Authentication and endpoint choices
- POST render API: the documented POST endpoint accepts
urlorhtmlas required input, with render options in JSON or form data. The POST API page describes Basic authentication, with the secret key as the username. - Current API flows: the API reference and quickstart also describe Bearer-secret authentication and
/v1/render/syncand/v1/render/async. Use the credentials and endpoint specified for the chosen flow; do not combine examples from different flows without checking their requirements. - Sync versus async: sync is convenient when each response can be handled immediately. An asynchronous job is more suitable for a very long list where waiting for every render in one client session is undesirable.
Capture a CSV locally with the Urlbox CLI
Urlbox’s CLI documentation shows looping over CSV rows and saving one full-page PNG per URL. The basic shape is:
while IFS=, read -r url; do
urlbox render "$url" --full-page --format png --output "screenshots/$(printf '%s' "$url" | sed 's#https?://##; s#[^A-Za-z0-9]#_#g').png"
done < urls.csv
Use the exact flags and authentication setup supported by your installed CLI version; the command above expresses the documented loop pattern and output intent. Ensure the CSV has the expected columns and that the output directory exists. A sequential loop is easy to understand but may take a long time for a large list; Urlbox’s CLI guidance recommends asynchronous rendering for very long lists.
Set full-page behavior and output format
Stitch or native full-page capture
Set full_page to true to capture the scrollable page rather than only its initial viewport. Urlbox’s default stitch mode scrolls through the page, triggers lazy-loaded content and animations, freezes fixed or sticky elements, captures sections, and stitches them together. Its documentation says this mode favors accuracy. The native mode uses the browser’s native full-page screenshot facility and is faster, but may be less accurate on some pages.
Scrolling, width, and image limits
skip_scrolldisables the initial scrolling behavior and can reduce render time, but may prevent lazy-loaded content from appearing.full_widthcan include the full horizontal scroll width for pages that scroll sideways.- Urlbox documents maximum image dimensions of 65,535 × 65,535 pixels for JPEG and 16,383 × 16,383 pixels for WebP. Its screenshot guide recommends PNG for full-page captures when image-size limits matter.
Large pages can produce large files and take longer to render. Choose the format and full-page mode based on what the screenshots need to preserve, and check outputs for clipped or missing content on pages with unusual scrolling behavior.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Or skip the browser setup
ScreenshotNeo offers a single-request screenshot API; for bulk work, send one request per URL and apply the same batching approach to your URL list. Its clean-shot flow accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in headers. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. One thousand screenshots a month are free with no card; paid plans start at $5 for 3,000.
Example using cURL (see the ScreenshotNeo API docs):
Rank #3
- 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.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
ScreenshotNeo is a website screenshot API and MCP server made by Yorker Media. See ScreenshotNeo for plan details and service information.
Sign up free for 1,000 screenshots a month with no card.
Troubleshoot bulk capture jobs
- A URL is missing from the results: check that URL discovery included it and that the input row was parsed as one URL. Sites without a published sitemap require a separate URL source.
- A request fails authentication: confirm whether the chosen endpoint expects Basic authentication or a Bearer secret, and that the secret is valid for that API flow. Keep credentials server-side.
- A large run stalls or overloads the target: reduce concurrency, split the URL list into batches, or use an asynchronous workflow for very long lists. Avoid hammering the site being captured.
- Lazy-loaded content is absent: avoid disabling scroll behavior with
skip_scroll; full-page stitch mode is designed to scroll and trigger lazy content. - Sticky elements repeat or page sections look wrong: compare stitch and native modes. Stitch favors accuracy; native is faster but may work less well on some pages.
- A full-width or very long image is truncated: check the output format’s documented dimension ceiling. Consider PNG when full-page dimensions are important.
- A saved render link no longer works: Urlbox’s quickstart says render URLs expire after 30 days. Download the image or arrange cloud storage for durable retention.
Frequently asked questions
Can Urlbox capture every page of a site in one request?
No. The documented bulk workflow discovers URLs and submits a render for each one.
Does Urlbox require a sitemap?
No, but a sitemap can make URL discovery easier. If one is unavailable, look at robots.txt, the footer, help pages, or another URL list.
Can I keep captures after the render link expires?
Yes. Download them or save them to storage you control before the temporary render URL expires.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated 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 matchQuick 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.




