ScreenshotNeo

BlogComparisons

ScreenshotMachine CLI vs Urlbox for Scheduled Website Screenshots

Compare Screenshot Machine’s API and Urlbox’s CLI and scheduling workflow, then build a recurring screenshot job with clear retention and cost controls.

By the ScreenshotNeo team4 October 202612 min read

Direct answer: Urlbox has the documented command-line client and a separate documented recurring schedule workflow through Zapier. Screenshot Machine documents an HTTP screenshot API, but the reviewed official documentation does not establish a vendor-provided CLI or native scheduler. You can schedule Screenshot Machine requests with cron, CI, or another automation service, but you own that integration.

For a command-line render request, start with Urlbox. For a scheduled workflow using Screenshot Machine, call its API from your scheduler. For either service, decide whether each run must produce a fresh capture and where the resulting files will be retained. This is a documentation-based comparison, not a head-to-head render or reliability test.

What “CLI” and “scheduled screenshots” mean here

A CLI sends a render request from a terminal or script. A scheduler decides when to run that command or request. These are separate capabilities: having a CLI does not automatically mean a vendor provides a recurring schedule.

  • Urlbox CLI: its official CLI renders through the Urlbox API and documents headless/CI authentication using URLBOX_API_SECRET. The command-line client is not itself the recurring schedule.
  • Urlbox scheduling guide: its documented recurring workflow uses Zapier’s Schedule trigger and a Urlbox screenshot action. The guide describes hourly, daily, weekly, monthly, yearly, or specific-time/date schedules, with storage steps such as Google Drive, Dropbox, or Amazon S3.
  • Screenshot Machine: its official API accepts HTTP GET requests with screenshot parameters and code examples. The reviewed documentation does not establish a vendor CLI or built-in scheduler, so cron or another automation system must trigger requests.

See the Urlbox CLI guide, Urlbox scheduling guide, and Screenshot Machine API documentation.

At a glance: ScreenshotNeo first, then the two named options

Option Documented path Scheduling ownership Retention consideration
ScreenshotNeo One GET request returns a clean PNG, JPEG, WebP, or PDF; API and MCP server are available. Call its API from your scheduler, or use an MCP client for agent-driven captures. Choose your archive destination and schedule; caching has a TTL you choose.
Urlbox Official CLI calls its API; asynchronous and synchronous API workflows are documented. Documented recurring schedule uses Zapier’s Schedule trigger. Render links expire after 30 days unless downloaded or saved to cloud storage.
Screenshot Machine Official HTTP GET API with URL, dimensions, device, format, cache, delay, and interaction options. Your cron job, CI workflow, or other automation invokes the API. Default cache behavior and whether a run is fresh affect repeated capture semantics.

ScreenshotNeo belongs first for developers who want clean captures and predictable billing: it removes known consent banners, newsletter popups, and chat widgets before capture, and bills only clean shots. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed. It also provides an MCP server for AI agents and has a free tier of 1,000 shots per month.

Which one should you choose?

Your requirement Best-supported path in the reviewed docs What you still need to decide
Run screenshot requests from a vendor-provided terminal tool Urlbox How the CLI will be triggered on a schedule, and where output will be archived.
Use a documented no-code recurring schedule Urlbox with Zapier Zapier account/workflow setup, storage destination, and failure notifications.
Own the schedule and call a simple HTTP endpoint Screenshot Machine is a plausible fit Implement cadence, retries, alerting, output naming, and storage yourself.
Capture clean pages with explicit billing outcomes ScreenshotNeo Choose your scheduler or MCP client and archive destination.
Keep a durable visual history Either, with an explicit storage step Do not treat a cached result URL or temporary render URL as a permanent archive.

Do not infer render quality, success rates, or uptime from the presence of a CLI or scheduler. The reviewed sources do not establish an equivalent workload comparison. Trial representative pages and compare the outputs and metered usage you actually need.

How to schedule Screenshot Machine captures with cron

The API request is the screenshot operation; cron supplies the cadence. The following shell script uses the documented GET endpoint pattern and parameters from Screenshot Machine’s API documentation. Replace the API key placeholder, choose the parameters you need, and confirm the current parameter names and account limits in the vendor documentation.

#!/usr/bin/env bash
set -euo pipefail

: "${SCREENSHOTMACHINE_KEY:?Set SCREENSHOTMACHINE_KEY in the environment}"
TARGET_URL="https://example.com"
OUT_DIR="./captures"
mkdir -p "$OUT_DIR"
STAMP="$(date -u +%Y%m%dT%H%M%SZ)"

curl --fail --silent --show-error --get \
  "https://api.screenshotmachine.com" \
  --data-urlencode "key=${SCREENSHOTMACHINE_KEY}" \
  --data-urlencode "url=${TARGET_URL}" \
  --data-urlencode "dimension=1024x768" \
  --data-urlencode "format=png" \
  --data-urlencode "cacheLimit=0" \
  --output "${OUT_DIR}/example-${STAMP}.png"

