Thumbalizr vs Screenshot Machine for Scheduled Page Captures
Neither API guide documents recurring schedules. Compare their capture controls, then learn how to automate repeat requests with an external scheduler.
Can you schedule website screenshots to run automatically with Thumbalizr or Screenshot Machine? Neither service’s reviewed API documentation describes a built-in recurring schedule. Both document APIs that capture a page when requested. To repeat captures, you can call an API from a cron job or another external scheduler; that is an implementation approach, not a documented native feature.
For scheduled page captures, ScreenshotNeo is the first alternative to consider: it removes cookie banners, popups, and chat widgets before a shot, bills only clean shots, and starts paid plans at $5. You can also use either service below with your own scheduler if its documented capture controls fit your needs.
What each service documents
| Area | Thumbalizr | Screenshot Machine |
|---|---|---|
| Recurring schedule | No recurring schedule is documented in the reviewed API guide. An external scheduler can repeat requests. | No recurring schedule is documented in the reviewed API guide. An external scheduler can repeat requests. |
| Freshness and cache | A timestamp parameter requests a newly generated image. |
cacheLimit accepts values from 0 to 14 days, including decimals for shorter windows. |
| Capture controls | JPG/PNG, thumbnail width, screen or full-page sizing, delay, browser width and height, and country setting. Some controls depend on plan. | JPG/PNG/GIF, dimensions, desktop/phone/tablet profiles, full height, delay, zoom, clicks, cookies, language and user-agent headers, element selection, and cropping. |
| Request status | Response headers indicate queued, completed, or failed captures. | The API documentation describes capture parameters; consult it for response handling and current request requirements. |
Sources: Thumbalizr API documentation and Screenshot Machine API documentation. These are documentation comparisons, not hands-on quality or uptime tests.
Choosing between them for a scheduled workflow
Choose based on the capture you need
- Choose Thumbalizr when its JPG/PNG output, screen or full-page sizing, browser dimensions, delay, and country setting meet your requirements. Its status headers can help a job distinguish queued, completed, and failed captures.
- Choose Screenshot Machine when you need documented device profiles, GIF output, cache-age control, element capture, cropping, or interactions such as clicking a selector and passing cookies or language/user-agent settings.
- Choose an external scheduler for recurrence with either API. Verify directly with the vendor if a native scheduling feature is essential; it is not documented in the API pages reviewed here.
Check the schedule and freshness separately
A scheduler determines when a request runs. The API’s cache or refresh parameter determines whether that request produces a fresh capture or may return cached output. Do not assume that running a job on a timer guarantees a new image: configure the service’s documented freshness control and verify the resulting response.
Screenshot Machine documents cacheLimit from 0 through 14 days, with decimal values for shorter cache windows. Thumbalizr documents timestamp as a way to request a newly generated image. Confirm accepted values and exact request syntax in the linked vendor documentation before deploying.
Compare plan terms carefully
Thumbalizr’s feature page lists a free account with 100 screenshots per month; Silver at 2,000 for $9/month; Gold at 3,000 for $13/month; and Platinum starting at 5,000 for $20/month. The page also lists higher Platinum allowances and says subscriptions may be monthly or one-time payments. These figures are vendor-published and time-sensitive: check Thumbalizr’s current features and pricing before budgeting. The demo page says free accounts are watermarked and screen-size only, while paid tiers allow full-page or screen captures; Gold and Platinum list custom delay and US or European browsers (Thumbalizr demo).
The reviewed Screenshot Machine API guide documents capture options but does not establish a comparable plan price or allowance. Check its current terms directly rather than inferring cost from features.
Build a recurring capture job
The pattern is the same whichever API you choose: store credentials securely, make one capture request per target and scheduled run, save the response, and record failures for retry or review. The examples below show a generic scheduler invoking a script. They are illustrative orchestration patterns; use the exact endpoint, authentication, parameter names, and response handling in the provider’s current documentation.
- Choose a scheduler and interval appropriate to the monitoring need.
- Keep API credentials in the scheduler’s secret store or environment, not in source control.
- Build a request using the vendor’s documented parameters. Set freshness/cache behavior intentionally.
- Save output to durable storage with a timestamp and target identifier.
- Log HTTP status, provider capture status, and file outcome. Alert on repeated failures.
- Apply bounded retries with backoff for transient errors. Avoid retrying invalid credentials or unsupported parameters unchanged.
Generic cron example
# Run a capture script every hour, at minute 10
10 * * * * /usr/bin/python3 /opt/capture/run_capture.py
This schedules your script, not a feature supplied by either screenshot API. Ensure the machine or scheduler runs in the intended timezone; many cron environments use the host’s configured timezone.
Python request and save pattern
import os
from pathlib import Path
from datetime import datetime, timezone
import requests
API_URL = os.environ["SCREENSHOT_API_URL"]
API_KEY = os.environ["SCREENSHOT_API_KEY"]
TARGET_URL = "https://example.com"
response = requests.get(
API_URL,
params={"key": API_KEY, "url": TARGET_URL}, # Replace with the vendor's documented auth and parameter names.
timeout=(10, 120),
)
response.raise_for_status()
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
out = Path("captures") / f"example-{stamp}.image"
out.parent.mkdir(parents=True, exist_ok=True)
out.write_bytes(response.content)
print(f"Saved {out}")
This is a runnable HTTP/file pattern once SCREENSHOT_API_URL, authentication, and parameters are replaced with the selected vendor’s documented values. Some APIs may return a queued status or an error payload rather than image bytes immediately; handle that response format as documented.
Node.js request and save pattern
import { mkdir, writeFile } from "node:fs/promises";
const apiUrl = process.env.SCREENSHOT_API_URL;
const apiKey = process.env.SCREENSHOT_API_KEY;
if (!apiUrl || !apiKey) throw new Error("Set screenshot API environment variables");
const requestUrl = new URL(apiUrl);
requestUrl.searchParams.set("key", apiKey); // Replace with documented authentication.
requestUrl.searchParams.set("url", "https://example.com");
const response = await fetch(requestUrl, { signal: AbortSignal.timeout(120_000) });
if (!response.ok) throw new Error(`Capture request failed: HTTP ${response.status}`);
const bytes = new Uint8Array(await response.arrayBuffer());
await mkdir("captures", { recursive: true });
await writeFile(`captures/example-${new Date().toISOString().replaceAll(":", "-")}.image`, bytes);
Use each provider’s exact authentication scheme and response semantics. Do not assume an HTTP 200 response means the capture is complete if the service reports queued work separately.
cURL request pattern
curl --fail-with-body --get "$SCREENSHOT_API_URL" \
--data-urlencode "key=$SCREENSHOT_API_KEY" \
--data-urlencode "url=https://example.com" \
--output capture.image
Replace the endpoint and parameter names with those in the vendor guide. For Thumbalizr, check the API documentation for its API key and secret request format. For Screenshot Machine, use the authentication and parameter syntax in its API documentation.
Capture options that affect scheduled runs
Screenshot Machine
The API guide documents these options relevant to recurring page captures:
- Geometry and device: dimensions, desktop/phone/tablet profiles, and full-page height. The documentation gives dimensions up to 1920 pixels wide and 9999 pixels high.
- Output: JPG, PNG, or GIF.
- Freshness:
cacheLimit, from 0 to 14 days, including decimal values for shorter windows. - Timing and scale: capture delay and zoom. The guide recommends a longer delay for some full-page sites with images or animation.
- Page interaction: click a CSS selector, provide cookies, set language or user-agent headers, capture one DOM element, or crop a region.
- Full page: the
fullheight option requests a full-page screenshot.
Parameter spelling and allowed values are provider-specific. See the official API guide for the exact syntax.
Thumbalizr
Thumbalizr’s API guide documents JPG and PNG, thumbnail width, screen or full-page sizing, capture delay, browser width and height, country, and timestamp for a newly generated image. Its feature/demo pages indicate some capture controls depend on plan. The API response includes status headers for queued, completed, or failed captures. Consult the API guide and verify your account’s plan supports the options you need.
Reliability, performance, and cost
- Schedule capacity: calculate runs per day × days × URLs. Add headroom for retries and one-off recaptures, and avoid launching a large batch of requests at once unless the provider’s rate limits allow it.
- Execution time: full-page captures, delayed rendering, and pages with images or animation can take longer. Set scheduler timeouts above the expected capture duration and prevent overlapping runs when a prior batch is still active.
- Retries: use a small bounded retry count with exponential backoff for timeouts and transient server errors. Preserve the target and run identifier so a retry does not overwrite a successful capture silently.
- Freshness: explicitly control cache behavior. A recurring request that reuses cached output may not reflect the page at that run time.
- Monitoring: record scheduled time, request result, provider capture status, output size, and destination path. Thumbalizr’s status headers can distinguish queued, completed, and failed states; account for asynchronous completion if a response is queued.
- Cost: estimate monthly API volume from the schedule and current plan terms. Thumbalizr publishes plan allowances and prices, but check the current page. The reviewed Screenshot Machine documentation does not provide enough pricing detail for a like-for-like cost calculation.
Common problems and fixes
| Symptom | Likely cause | What to do |
|---|---|---|
| Nothing runs at the expected time | Scheduler timezone, cron syntax, disabled job, or host downtime. | Check scheduler logs and configured timezone; trigger the script manually and verify its environment. |
| Request is unauthorized | Missing, malformed, or rotated credential; wrong authentication format. | Use the vendor’s documented API key/secret format and confirm the scheduler has the current secret. |
| Saved file is not an image | The response may be an error body, queued status, or API message. | Check HTTP status, content type, and provider status before writing bytes as an image. Handle queued work according to the API guide. |
| Every run returns the same page | Cached output is being reused. | Set Screenshot Machine’s cache limit appropriately or use Thumbalizr’s documented timestamp refresh control; verify the exact parameter syntax. |
| Long page is incomplete | Screen-size mode, insufficient dimensions, or rendering delay for lazy images/animation. | Request full-page capture, confirm plan support where relevant, and adjust delay. Screenshot Machine specifically notes longer delay may help on some full-page sites. |
| Capture fails intermittently | Slow target page, transient network/service error, or overlapping requests. | Set a realistic timeout, log status, retry transient failures with backoff, and limit concurrent runs. |
| Output format or dimensions are rejected | Unsupported value or plan restriction. | Use only documented formats and ranges and verify the account’s available features. |
Or skip the browser setup
ScreenshotNeo provides a screenshot API and MCP server. A single GET request can return PNG, JPEG, WebP, or PDF. Its capture options include full-page shots with lazy images loaded, element capture, device and viewport controls, custom CSS/JavaScript, wait conditions, request blocking, and cache TTL. 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
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; response headers report the page verdict and billing status. An MCP server lets AI agents use screenshot, page-info, and PDF capture tools. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 shots. Sign up for ScreenshotNeo’s free plan.
Frequently asked questions
Can either service run captures every hour by itself?
The reviewed API guides do not document a native recurring schedule. Use an external scheduler or confirm current scheduling options with the vendor.
Does a refresh parameter create a recurring schedule?
No. Thumbalizr’s documented timestamp requests a newly generated image; Screenshot Machine’s cacheLimit controls cache age. Recurrence comes from the scheduler calling the API repeatedly.
Which one is better for phone screenshots?
Screenshot Machine explicitly documents phone and tablet device profiles. Thumbalizr documents browser width and height, so check its current guide and plan details for the dimensions you need.
Are the Thumbalizr prices guaranteed to remain current?
No. The cited allowances and prices are listed on its feature page and can change. Recheck that page before choosing a plan.
