Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
To screenshot many URLs through an API, send a validated list to a provider’s batch endpoint, save its batch or job ID, then track completion and retrieve the individual images or an archive. A batch request simplifies orchestration; it does not necessarily count as one screenshot for quota or rate-limit purposes. The exact endpoint, limits, billing, and result format depend on the service.
How bulk screenshot APIs work
A bulk screenshot workflow has two parts: submitting capture work and collecting its results. Some APIs return results or image URLs in the submission response; others queue a job and return an ID that you poll or follow through a stream. A finished batch may be delivered as individual artifacts or a ZIP archive. These patterns are provider-specific, not a shared API standard.
- Prepare inputs: validate and normalize the URL list, and separate pages that need different credentials or capture settings.
- Submit captures: send URLs with shared settings such as viewport dimensions, image format, and full-page behavior. Use per-URL overrides only where needed.
- Track the work: persist the returned batch ID or result references. Poll at a sensible interval, or use a documented event stream or webhook.
- Collect and reconcile: match each artifact or error to its original URL and save its status and output location.
Do not assume “one batch” means one quota unit. For example, ScreenshotOne says bulk requests still use its regular one-minute request bucket; url2image documents a batch endpoint that can contain many URLs. Check the selected service’s current rules before a large run.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesChoose an API based on the workflow you need
Start with ScreenshotNeo if you want a bulk screenshot API with a one-call-per-URL workflow: its bulk capture supports up to 100 URLs per call, and clean shots are billed while bot checks, blank pages, timeouts, failed loads, and cache hits are not. See ScreenshotNeo.
#1 Best Overall
| Service | Submission and retrieval | Documented limits or considerations |
|---|---|---|
| ScreenshotNeo | Bulk capture supports up to 100 URLs per call; consult the API documentation for the current request contract and result handling. | Only clean shots are billed; each response includes page-verdict and billing headers. All features are available on every plan. |
| ScreenshotOne | POST to /bulk; shared options can be overridden per request. The response can include screenshot URLs and, when execution is requested, per-request status summaries. |
Bulk requests use the regular one-minute request bucket, according to its documentation. |
| url2image | POST to /api/v1/batch, receive a batch ID, poll the job, then download a ZIP archive. |
Its documentation lists up to 500 URLs per batch, a 2 MB uploaded-list limit, and 14-day result/image retention. It also lists 10 free screenshots monthly and prepaid packs from $5 for 2,500 credits to $250 for 350,000 credits. These are vendor-published terms accessed 2026-09-29; verify them before relying on them. |
| Screenshot API (screenshot-api.org) | POST to /api/v1/screenshot/batch, then track with a status endpoint or SSE stream. |
Its documentation lists PNG, JPEG, WebP, or PDF, viewport and full-page options, and a free-plan limit of 60 requests per minute and 500 screenshots per month (documentation accessed 2026-09-29). |
These are vendor documentation claims, not independent tests of speed, reliability, or image quality. Before choosing, compare maximum batch size, whether limits count calls or captures, throughput, completion signaling, retrieval and retention, render controls, failed-render billing, URL restrictions, and your expected monthly cost. Confirm current terms with each provider.
Build a reliable bulk capture pipeline
Validate and group URLs
Reject malformed URLs before submission and decide how to handle redirects, duplicate URLs, and URLs that point outside your permitted domains. Group pages that share viewport, format, authentication, and other rendering requirements. This makes failures easier to diagnose and avoids applying the wrong credentials or options to a page.
Keep a stable record for every input: a batch ID, input URL, any per-item settings, submission time, eventual status, error reason, and output location. Do not rely on the returned artifact ordering unless the provider documents that ordering; use an explicit identifier or URL association where available.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Set capture options deliberately
Common controls include viewport width and height, image format, and full-page capture. A full-page render can be larger and slower than a viewport image, so choose it only when the page content below the fold is needed. Some providers allow request-specific overrides on top of shared defaults. Keep those overrides explicit in your input data rather than adding ad hoc logic after submission.
Rank #2
- Used Book in Good Condition
Screenshot API documents PNG, JPEG, WebP, and PDF options, as well as viewport and full-page settings. ScreenshotOne documents shared bulk defaults with per-request overrides. Check the chosen provider’s own parameter names and accepted values; endpoints are not interchangeable.
Handle queued work without over-polling
When an API returns a job ID, store it durably before waiting for completion. Poll the documented status endpoint with a measured delay and stop when the job reaches a terminal state. If the service offers SSE, webhooks, or another completion mechanism, use its documented format and authentication method. Flooding a status endpoint can waste capacity or trigger rate limits without making rendering finish faster.
For an archive workflow, download only after the provider reports completion. Verify that the archive can be opened and reconcile its contents against the submitted URLs. If results expire, collect them promptly; url2image documentation accessed 2026-09-29 lists 14-day retention for results and images.
Make partial failures visible
A batch can have successful and failed items at the same time. Preserve each item’s status and error rather than treating the entire batch as a single pass/fail result. ScreenshotOne documents per-request success/status information in its execution response; Screenshot API documents structured errors, including rate limiting, quota exhaustion, and render failure.
Rank #3
- Retry only errors that may be transient, and stay within the provider’s retry and rate-limit guidance.
- Do not repeatedly resubmit permanent failures such as malformed URLs or invalid credentials.
- Use bounded retries with a delay that increases between attempts; keep retries identifiable so they cannot silently create duplicate work.
- Record a final failure reason and leave the original URL associated with it for later review.
Plan capacity, performance, and cost
Estimate both the number of URLs and the number of actual captures. A batch endpoint reduces the number of client-side submission operations, but rendering still has per-page work and may be charged per screenshot. Check concurrency, requests-per-minute limits, monthly quotas, maximum batch size, upload-body limits, and whether failures consume credits before launching a large job.
Rendering time depends on the provider and the pages being captured; the cited documentation does not establish a general speed benchmark. Pages that load slowly or contain substantial content may take longer, and full-page captures may require additional processing. Avoid assuming that a larger batch will complete as quickly as a small one or that a timeout means no work was performed. Consult the provider’s status and billing fields before retrying.
For a cost estimate, multiply expected successful captures by the provider’s applicable per-capture cost or credit use, then account for retries and any request-level charges. Check how the service bills failed renders and cache hits. ScreenshotNeo states that only clean shots are billed and that bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing; its responses include X-Page-Verdict and X-Billed headers. Its plan prices are Free: 1,000 shots/month with no card; Starter: $5 for 3,000; Growth: $15 for 15,000; Pro: $39 for 60,000; Scale: $99 for 250,000; Business: $249 for 1,000,000. Yearly billing gives two months free. Verify current pricing and plan terms before purchase.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Or skip the browser setup
Instead of maintaining a browser renderer and queue yourself, use ScreenshotNeo’s API. The bulk feature accepts up to 100 URLs per call, and the API can return PNG, JPEG, WebP, or PDF. For a single-URL call, adapt the target URL in this cURL example; see the ScreenshotNeo API documentation for request options and bulk usage.
Rank #4
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo removes cookie and consent banners, newsletter popups, and chat widgets before the shot; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. An 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 a month with no card; paid plans start at $5 for 3,000, and every feature is on every plan. Sign up for 1,000 free screenshots a month with no card.
Troubleshoot common problems
The batch submission is rejected
Check the endpoint, HTTP method, credential placement, request body shape, URL syntax, and documented maximum batch size or upload limit. url2image documents a 2 MB uploaded-list limit and a maximum of 500 URLs per batch; a larger list must be divided according to its current API contract.
The batch stays queued or polling returns errors
Confirm that you saved the correct batch ID and are calling the matching status endpoint. Reduce polling frequency if you are receiving rate-limit responses, and inspect the provider’s documented terminal states. For an event stream, verify that your client is using the provider’s specified SSE protocol rather than treating it as ordinary polling.
Free tools Windows power users keep installed
One-click scans. No signup required.
Some URLs fail while others succeed
Inspect the per-item status and error details. Validate the failed URL, access requirements, and any page-specific settings; retry only failures that are plausibly temporary. Keep the successes and retry subset separate so a transient issue does not cause all successful captures to be repeated.
The output is missing, expired, or does not match an input
Check whether the provider returns individual URLs, an archive, or a temporary artifact reference, and whether it imposes a retention window. Retrieve results promptly and maintain your own mapping from input URL to output. Do not assume filenames or ordering identify the original URL unless the API documents that behavior.
Best Value
Usage is higher than expected
Determine whether the provider counts each URL, each request, failed renders, or retries against its limits. A batch may reduce API orchestration without reducing capture units. Check response billing fields where provided, your plan quota, and whether your client is accidentally resubmitting completed work.
FAQ
Does one bulk API request count as one screenshot?
Not necessarily. Providers may count each URL as a capture or apply other request and quota rules. Check the chosen API’s billing and rate-limit documentation before sending a large list.
Should I use polling or an event stream?
Use the completion mechanism the provider supports. Polling is straightforward for smaller jobs; a documented SSE stream or webhook can reduce repeated status requests for queued work. In either case, persist the job identifier and handle per-item outcomes.
Can I use the same batch code with different screenshot APIs?
No. Batch endpoints, request schemas, authentication, status tracking, output retrieval, and limits vary. Implement against the selected provider’s current contract rather than treating vendor examples as interchangeable.
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.