The endpoint and parameter values above follow Screenshot Machine’s documented API shape; check its current documentation for the exact supported parameter set and account authentication details before deployment. cacheLimit=0 requests a fresh result according to the API docs. If your schedule should reuse a still-valid cached capture, choose a documented cache age instead. A cache hit may be billed differently from a fresh capture; use the vendor’s live billing terms.

Save the script as /opt/jobs/capture-example.sh, make it executable, and add a UTC daily cron entry such as:

chmod 700 /opt/jobs/capture-example.sh
crontab -e
15 7 * * * SCREENSHOTMACHINE_KEY='YOUR_API_KEY' /opt/jobs/capture-example.sh >> /var/log/capture-example.log 2>&1

This example runs daily at 07:15 in the cron host’s configured timezone. For production, inject the key through your job runner’s secret store rather than putting it directly in the crontab. Ensure only the job owner can read logs and output files, and avoid logging full signed URLs or secrets.

Make the scheduled job reliable

  1. Use unique filenames. Timestamp names preserve history. If you want one latest image, write to a temporary path and atomically rename it after a successful response.
  2. Set a timeout. Configure a client timeout appropriate to page load and capture delays. A timed-out request should fail visibly instead of hanging the scheduler.
  3. Retry transient failures carefully. Retry connection errors and server-side failures with bounded backoff. Do not retry authentication or malformed-parameter errors unchanged.
  4. Check the response. A successful HTTP exchange does not guarantee the image is the expected page. Validate status, content type, and optionally image dimensions or file size before archiving.
  5. Alert on repeated failures. Emit a job status or send the scheduler’s built-in failure notification; otherwise a broken daily job may go unnoticed.
  6. Keep retention bounded. Compress or move old captures to object storage and define deletion rules. A daily job creates about 30 files per month per URL.

How to use the Urlbox CLI and schedule it

Urlbox documents a CLI for terminal renders and a separate Zapier scheduling walkthrough. Install and invoke the current CLI according to the official CLI guide; the exact command syntax can evolve, so copy the current command from that guide rather than relying on stale flags. In headless CI, the guide documents authentication with URLBOX_API_SECRET.

# Set the secret in the shell or CI secret store, not in source control.
export URLBOX_API_SECRET="YOUR_URLBOX_API_SECRET"

# Install and render using the current official CLI instructions:
# https://urlbox.com/docs/cli

The CLI’s official guide describes output files and asynchronous renders. For a recurring no-code job, follow the vendor’s Zapier scheduling guide: select the Schedule trigger cadence, configure the Urlbox screenshot action, then add a storage action if you need an archive. The guide includes Google Drive and describes Dropbox and Amazon S3 as other connected storage destinations.

For a custom scheduler, invoke the documented CLI command from cron or CI and direct output to a uniquely named file. Use the asynchronous API workflow for jobs that should be queued rather than held open as one synchronous request; follow the Urlbox API quickstart for request and render-link handling.

Retention: the screenshot is not the archive

A recurring capture workflow has at least three separate lifetimes: when the job runs, how long a provider caches or exposes a render, and how long your own archive retains the file.

  • Urlbox: its API quickstart says a returned render URL expires after 30 days unless the image is downloaded or saved to cloud storage. A render URL is therefore not a long-term archive by itself.
  • Screenshot Machine: its pricing page states that cached screenshots are held for 14 days by default. Repeated cached requests and a fresh capture are different operations, so set cache behavior deliberately.
  • Local/object storage: store a durable copy if you need a visual history, audit trail, or comparison after the provider cache expires. Include the target URL, UTC capture time, parameters, and job version in metadata.

For change monitoring, retain the previous image or a checksum alongside the new capture. A checksum can identify byte changes, but image encodings may differ even when the visible page is effectively unchanged. For pixel-level comparisons, normalize viewport, device scale, format, and dynamic page state.

Options that matter for recurring captures

Fresh capture versus cache

A scheduled job can ask for a fresh render every run or accept a cached result within a configured age. Fresh capture is appropriate when the purpose is to observe current page state. Cache reuse can reduce repeated work when the page does not need to be re-rendered each interval. Confirm how each provider bills cache hits, and do not assume a scheduled request always means a new browser render.

Viewport, device, and format

Keep dimensions, device preset, zoom or scale, and output format consistent across runs. Otherwise apparent changes may come from the capture configuration rather than the site. Screenshot Machine’s API documentation lists dimensions, device, format, zoom, and delay among its options.

Page readiness and late-loading content

Pages may show a different state depending on when capture occurs. Screenshot Machine notes that longer pages with late-loading images or animations may benefit from a longer delay. A fixed delay is simple but can waste time; a selector or network-idle condition, when supported by the selected service, can better align with page readiness. For animated, personalized, or live data pages, capture time itself may cause expected visual differences.

Authentication and private pages

Do not place passwords, cookies, API secrets, or authorization values in command histories or committed workflow files. Use a CI secret store or restricted environment variables, and avoid capturing private pages to a public bucket. Review the screenshot provider’s supported authentication and request options before targeting login-protected pages.

Pricing and cost planning

