To capture a webpage with Screenshot Machine, send an HTTP GET request to https://api.screenshotmachine.com/ with your customer API key in key, the page address in url, and any capture settings you need. The example below saves a 1366 × 768 PNG. It follows Screenshot Machine’s current documentation; it has not been independently tested here. Screenshot Machine’s API documentation is the reference for its parameters and response behavior.
Make your first Screenshot Machine request
Create an account and obtain your customer API key from Screenshot Machine. Keep the key private when making requests from a server. Replace YOUR_CUSTOMER_KEY and the example URL below with your own values. The --data-urlencode options encode query parameters, including the target URL, so characters in the address do not accidentally change the request.
curl -Gs 'https://api.screenshotmachine.com/'
--data-urlencode 'key=YOUR_CUSTOMER_KEY'
--data-urlencode 'url=https://example.com'
--data-urlencode 'dimension=1366x768'
--data-urlencode 'device=desktop'
--data-urlencode 'format=png'
--data-urlencode 'cacheLimit=0'
--data-urlencode 'delay=200'
--data-urlencode 'zoom=100'
> capture.png
The response body is written directly to capture.png. A valid capture is an image; an invalid or incomplete request may also return an error image, so a file being created does not by itself mean the capture succeeded. See the troubleshooting section for how to inspect the response header.
The parameters in this example are explicitly set to avoid relying on defaults. Screenshot Machine documents defaults of 120 × 90 pixels, desktop mode, JPG format, a 14-day cache limit, a 200 ms delay, and 100% zoom. Defaults and supported options can change, so check the live reference before relying on them in production.
#1 Best Overall
Set the viewport, page length, and device
Choose a viewport with dimension
Set dimension as widthxheight, for example 1366x768. The documented width range is 100–1920 pixels. Height can be 100–9999 pixels, or the special value full. A full-page request might use dimension=1024xfull. Full-page captures can produce much taller images than viewport captures, and Screenshot Machine recommends allowing a longer delay for long pages with images or animations.
Choose a device with device
The documented values are desktop, phone, and tablet; desktop is the default. The API documentation pairs desktop with a 1024 × 768 viewport, phone with 480 × 800, and tablet with 800 × 1280. Set both the device and dimensions deliberately: a device profile may affect how a page renders, while the dimensions determine the requested viewport size.
Choose image format and rendering behavior
Image format
format accepts jpg, png, and gif; the documented default is JPG. Select a format appropriate for the use: for example, PNG when you need a lossless raster output, or JPG where a compressed image is sufficient. Confirm the resulting file extension matches the format you requested.
Cache freshness
cacheLimit accepts values from 0 to 14 days, including decimal values for shorter periods. Its documented default is 14 days. Use cacheLimit=0 when you need to request a fresh capture rather than use a cached image. Allowing caching can avoid repeatedly requesting a new rendering when the page has not changed, but may mean the returned screenshot is not current.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Wait time
delay is documented in steps from 0 through 10,000 milliseconds, with a default of 200 ms. A longer delay gives pages more time to render content that appears after initial load, such as images or animations. It also adds waiting time to the request. The documentation does not establish a universal delay that works for every site; tune it to the page and verify the capture when timing matters.
Zoom
zoom accepts values from 10% to 400%, with 100% as the documented default. The documentation says a value of 200 can produce a result twice as large and notes that zoom is ignored below typical device dimensions. Treat zoom as a rendering option, not a substitute for selecting an appropriate viewport.
Rank #2
Interact with the page or capture only part of it
Click or hide elements
Use click with a CSS selector to trigger an element before the screenshot. Use hide with a CSS selector to remove an element from the capture, such as a cookie banner. Encode reserved characters in selector values; for example, a literal # in a query parameter should be percent-encoded as %23. These options depend on the target page’s DOM and selector, so an incorrect selector can prevent the intended interaction.
Capture one element or crop a viewport rectangle
selector requests a capture of a particular DOM element rather than the whole page. This is useful for a component or chart when its selector is stable. Alternatively, crop selects a rectangle in viewport pixel coordinates using x,y,width,height. A crop is tied to the viewport geometry; changing dimensions or page layout can change what falls inside the selected rectangle. The API documents separate invalid_selector and invalid_crop error codes.
Set language, cookies, and user agent
Use accept-language to set the request’s language header, for example when you need the page to render in a particular language. The documentation describes cookies as semicolon-separated name/value pairs; percent-encode the value when sending it. The user-agent parameter changes the user-agent header and can emulate a device profile.
These settings influence the request context, but they do not establish that every site or authentication flow will work. In particular, the documentation warns that an invalid_url response can indicate that authorization is required and does not fully specify supported workflows for capturing login-protected pages.
Protect API credentials in public-facing pages
A customer API key is required. Avoid placing a reusable secret directly in public HTML where visitors can inspect it. For direct requests from public HTML, Screenshot Machine recommends setting a secret phrase and sending a hash calculated as the MD5 hash of the target URL followed by that secret phrase. Its documentation says that after a secret phrase is set, requests with a missing or incorrect hash are ignored.
This is the vendor-documented safeguard for that use case, not a general replacement for careful credential handling. Follow the current vendor instructions for constructing the hash, and do not treat a client-side value as confidential. For server-side integrations, keep the key in server configuration or a secret manager rather than embedding it in a webpage or source repository.
Diagnose error-image responses
Screenshot Machine documents that invalid or incomplete requests may return an error image and include an X-Screenshotmachine-Response header containing an error code. Check the response header rather than assuming that any saved image is a successful webpage capture.
Rank #3
| Response code | Likely issue | What to check |
|---|---|---|
missing_key |
The required API key is absent. | Send the customer key as key. |
missing_url |
The target page address is absent. | Send the full target address as url and URL-encode it. |
invalid_key |
The supplied key is not accepted. | Check for a typo, stale key, or accidental whitespace; use the customer key associated with your account. |
invalid_hash |
The public-request hash is missing or incorrect when a secret phrase is configured. | Recalculate it from the target URL followed by the secret phrase using the vendor’s specified procedure. |
invalid_url |
The target address is invalid or access may require authorization. | Check the URL encoding and whether the page is publicly accessible. Do not assume a login-protected page can be captured. |
no_credits |
The account has no credits available. | Check account credits and current plan information with Screenshot Machine. |
invalid_selector |
The requested selector is not valid for the capture. | Inspect the page’s current DOM and correct the CSS selector used with click, hide, or selector. |
invalid_crop |
The crop instruction is invalid. | Check the coordinate and size values in x,y,width,height against the viewport. |
system_error |
A generic service-side failure. | Retry carefully and inspect the response again; the documentation does not specify a more precise diagnosis for this code. |
Consider timing, reliability, and cost before scaling
Capture settings affect both what you receive and how long a request waits: full-page images can take longer, a longer delay postpones the response, and disabling the cache asks for fresh work rather than a cached result. Start with the smallest viewport, delay, and freshness policy that meet the need, then verify output on representative pages before automating at volume.
The official material reviewed does not provide a named, dated benchmark for usage, latency, capture success, or reliability. It also does not establish current quotas, paid-plan prices, or feature limits. Screenshot Machine’s homepage advertises a free API and says no credit card is required, but check its live account and plan information for current terms rather than assuming a quota or cost.
Or skip the browser setup
If you want a hosted screenshot API without assembling and maintaining browser-rendering code, ScreenshotNeo offers a one-request capture endpoint and an MCP server for AI agents. Its documented behavior includes removing cookie/consent banners, newsletter popups, and chat widgets before capture; those cleanup steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. The MCP tools include take_screenshot, get_page_info, and capture_pdf. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. See the ScreenshotNeo API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Sign up for ScreenshotNeo’s free plan: 1,000 screenshots a month with no card.
Frequently Asked Questions
Can I capture a page in a specific language with Screenshot Machine?
Yes. Its documentation provides the accept-language parameter for setting the request’s language header.
Does a saved response file guarantee a successful capture?
No. The API can return an error image for an invalid or incomplete request; inspect X-Screenshotmachine-Response to identify documented errors.
Can Screenshot Machine capture every page behind a login?
That is not established by the reviewed documentation. It notes that invalid_url may indicate authorization is required, without fully specifying authenticated capture support.
Free tools Windows power users keep installed
One-click scans. No signup required.
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.

