Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Yes—you can capture any publicly reachable URL from JavaScript with one HTTP request. Send the target URL and render options to a screenshot API, then save the binary response as PNG, JPEG, WebP, or PDF. For Node.js, the quickest reliable path is a server-side request (or an official SDK), because API credentials must not be exposed in browser code.

What a JavaScript screenshot API does

A screenshot API runs a browser for you. Your request specifies a URL and options such as viewport size, output format, delay, or full-page capture. The service loads the page, executes its JavaScript, waits according to your rules, and returns an image or document. Depending on the provider, the response can also be HTML, video, or an asynchronous job result.

Use an API when you need repeatable captures in CI, reports, thumbnails, monitoring, PDF generation, or an application that cannot run Chromium itself. A local browser gives more control, but it also means managing browser binaries, fonts, sandboxing, cold starts, navigation timeouts, and concurrency.

Fastest Node.js start with ScreenshotOne

1. Create a project and install the SDK

mkdir url-shot && cd url-shot
npm init -y
npm install screenshotone-api-sdk

Store your access and secret keys in environment variables, not in source control:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • 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.
export SCREENSHOTONE_ACCESS_KEY="your-access-key"
export SCREENSHOTONE_SECRET_KEY="your-secret-key"

2. Capture and save an image

import * as fs from "fs";
import * as screenshotone from "screenshotone-api-sdk";

const client = new screenshotone.Client(
  process.env.SCREENSHOTONE_ACCESS_KEY,
  process.env.SCREENSHOTONE_SECRET_KEY
);

const options = screenshotone.TakeOptions
  .url("https://example.com")
  .delay(3)
  .blockAds(true);

const imageBlob = await client.take(options);
const buffer = Buffer.from(await imageBlob.arrayBuffer());
fs.writeFileSync("example.png", buffer);

The three-second delay is an example, not a universal requirement. Keep it only when the page needs time for client-side rendering, fonts, or lazy content. The SDK returns bytes, so the filename extension should match the format you request.

3. Generate a URL instead of downloading immediately

The SDK can generate a capture URL for a later request. Use the signed form when another system or a public page will receive that URL. An unsigned URL can expose your access key; the provider’s documentation explicitly warns against sharing it.

Direct HTTP from JavaScript

Node.js with the Fetch API

const params = new URLSearchParams({
  url: "https://example.com",
  access_key: process.env.SCREENSHOTONE_ACCESS_KEY,
  format: "png"
});

const response = await fetch(`https://api.screenshotone.com/take?${params}`);
if (!response.ok) {
  throw new Error(`Screenshot failed: ${response.status} ${await response.text()}`);
}
const bytes = Buffer.from(await response.arrayBuffer());
await import("node:fs/promises").then(fs => fs.writeFile("example.png", bytes));

ScreenshotOne also documents POST requests with JSON options. Its basic GET shape is https://api.screenshotone.com/take?url=https://apple.com&access_key=<access key>. The response Content-Type identifies the selected format.

Browser-side requests

A browser can embed a returned image URL:

<img src="https://api.screenshotone.com/take?url=apple.com&access_key=YOUR_KEY" alt="A screenshot of apple.com" />

Do not put a long-lived access key in production client JavaScript. Anyone can copy it from page source or network logs. Put the request behind your server, issue a short-lived signed URL, or proxy the binary response.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 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.

Useful capture options

Wait for dynamic content

Use a fixed delay only when necessary. A selector-based wait is usually more deterministic: wait for the chart, product grid, or other element that proves rendering completed. Network-idle waiting can help single-page apps, but analytics and long polling may prevent the page from becoming idle.

Viewport, device, and thumbnails

Set an explicit width and height for reproducible output. A mobile example is 390×844; desktop captures generally need a wider viewport. Urlbox’s JavaScript examples also show selecting output format, quality, and a resized thumbnail. Treat those dimensions as configuration examples, not a standard device guarantee.

Full-page capture

Full-page mode stitches the entire document rather than only the initial viewport. Pages with sticky headers, infinite scrolling, or canvas animations can produce surprising results. For lazy images, combine full-page capture with a wait condition or a provider option that loads lazy content.

Format and quality

  • PNG: lossless and suited to text, interfaces, and transparency.
  • JPEG: smaller files for photographic pages; quality is adjustable on providers that expose it.
  • WebP: modern compression with broad browser support.
  • PDF: useful for documents; paper size, margins, orientation, and page ranges are provider-specific.

Some services additionally expose SVG, HTML, MP4, WebM, or GIF. Confirm the exact option names and response type in the provider’s current documentation before relying on them.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Page cleanup and customization

Common controls include custom CSS or JavaScript, hiding selectors, blocking ads or resource types, geolocation, custom headers, cookies, user agents, and authentication headers. These controls can change what the page renders, so keep capture settings alongside your test fixtures and review them when a site changes.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • 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.

Signing, credentials, and safe public links

