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

Use a Playwright script to capture each URL on a monthly schedule, save each image under a date-stamped path, and store the files somewhere with the retention period you need. The example below uses GitHub Actions; its workflow artifacts are convenient for short-lived access, but GitHub documents a 90-day default retention period, so they are not a multi-year archive by themselves.

What the archive should record

A monthly screenshot is a record of one page render at one point in time. It does not establish that the site was available or looked the same throughout the month. To make captures useful later, store the image alongside a manifest or index recording the URL, capture time, viewport, browser, and file path.

Give each capture a unique, chronological path, such as archive/2026/10/example-com-2026-10-03.png. The date-based layout is an organizational choice, not a Playwright requirement. If you want to compare appearance over time, also keep the rendering environment consistent: operating system, browser version, settings, hardware, power source, and headless mode can all affect visual output. Playwright’s visual comparison guidance describes these sources of variation.

Capture pages with Playwright

Install Playwright in a Node.js project and install its Chromium browser using the official setup instructions. Configure the URLs you own or are authorized to capture. Save this as capture.mjs:

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.
#1 Best Overall
Sale
Seagate 2TB Portable Hard Drive | USB 3.0 (STGX2000400)
  • Easily store and access 2TB to content on the go with the Seagate Portable Drive, a USB external hard drive
  • Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
  • To get set up, connect the portable hard drive to a computer for automatic recognition no software required
  • This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
  • The available storage capacity may vary.
import { chromium } from 'playwright';
import { mkdir } from 'node:fs/promises';

const urls = ['https://example.com'];
const now = new Date();
const year = String(now.getUTCFullYear());
const month = String(now.getUTCMonth() + 1).padStart(2, '0');
const day = String(now.getUTCDate()).padStart(2, '0');

const browser = await chromium.launch();
try {
  const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
  for (const url of urls) {
    const safeName = new URL(url).hostname.replaceAll('.', '-');
    const dir = `archive/${year}/${month}`;
    await mkdir(dir, { recursive: true });
    await page.goto(url, { waitUntil: 'networkidle', timeout: 60_000 });
    await page.screenshot({
      path: `${dir}/${safeName}-${year}-${month}-${day}.png`,
      fullPage: true,
      animations: 'disabled'
    });
  }
} finally {
  await browser.close();
}

fullPage: true captures the full scrollable page; remove that option for a viewport-only image. The script uses UTC date components so its folder and filename are consistent regardless of the runner’s local timezone. It reuses one page for the configured URLs and closes the browser even if navigation or capture fails.

Choose a page-ready condition

The sample waits for networkidle, but some pages keep connections open, making network idleness unsuitable. If that happens, use a less restrictive navigation condition and wait for a meaningful page-specific selector with Playwright’s locator or wait APIs. Pages that load images only as they approach the viewport may need a site-specific scrolling or readiness step before the screenshot; a full-page option alone should not be treated as proof that every lazy-loaded element has rendered.

Rank #2
Seagate Portable 5TB External Hard Drive HDD – USB 3.0 for PC, Mac, PS4, & Xbox - 1-Year Rescue Service (STGX5000400), Black
  • Easily store and access 5TB of content on the go with the Seagate portable drive, a USB external hard Drive
  • Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
  • To get set up, connect the portable hard drive to a computer for automatic recognition software required
  • This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
  • The available storage capacity may vary.

Choose the capture scope

Set the viewport deliberately and keep it fixed for comparable monthly images. Use full-page capture when the archive should preserve the full document; use the default viewport capture when the visible fold is the intended record. Keep the browser and runner configuration stable if you plan to compare captures pixel by pixel.

Run it monthly with GitHub Actions

Create .github/workflows/monthly-screenshots.yml in the repository’s default branch. This example schedules capture at 04:17 UTC on the first day of each month and also allows a manual run:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Seagate Portable 1TB External Hard Drive HDD – USB 3.0 for PC, Mac, PlayStation, & Xbox, 1-Year Rescue Service (STGX1000400) , Black
  • Easily store and access 1TB to content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
  • Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop. Reformatting may be required for Mac
  • To get set up, connect the portable hard drive to a computer for automatic recognition no software required
  • This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
  • The available storage capacity may vary.
name: Monthly website archive
on:
  schedule:
    - cron: '17 4 1 * *'
  workflow_dispatch:
