The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →To bulk screenshot URLs and export results as JSON, submit the URL list to a screenshot API’s batch endpoint, collect the response or poll the job until it finishes, then save a per-URL result record to a JSON file. Keep each input URL, its status, the screenshot location, and any error message so failed captures are visible rather than silently omitted. If you prefer a local workflow, shot-scraper can capture multiple URLs from a YAML file, but its documented multi-URL command writes image files—not a consolidated JSON export.
Choose the workflow that matches your list
For hosted capture, a batch endpoint is generally the most direct route: send a JSON array of URLs and shared options, then use the provider’s response format to build your export. Some APIs return a batch ID that you track; others return screenshot URLs or per-request status information. A JSON export may be something you create from the response yourself, rather than a built-in download.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
13 HIDDEN Tools That Will Help Your Business Make Six Zeros: Screen shots, Video snippets and URLs... | $3.99 | Buy on Amazon |
As an Amazon Associate I earn from qualifying purchases.
| Approach | Input and execution | Result handling | Main trade-off |
|---|---|---|---|
| ScreenshotNeo | One GET request per capture; bulk capture supports up to 100 URLs per call. | Capture responses identify page verdict and billing status; use the API and usage documentation to build the JSON workflow you need. | Includes clean-shot processing and an MCP server; confirm the response fields and any needed storage behavior for your implementation. |
| Screenshot API | POST a URL array to its documented batch endpoint. | Documentation describes a batch ID and status retrieval, with polling or server-sent-event progress. | Useful for longer-running jobs; account for quotas and API errors. Its documentation lists 60 requests per minute and 500 screenshots per month on the free plan; verify current limits before a large run. |
| ScreenshotOne | POST /bulk with shared options and a requests array. |
Returns screenshot URLs; optional execution provides a success/status summary per request. | Bulk work shares the same one-minute request bucket as regular requests; its usage endpoint reports remaining concurrency and reset information. |
| ScreenshotAPI.net | Submit JSON or upload a CSV to its bulk workflow. | Documents output columns for URL, status, screenshot, and error message. | Its documentation states a maximum of 50 URLs in one request. |
shot-scraper |
Define URL/output pairs in YAML and run shot-scraper multi. |
Writes screenshot files. | Local execution avoids a hosted API dependency, but JSON indexing/export needs additional code. |
The provider-specific limits and response formats above are documented on the respective official pages, which do not state publication dates for those figures. Recheck them before relying on them for a production run. ScreenshotOne describes its endpoint as “a simple wrapper endpoint around the regular screenshot API endpoints like (/take, /animate, and similar).”
Free tools Windows power users keep installed
One-click scans. No signup required.
Build a reliable JSON export
1. Normalize and validate the input
Read the URL list from a file or application data, validate that each entry is a usable URL, and retain the original input as the record identifier. Do not discard malformed entries: include them as explicit failures in the final array so the output accounts for every requested URL.
#1 Best Overall
2. Submit a batch and track completion
Use the provider’s documented request format, shared capture options, and batch size limit. If the response includes a batch ID, persist it before waiting; then poll the documented status endpoint or subscribe to documented progress events. Avoid assuming that submitting a batch means every screenshot is already complete.
3. Preserve a stable per-URL record
Map each result into a consistent structure even if the provider’s native response varies. A practical schema is:
[{"url":"https://example.com/","status":"success","screenshot":"screenshots/example.png","error":null,"captured_at":"2026-10-03T12:00:00Z","settings":{"full_page":true}}]
The timestamp and settings shown are example fields, not a provider-mandated schema. For failures, preserve the input URL, a meaningful status, and the error text. For success, store a screenshot URL or durable file reference; avoid relying on a temporary link if the result must remain available.
4. Write valid JSON and retain provenance
Save the array as UTF-8 JSON alongside the screenshots or their durable storage references. Record capture time and settings when results will be compared or audited later. Ensure strings are JSON-escaped and that one failed capture does not prevent the rest of the results from being written.
Local option: capture multiple URLs with shot-scraper
shot-scraper uses a YAML configuration containing URL and output-file pairs, then runs those captures locally. Its documented multi-URL feature produces image files, so add a separate indexing step if your deliverable must be JSON; do not treat the CLI command as a built-in JSON exporter.
The documentation identifies release 1.11-3-g760c114; that is a documentation release identifier, not a speed or performance claim. See shot-scraper multi-URL documentation for the YAML format and command syntax.
Or skip the browser setup
ScreenshotNeo is a screenshot API with bulk capture for up to 100 URLs per call. Its capture endpoint accepts a URL and can return a screenshot or PDF. For a one-URL request, use this runnable cURL example and adapt the target URL; for bulk capture and response details, follow the ScreenshotNeo API documentation.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →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/consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each of those steps can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and responses identify page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents and MCP clients. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000, with every feature on every plan. For a list workflow, use the bulk endpoint and confirm the response fields you want to serialize.
Sign up for 1,000 free screenshots a month, with no card.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Limits, cost, and operational considerations
- Batch size: Confirm the provider’s current maximum URLs per request; documented limits differ, including 50 for ScreenshotAPI.net and up to 100 URLs per call for ScreenshotNeo.
- Rate and quota limits: A batch endpoint may still consume the same request bucket as individual captures. Check remaining quota, concurrency, and reset behavior before submitting a large list.
- Asynchronous jobs: For jobs that take time, save the batch ID and resume tracking after interruptions rather than resubmitting blindly, which could duplicate captures.
- Storage and link lifetime: A screenshot URL is not necessarily permanent storage. Download or copy the output to storage you control when long-term access matters.
- Partial completion: Treat each URL as an independent outcome in the export. A single invalid URL, render error, or authorization issue should not erase successful records.
- Comparability: When comparing results across runs, preserve relevant capture settings such as viewport, full-page mode, and capture time.
Troubleshooting common failures
- Invalid URL: Validate scheme and syntax before submission; retain the rejected input and record the validation error in the JSON output.
- Authorization failure: Check that the API key is present, active, and sent in the documented location. Do not place credentials in a public repository or exported result file.
- Rate limit or quota exhausted: Inspect the provider’s quota and reset information, reduce submission rate or batch size, and retry only when allowed. Preserve failed statuses rather than endlessly retrying.
- Batch accepted but no images yet: If the endpoint returns a batch ID, use its status mechanism; acceptance is not proof of completion.
- Some URLs absent from output: Join results back to the submitted inputs by identifier, then create explicit error records for missing or failed captures.
- Screenshot links stop working: Treat provider URLs as references whose persistence must be confirmed; download successful captures or move them to durable storage if required.
- Local command creates images but no JSON: This matches the documented
shot-scraper multioutput. Add a separate script to index filenames, input URLs, statuses, and errors into JSON.
Frequently Asked Questions
Does shot-scraper export a combined JSON file by itself?
Its documented multi-URL command writes screenshot files. A consolidated JSON index requires an additional step.
Should a JSON export contain screenshot image data?
Usually it is more practical to store a screenshot URL or durable file path with each record rather than embedding image bytes. The appropriate reference depends on where you store the captures and how long they must remain accessible.
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.