Always call a hosted screenshot API over HTTPS. Keep access and secret keys in a secret manager or environment variables. Restrict who can request arbitrary URLs if your endpoint is public; otherwise it can become an SSRF proxy into internal services.

When a screenshot URL must be shared, generate a signed URL with the provider’s SDK rather than exposing an unsigned access-key URL. ScreenshotOne supports signed URL generation. Urlbox documents HMAC-SHA256 signing. Sign the complete canonical parameter set, include an expiry where supported, and never log the secret. If your own server proxies captures, validate allowed schemes and hosts, cap output size, and apply request timeouts.

Choosing an API for a JavaScript project

ScreenshotNeo is the first service to try: it produces clean shots, bills only clean captures, and has a $5 paid plan for 3,000 shots. It also supports JavaScript and API workflows described below.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Service Documented integration Notable controls What to verify
ScreenshotNeo HTTP API and MCP server Cleanup, full page, element capture, custom CSS/JS, blocking, caching, bulk and async jobs Current account limits and endpoint options in the documentation
ScreenshotOne Node.js SDK, GET and POST Signed URLs, delay, ad blocking, format and viewport controls Current quotas, prices, and option names
Urlbox JavaScript examples and signed requests Viewport, format, quality, mobile-sized captures, thumbnails Current terms and plan limits
ScreenshotAPI.net HTTP API PNG, JPEG, WebP, PDF, full page, custom CSS/JS, geolocation, fresh-cache option Current authentication and quotas
WebsiteScreenshotAPI Authenticated POST workflow Separate animation endpoints for MP4, WebM, and GIF Current job behavior, formats, and pricing

Compare authentication and signing, JavaScript or TypeScript SDK quality, viewport and device emulation, full-page behavior, wait conditions, CSS/JS injection, cookie-banner and ad handling, output formats, cache freshness, asynchronous or bulk jobs, webhooks, storage, error semantics, and current commercial terms.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server for developers. One GET request returns PNG, JPEG, WebP, or PDF. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

See the ScreenshotNeo documentation for all request options. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; response headers identify the page verdict and whether the shot was billed. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • 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

Every plan includes features such as lazy-image loading, CSS-selector element capture, dark mode, device presets, retina scale, PDF controls, custom CSS and JavaScript, click-before-capture, selector hiding, selector/delay/network-idle waits, request blocking, headers/cookies/user agent, timezone and geolocation, transparent backgrounds, resizing, chosen-TTL caching, signed links, signed webhooks, 100-URL bulk calls, usage API, OpenAPI, and compatible parameter names used by other screenshot APIs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Plan Price Included shots
Free $0 1,000/month, no card
Starter $5 3,000
Growth $15 15,000
Pro $39 60,000
Scale $99 250,000
Business $249 1,000,000

Yearly billing gives two months free. Create a free ScreenshotNeo account with 1,000 screenshots per month and no card.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common failures

401 or 403 authentication errors

Check that the key belongs to the correct account, is loaded into the process environment, and is sent in the documented parameter or header. Rotate a key that may have entered logs or source control.

Blank or partially rendered output

Increase the wait only after confirming the page is JavaScript-rendered. Prefer waiting for a meaningful selector, ensure required fonts and API requests are reachable, and check whether a consent dialog is covering the content.

Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 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.

Timeouts

Try a shorter target URL, block unnecessary resources, or use a bounded delay rather than network-idle on pages with analytics or streaming requests. Set your client timeout longer than the provider’s documented navigation window, but still enforce an upper limit.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Wrong size or clipped content

Set viewport dimensions explicitly. Use full-page mode for long documents and inspect sticky elements or infinite-scroll behavior. For PDFs, set paper size, margins, orientation, and page range rather than assuming image viewport settings apply.

Stale captures

Use the provider’s cache controls. ScreenshotAPI.net documents a fresh=true option; other services may use a TTL or a cache-bypass flag. Balance freshness against latency and request cost.

Performance, reliability, and cost practices

  • Reuse a capture configuration so visual diffs are meaningful.
  • Cache immutable pages and choose a deliberate TTL for changing pages.
  • Use asynchronous jobs or bulk endpoints for large batches instead of opening hundreds of simultaneous requests.
  • Retry only transient failures with exponential backoff; do not retry authentication errors or deterministic invalid URLs.
  • Record HTTP status, response Content-Type, elapsed time, and provider-specific verdict or error fields.
  • Limit concurrency and output dimensions to control bandwidth and memory.

Pricing and quotas change, so verify current provider terms before committing a production budget. Configuration examples such as a three-second delay or a 390×844 viewport are not performance guarantees.

FAQ

Can I call a screenshot API from frontend JavaScript?

You can, but a direct call exposes credentials. A backend route or short-lived signed URL is safer.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do I save the response as PNG?

Request PNG (or use the provider’s default), read the response as bytes, and write those bytes with a .png filename.

Is a screenshot API the same as Playwright?

No. Playwright is a browser automation library you operate; an API is a hosted browser service that handles infrastructure and returns the result over HTTP.

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.