jobs:
  capture:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        with:
          node-version: lts/*
      - run: npm ci
      - run: npx playwright install --with-deps chromium
      - run: node capture.mjs
      - uses: actions/upload-artifact@v5
        with:
          name: website-screenshots-${{ github.run_id }}
          path: archive/
          retention-days: 30
  1. Commit the capture script, dependency lockfile, and workflow file to the repository’s default branch.
  2. Confirm the package manifest includes Playwright and that npm ci can install from the committed lockfile.
  3. Run the workflow manually once using GitHub Actions’ workflow_dispatch control and inspect its logs and artifact.
  4. After confirming the saved filenames, page coverage, and storage policy, let the cron schedule run.

GitHub schedule expressions use UTC by default; scheduled workflows use the latest commit on the default branch. GitHub notes that schedules can be delayed or dropped under high load, and recommends avoiding the top of an hour if timing matters. The example uses minute 17 rather than minute 0. See the GitHub Actions schedule documentation for current semantics.

Understand the artifact retention setting

The YAML sets retention-days: 30 as a short-lived example, not as a permanent archive recommendation. GitHub documents a 90-day default for workflow artifact retention, configurable subject to repository and account policies; artifacts expire. Check the applicable settings and set an appropriate period, but choose another persistence design if you need longer-term history. See GitHub’s artifact documentation.

Rank #4
Sale
Seagate Portable 4TB External Hard Drive HDD – USB 3.0, 1-Year Rescue
  • Easily store and access 4TB of content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
  • Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
  • To get set up, connect the portable hard drive to a computer for automatic recognition no software required
  • This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
  • The available storage capacity may vary.

Choose where the history lives

Storage approach Best fit Trade-off to consider
GitHub workflow artifacts Reviewing or downloading recent run output Artifacts expire; default retention is 90 days and settings may vary by policy.
Repository files A modest archive that benefits from version history and repository-based access Image volume grows the repository; consider size, access pattern, and portability.
Object storage A longer-lived archive with a defined retention lifecycle Choose a service and policy based on expected volume, cost, privacy, and retention needs.

There is no universally best storage destination without knowing your archive size, access controls, budget, and retention period. If you select external storage, configure lifecycle and access policies deliberately. Playwright also cautions that reports and traces can contain sensitive information: upload them only to trusted artifact stores or encrypt them before upload. The same care is sensible for screenshots, which may expose private or account-specific page content. See Playwright’s CI guidance.

Troubleshoot missed or inconsistent captures

  • No artifact or missing files: Check the workflow logs for navigation or screenshot errors, verify path: archive/ matches the script’s output directory, and confirm the workflow is on the default branch.
  • Schedule did not run at the expected minute: Cron is interpreted in UTC by default, and GitHub warns that schedule events can be delayed or dropped during high load. Use a minute away from the hour boundary and inspect workflow run history.
  • Navigation times out: The page may not reach network idle because of long-lived requests. Use a more suitable navigation readiness condition and wait for the content you actually need.
  • Images or lower-page content are absent: Some sites lazy-load content. Add a page-specific readiness step, such as scrolling through the relevant area before capture, then verify the resulting image.
  • Monthly images differ unexpectedly: Record and standardize the runner, OS, browser version, viewport, and headless setup. Differences can reflect rendering conditions rather than a website change.
  • Old captures have disappeared: Workflow artifacts expire according to retention settings. For history beyond that period, persist captures in a repository or durable storage designed for the required retention.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

ScreenshotNeo offers a website screenshot API and MCP server. A single request can return an image or PDF; the API accepts URL and capture options, and its parameter names are compatible with those used by other screenshot APIs. See the ScreenshotNeo documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Sale
UnionSine 500GB Ultra Slim Portable External Hard Drive HDD-USB 3.0
  • [Upgraded Version] - This external hard drive features a mirrored logo stripe combined with a striped anti-slip design, and the rounded corners of the casing make it easier to grip. The stripes also have a heat dissipation function, ensuring stable and fast data transfer.
  • 【Ultra-thin and quiet】 - The motherboard adopts JMicron 578 noise-free solution, giving you a quiet working environment. Lightweight and portable size designed to fit in your pocket for easy portability.
  • 【Ultra-Fast Data Transfers】 - Pairing this external hard drive with JMicron 578 solution USB 3.0 and USB 2.0 interfaces enables blazing-fast data transfer. It boasts theoretical read speeds of up to 125MB/s and write speeds of up to 103MB/s.
  • 【Plug and Play】 - With no software to install, just plug it in and the drive is ready to use.The hard disk chip is wrapped with an aluminum anti-interference layer to increase heat dissipation and protect data.
  • 【What You Get】 - 1 x Portable Hard Drive, 1 x USB 3.0 Cable, 1 x User Manual, Gift-type shell packaging ,Three-year manufacturer's warranty and free technical support services.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

Cookie and consent banners are accepted and removed before capture, along with known newsletter popups and chat widgets; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and responses report the page verdict and billing status in headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.

Sign up for 1,000 free screenshots a month, with no card required.

Frequently Asked Questions

Can the workflow also run on demand?

Yes. The example includes GitHub Actions’ workflow_dispatch trigger for manual runs.

Does a full-page screenshot guarantee lazy-loaded images are included?

No. Lazy-loaded content may need a site-specific readiness step, such as scrolling through the relevant page area before capture.

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

Quick Recap

SaleBestseller No. 1
Seagate 2TB Portable Hard Drive | USB 3.0 (STGX2000400)
Seagate 2TB Portable Hard Drive | USB 3.0 (STGX2000400)
This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable; The available storage capacity may vary.
$119.99
Bestseller No. 2
Seagate Portable 5TB External Hard Drive HDD – USB 3.0 for PC, Mac, PS4, & Xbox - 1-Year Rescue Service (STGX5000400), Black
Seagate Portable 5TB External Hard Drive HDD – USB 3.0 for PC, Mac, PS4, & Xbox - 1-Year Rescue Service (STGX5000400), Black
This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable; The available storage capacity may vary.
$229.99
Bestseller No. 3
Seagate Portable 1TB External Hard Drive HDD – USB 3.0 for PC, Mac, PlayStation, & Xbox, 1-Year Rescue Service (STGX1000400) , Black
Seagate Portable 1TB External Hard Drive HDD – USB 3.0 for PC, Mac, PlayStation, & Xbox, 1-Year Rescue Service (STGX1000400) , Black
This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable; The available storage capacity may vary.
$119.80
SaleBestseller No. 4
Seagate Portable 4TB External Hard Drive HDD – USB 3.0, 1-Year Rescue
Seagate Portable 4TB External Hard Drive HDD – USB 3.0, 1-Year Rescue
This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable; The available storage capacity may vary.
$159.99

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.