Listed prices below are a snapshot checked on 2026-10-03 and may change. Recheck vendor pages before purchasing. Headline price divided by monthly quota is not enough to estimate the cost of a schedule.

Service Listed plans in the research snapshot Billing details to include
Screenshot Machine Starter: free, 100 fresh screenshots/month; Basic: €9/month for 2,500; Pro: €59/month for 20,000; Enterprise: €99/month for 50,000. Extra screenshots are counted in thousand-sized groups rounded down; VAT may apply to EU non-business customers. Cached images are stated to be held 14 days by default without billing repeated cached loads.
Urlbox Lo-Fi: $19/month for 2,000 renders; Hi-Fi: $49/month for 5,000; Ultra: $99/month for 15,000; Business: $498/month plus usage pricing; Enterprise from $3,000/month. Plan features and request limits differ. Failed requests are stated as not charged; some options consume more than one render based on duration, file size, or features. Prices exclude VAT; render-link cache is stated as 30 days.
ScreenshotNeo 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; every feature is available on every plan. Only clean shots are billed, and cache hits and failed/blank/bot-check captures cost nothing.

Sources: Screenshot Machine pricing, Urlbox pricing, and ScreenshotNeo. The vendor pages are not independent comparative billing audits.

Estimate monthly volume as URLs × runs per day × days in month. For example, 20 URLs captured once daily produce about 600 scheduled requests in a 30-day month. Then adjust for cache policy, failed requests, render settings, any feature-based usage multipliers, and archive storage. Include the scheduler or automation account if the workflow depends on one.

Or skip the browser setup

ScreenshotNeo’s GET API returns a screenshot or PDF without requiring you to install or manage a browser in the scheduled job. See the API documentation for the full parameter set.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
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)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Cookie banners, popups, and chat widgets are removed before the shot. Bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.

Troubleshooting scheduled screenshot jobs

Symptom Likely cause Fix
CLI works locally but fails in CI Missing secret, different PATH, or non-interactive environment. Set the documented secret in CI, install the CLI in the job, and use its headless authentication instructions.
Urlbox schedule fires but no history appears Workflow captured a temporary render URL without adding a storage step. Add a Drive, Dropbox, S3, or other archive action and confirm the file is saved before the render URL expires.
Screenshot Machine job repeats the same page The request accepts a cached result within its cache age. Set the documented cache option for the freshness your use case needs and verify the current billing implications.
Output is incomplete or images are missing Capture happened before lazy images, animations, or delayed content finished. Increase the documented delay or wait for the required state where supported; keep the setting consistent between runs.
Files are overwritten Every run uses the same output filename. Add a UTC timestamp or write versioned objects, then maintain a separate latest pointer if needed.
Job appears successful but file is invalid Response was an error payload, login page, or unexpected content despite a completed HTTP request. Check status and content type, validate file size/readability, and alert when validation fails.
Costs exceed the estimate Fresh renders, plan limits, feature multipliers, overages, or scheduler/storage charges were omitted. Measure a representative run, inspect usage details, and recalculate with actual cadence and options before scaling.
Secrets show up in logs Credentials were embedded in a command URL or echoed environment. Use secret storage, suppress shell tracing, redact logs, and rotate any exposed key.

Performance and reliability checklist

  • Use a cadence that matches the change rate; hourly capture creates 24 times the requests of daily capture.
  • Keep concurrency within the plan and API limits, and avoid launching a large backlog of simultaneous renders.
  • Choose a readiness condition or delay based on the page, rather than making every job wait for an unnecessarily long fixed interval.
  • Separate transient retries from permanent failures and cap retry count to avoid a billing or request storm.
  • Persist output outside temporary provider URLs when the history matters.
  • Record configuration and timestamps so later diffs can be reproduced.
  • Trial representative dynamic, authenticated, and slow pages; the reviewed sources do not provide a controlled comparison of capture success or reliability.

Frequently asked questions

Does Screenshot Machine have an official CLI?

The reviewed official documentation establishes an HTTP API and code examples, but not a named vendor-provided CLI. A shell script using curl is a command-line way to call the API, but it is your wrapper.

Does the Urlbox CLI schedule captures by itself?

The CLI is a render client. The documented recurring schedule uses Zapier’s Schedule trigger; a different scheduler can invoke the CLI or API if you manage that workflow.

Can Urlbox save scheduled screenshots automatically?

The scheduling guide shows a storage step such as Google Drive and describes other Zapier-connected destinations. Configure the archive action explicitly rather than assuming a temporary render link is permanent.

Can I compare screenshots pixel by pixel?

Yes, if you save the output and normalize viewport, scale, format, and page state. Dynamic timestamps, ads, animations, and personalized content can create differences unrelated to a meaningful site change.

Which service is more reliable?

The cited material does not establish a same-workload independent reliability comparison. Test the pages, schedule, and failure handling that matter to your use case.

Sources and scope

Feature and pricing statements about Screenshot Machine and Urlbox are based on their official documentation and pricing pages checked on 2026-10-03. Prices and quotas can change. No live captures, product installation, customer survey, or head-to-head benchmark are claimed.