How to schedule daily website screenshots with Browshot
Use Browshot’s Windows command-line tool and Task Scheduler to capture a website every day, control freshness, and check each run.
To schedule daily website screenshots with Browshot, run its Windows command-line tool, browshot-cmd.exe, from a task imported into Windows Task Scheduler. Browshot captures the page; Task Scheduler starts the command on the daily schedule. The XML task is an example that you need to edit for your computer, target URL, API credentials, and output choices.
What you need
- A Browshot account and API key for the command or API request you will run. Keep the key private.
- A Windows computer that is on and able to reach the internet at the scheduled time.
- Browshot’s Windows command-line tool and its example task file,
browshot-schedule.xml, from the Browshot Windows command-line documentation. - A destination for the screenshots, plus enough disk space or a separate storage service if you plan to retain many daily captures.
The documented automatic-scheduling example uses Windows Task Scheduler. On another operating system, Browshot documents invoking the API with cURL, but the sources do not establish a matching ready-made scheduling task for those systems.
Set up the daily task in Windows
- Make the command-line tool available. Install or place
browshot-cmd.exeand note its full local path. If you configure defaults inbrowshot-cmd.exe.config, Browshot saysbrowshot-cmd.exe --helpdisplays configured values. Review that output so you know which settings the command will use. - Copy and edit the example XML. Start with Browshot’s
browshot-schedule.xml. Change the folder and command arguments at the end of the task file to match your local installation and desired capture. Confirm the executable path, target URL, API key handling, instance, output destination, and capture parameters. The example needs local edits; do not assume its paths or arguments fit your machine. - Import the task. Open Windows Task Scheduler and import the edited XML task. In the task settings, choose a daily recurrence and the time you want it to run. Browshot’s documentation says you can change the frequency and start time in Task Scheduler.
- Check freshness settings. Browshot documents a default screenshot cache window of 24 hours and
cache=0to request a new screenshot. For a daily visual record, check the current API behavior and parameters and choose settings that produce a fresh capture for each run. - Run once and inspect the result. Start the task manually, then check that the expected screenshot exists and is usable. In Task Scheduler, review the last-run result and next-run time before depending on the task unattended.
The exact XML arguments and local file paths depend on how the tool is installed and configured. Use Browshot’s current example and command help rather than copying a guessed command line.
Choose what each capture should contain
Browshot’s screenshot creation API accepts a target URL and instance ID. Its documented options let you shape the capture:
| Choice | When it matters |
|---|---|
| Screen size or full-page size | Use screen capture for a fixed viewport view; use full-page capture when the record should include content below the fold. |
| Browser dimensions | Set dimensions when layout changes with viewport width or height. Keep them consistent across days to make visual comparisons meaningful. |
| Render delay and maximum wait | Allow time for JavaScript-driven content to appear, while setting a maximum wait appropriate to the page. |
| CSS selector targeting | Capture a specific element when the relevant state is a component rather than the whole page. |
| Completion hook | Have Browshot POST status information to a URL when downstream processing should be notified. |
Use the current API documentation for exact parameter names and limits; those details can differ by endpoint or instance. If a page depends on JavaScript, Browshot documents the option to load a script after page load and before capture. The script must finish within the configured delay; the source material gives a 10-second example limit for that script feature, so verify the current limit before relying on it.
Keep, retrieve, and compare the screenshots
Scheduling and storage are separate decisions. Browshot documents automatic screenshot or thumbnail hosting through Browshot/CDN and an S3 hosting option. S3 hosting requires a bucket; it is not a prerequisite for running a Windows scheduled task.
Decide how long to retain daily images, how to name or organize them, and whether another copy is needed. The cited Browshot materials do not prescribe a retention period, lifecycle rule, or backup strategy. If you store files locally, make sure the scheduled account can write to the destination and that the disk will not fill. If you use hosted storage, check its current retrieval and retention behavior.
Run Browshot from cURL outside the scheduled Windows workflow
Browshot documents command-line API use with cURL. This is useful for a manual capture or as the command invoked by a scheduler you configure yourself. The API request needs a target URL and instance ID; use the current Browshot documentation for the required authentication and exact parameter names for your account and endpoint.
curl --get 'BROWSHOT_SCREENSHOT_ENDPOINT' \
--data-urlencode 'url=https://example.com' \
--data-urlencode 'instance_id=YOUR_INSTANCE_ID' \
--data-urlencode 'cache=0' \
--output screenshot.png
BROWSHOT_SCREENSHOT_ENDPOINT is a placeholder: use the screenshot creation endpoint from Browshot’s current API documentation. Add authentication as documented for your account, and select the documented output or size options you need. The example requests a fresh capture with cache=0; check that the current endpoint accepts that parameter.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server. A GET request can return an image or PDF. The call below saves a screenshot of the example target; see the ScreenshotNeo API documentation for the available options.
curl -G "https://api.screenshotneo.com/v1/shot" \
-d access_key=YOUR_API_KEY \
--data-urlencode url=https://example.com \
-o shot.webp
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.com"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://example.com'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const image = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', image));
- Cookie banners, newsletter popups, and chat widgets are removed before the shot; each cleanup step can be turned off.
- Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response headers report the page verdict and billing status.
- An MCP server gives AI agents tools for screenshots, page information, and PDF capture.
- The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000 screenshots.
Sign up for ScreenshotNeo free to get 1,000 screenshots a month with no card.
Troubleshooting
| Symptom | Likely cause | What to check |
|---|---|---|
| The task does not start | The imported XML still points to an example folder or executable path, or the task settings do not match the intended schedule. | Check the executable and working paths in the task, then review its daily trigger and next-run time. |
| The task runs but no screenshot appears | The command arguments, API key, instance, or destination may be wrong; the scheduled account may lack access to the output folder. | Run the task manually, inspect the command configuration with --help, and verify the account can write to the destination. |
| The image is yesterday’s result | A cached screenshot may be returned. Browshot documents a 24-hour default cache window. | Check the current cache parameter behavior and use cache=0 when a new screenshot is required. |
| Dynamic content is missing | The page may still be rendering when capture begins. | Review render delay and maximum wait options. For JavaScript-dependent state, check Browshot’s script-loading option and its current time limit. |
| The page is clipped or the wrong area is captured | Screen versus full-page size, browser dimensions, or selector targeting may not match the intended record. | Choose the appropriate page size, keep viewport dimensions consistent, and verify any CSS selector against the page. |
| A completion notification does not arrive | The hook URL may be incorrect or unable to receive Browshot’s POST. | Check the current hook configuration and the receiving endpoint’s availability and request handling. |
| Storage fills or older captures disappear | Daily retention and storage are not automatic policy decisions covered by the scheduling mechanism. | Set an explicit retention plan and check available disk, hosted storage, or S3 lifecycle settings. |
Performance, reliability, and cost
- Runtime: Render delay, maximum wait, page complexity, and image size affect how long each capture takes. A delay that is too short can miss content; one that is unnecessarily long adds time to every run.
- Reliability: A scheduled task only runs when its host and network are available and its credentials, paths, and permissions work. Review task results and verify the output as part of operating the workflow.
- Freshness: A daily trigger does not itself guarantee a distinct new image. Check cache settings; Browshot documents a 24-hour default cache period and
cache=0for a new screenshot. - Cost: Browshot’s API documentation states that its free instance includes 100 screenshots per month; verify that this still applies to your account and current plan. One daily URL uses about 30 or 31 captures in a typical month, before retries or extra pages. The sources do not establish the price of paid plans, storage, or other usage, so check current Browshot account terms.
FAQ
Does Task Scheduler take the screenshot?
No. Task Scheduler starts Browshot’s command-line tool at the chosen time; Browshot performs the capture.
Do I need Amazon S3?
No. S3 is an optional Browshot hosting destination and requires a bucket. It is separate from scheduling the capture.
Will a daily schedule always produce a fresh image?
Not automatically. Browshot documents caching, so check the current cache settings and request a new capture when freshness is required.
Can I run a daily capture without Windows?
The cited Browshot materials document cURL API use but identify Windows Task Scheduler as the explicit automatic-scheduling example. A different scheduler can invoke an API command, but its setup is outside that Windows example.


