Free tools Windows power users keep installed
One-click scans. No signup required.
Use Node.js fetch to send a request to the screenshot provider’s documented endpoint, then handle the response in the format that provider returns. Keep the API key on your server, check for HTTP errors before parsing a response, and do not assume another provider uses the same request fields or returns the same kind of result.
Make a screenshot request from Node.js
For a JSON-based screenshot API, the basic flow is: send the target URL and capture settings, check the response status, and parse the documented response body. This example follows Screenshot API’s published contract: a POST to its screenshot endpoint with Bearer authentication, followed by JSON containing a screenshot URL. It is illustrative and has not been independently tested; check the provider’s current documentation before using it.
- Keep your key server-side. Set an environment variable named
SCREENSHOT_API_KEYin your server environment or secret manager. Do not put it in browser code or commit it to source control. - Save this as an ES module such as
screenshot.mjs, then run it with Node.js that supports the built-infetchAPI. - Replace the example URL with the page you need to capture and run
node screenshot.mjs.
const apiKey = process.env.SCREENSHOT_API_KEY;
if (!apiKey) throw new Error('Set SCREENSHOT_API_KEY before running this script.');
const response = await fetch('https://api.screenshot-api.org/api/v1/screenshot', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com',
viewport: { width: 1280, height: 720 },
format: 'png',
fullPage: true,
}),
});
if (!response.ok) {
const detail = await response.text();
throw new Error(`Screenshot request failed (${response.status}): ${detail}`);
}
const result = await response.json();
if (!result.screenshotUrl) {
throw new Error('The response did not contain the documented screenshotUrl field.');
}
console.log(result.screenshotUrl);
The endpoint, authentication header, field names, and screenshotUrl response property above are specific to Screenshot API’s documentation, not a universal screenshot API format. That documentation also describes X-API-Key authentication and GET/POST routes; use the method and credential scheme supported by your account and selected route. See the Screenshot API documentation for its request contract.
Parse the response your provider actually returns
A successful HTTP status does not guarantee every API returns JSON or a durable image URL. Check the selected service’s reference for the success body, content type, errors, and output retention.
Outdated 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 matchPC 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 & 11#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
- JSON with a URL: Parse with
response.json(), then use the documented property. If the URL is temporary, copy the file to storage you control before it expires; check the provider’s retention terms. - Image bytes: Do not parse the response as JSON. Use
response.arrayBuffer()and write or upload the bytes. For example, in a Node.js script using the built-in file system module, callawait writeFile('shot.png', Buffer.from(await response.arrayBuffer()))after checkingresponse.ok. - SDK output: Follow the installed SDK version’s documented runtime requirements and return type. Screenshot Scout, for example, documents an SDK and a JSON mode whose screenshot URL is at
response.result.screenshotUrl; its default capture flow can return image bytes.
These are distinct contracts. A URL in a JSON object, raw image bytes, and an SDK result object are not interchangeable, even when each represents a successful capture.
Choose capture settings that match the page
Start with the smallest set of options that produces the result your application needs. The following controls appear in the reviewed providers’ documentation, but support, names, constraints, and availability vary by service and may depend on using POST rather than GET.
- Viewport and format: Set the viewport dimensions and choose a documented image format such as PNG, JPEG, or WebP. Check whether the service accepts dimensions as an object or separate fields.
- Full page or a specific region: Full-page mode may capture beyond the initial viewport. Selector-based capture can target one element when supported.
- Wait behavior: A network-idle condition, a selector wait, or a fixed delay can allow dynamic content to appear. A delay adds time to each capture; a selector wait can fail if the page’s markup changes. Use the provider’s exact option names and timeout behavior.
- Rendering details: Depending on the service, options may include device scale factor, dark mode, custom CSS or JavaScript, and extra delay. Do not send unsupported fields and assume they will be honored.
Keep credentials and target URLs within safe boundaries
Protect the API key
Make the screenshot request from your backend rather than exposing the provider key to a browser. Treat generated capture URLs as sensitive if they include credentials: Screenshot Scout warns that “The generated URL contains the access key.” Avoid logging such URLs or returning them to clients unless you have checked the provider’s signing and access controls.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Check whether the renderer can reach the target
A cloud screenshot service fetches the page from its own environment; it does not automatically inherit your local browser session, cookies, or network access. A page available only on a developer’s machine or behind a logged-in local session may not be reachable. screenshot-api.net specifically cautions that its remote service is unsuitable for pages available only through a local browser session. screenshotapis.org documents blocking private and reserved IP destinations as an SSRF safeguard. Confirm the selected provider’s network and authentication capabilities before designing around private, staging, or session-protected pages.
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 →Handle failures, limits, and cost deliberately
Check response.ok before interpreting a response as an image or success object. When a request fails, capture the status and provider error detail safely; do not assume all services use identical status codes, error schemas, retry rules, or quotas.
- Invalid credentials or request: Verify the key, authentication header, endpoint, required fields, and accepted field names against the service reference.
- Rate limit or quota: Some providers return HTTP 429 and rate-limit headers. Screenshot API documents 429 rate-limit or quota errors and response headers; screenshotapis.org says its rate window is per API key and lists a
Retry-Afterheader. Follow the selected provider’s instructions and avoid tight retry loops. - Render failure or timeout: Check whether the target is publicly reachable, whether the page needs more time, and whether the provider returns a distinct render error. Do not retry indefinitely; apply a bounded retry policy suited to the provider’s guidance.
- Unexpected response body: Check the response content type and provider documentation. A JSON parser will fail on raw PNG bytes, while treating a JSON URL response as an image file will save the wrong content.
- Usage and retention: Published plan limits, unit costs, reset rules, and output retention differ and change. Check current pricing and retention terms for your chosen provider; if the result must persist, copy it into storage you control.
For context, Screenshot API’s documentation accessed in 2026 lists 60 requests per minute and 500 screenshots per month on its free plan; ScreenshotAPI’s getting-started documentation accessed in 2026 describes 100 free screenshots per month and unit costs of 1 for PNG/JPG/WebP, 2 for PDF, 1 per second for MP4/WebM with a two-second minimum, and 2 per second for GIF with a three-second minimum. screenshotapis.org’s API reference accessed in 2026 lists a free tier of 10 requests per minute and 100 monthly credits, with listed tiers up to 300 requests per minute and 75,000 monthly credits. These are vendor-published figures, not independent measurements; verify current terms before budgeting.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Troubleshoot common Node.js integration problems
“Set SCREENSHOT_API_KEY” or authentication errors
If the script reports a missing key, set the environment variable in the same process environment that runs Node.js. If the provider returns an authentication error, confirm whether it expects Bearer authentication, an API-key header, or a query parameter; a valid key sent using the wrong scheme still fails.
HTTP 400 or validation errors
Check the URL and required request fields, then compare option spelling and value types with the provider’s current reference. For instance, field names such as fullPage and full_page are not necessarily aliases.
HTTP 429
Stop sending immediate repeated requests. Read any rate-limit or retry headers, reduce concurrency, and wait according to the provider’s rules. Quota exhaustion may need a plan or usage change rather than a retry.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
JSON parsing fails
Inspect the status and content type before parsing. The service may return image bytes, an error body, or a different JSON shape. Use arrayBuffer() for documented binary output and update property access only after confirming the actual response schema.
The screenshot misses content or times out
Use a supported selector wait, network-idle setting, or delay when the page populates after initial load. Verify that the selector exists on the rendered page. Longer waits may increase latency, while brittle selectors can fail when the site changes.
The remote renderer cannot open the URL
Test whether the page is publicly reachable from outside your network. Localhost, private IPs, firewall-restricted staging sites, and pages dependent on a local login session may be inaccessible or deliberately blocked by the service.
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 glitchesBest Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server for developers. Its one-call Node.js example uses the API’s GET endpoint; the full ScreenshotNeo API documentation describes available options.
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 accepts cookie and consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, with verdict and billing information in response headers. Its MCP server offers take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Sign up for ScreenshotNeo’s free plan.
FAQ
Can I call a screenshot API directly from browser JavaScript?
Keep the API key on a server. A browser-side request can expose credentials to users; have your backend make the provider call and return only the result your app needs.
Can a screenshot API capture a page that requires my login?
Only if the provider supports a suitable authentication method and can reach the page. A cloud renderer does not automatically share your local browser’s cookies or network access.
Should I use GET or POST?
Use the method documented for your provider and option set. Some services support both, while advanced settings may require POST.
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.

