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

To schedule screenshots from a CSV, write one URL per row, use a script to validate the rows and capture each page, then run that script on a recurring schedule such as a GitHub Actions cron workflow. Playwright is a good fit when each page needs custom browser actions; shot-scraper is a lighter CLI option for configured batches. Neither tool should be assumed to ingest arbitrary CSV files directly: your script or a conversion step must connect the CSV to the capture tool.

Choose a capture workflow

Use Playwright if pages need authentication, clicks, custom waits, or other per-page logic. Its browser API gives you direct control over navigation and screenshots. Choose shot-scraper when its command-line interface and batch configuration cover your needs. Its documentation includes multi-shot configuration and a GitHub Actions workflow example. Playwright screenshots · shot-scraper documentation

In either case, treat CSV parsing as a separate input step: read the rows, validate them, then pass each URL to the browser or transform the rows into shot-scraper’s documented configuration. Avoid assuming either tool will read an arbitrary CSV automatically.

Prepare the CSV and output policy

Use a simple CSV contract

For a basic list, use a header named url and one absolute HTTP or HTTPS URL in each non-empty row:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
ORIA Small Precision Screwdriver Set, Mini Repair Tool Kit for Phone, PC, Computer, Laptop, Xbox, Switch, Glasses, Watch, Electronics, DIY, Pocket Repair Tools with Torx Phillips Flat and More
  • 20PCS Premium CRV Bits: Our mini screwdriver set includes 20 high-hardness, rust-resistant CRV bits, covering 5 common bit types and featuring a variety of sizes. This versatile set is an essential household tool for daily maintenance, DIY projects, and electronics repair
  • Strong Magnetic Design: The handle’s internal magnetic design holds bits firmly in place, while the magnetic bits make it easy to pick up and hold small screws. Say goodbye to the hassle of screws falling into crevices or tight corners—work faster and more efficiently
  • Non-Slip Handle with 360° Rotating Cap: The ergonomic handle provides a secure, sweat-resistant grip to prevent slipping during precision repairs. Combined with the 360° rotating cap, it allows for smooth one-handed operation, great for delicate tasks
  • Practical & Complete Accessories: The magnetic driver bit set also includes a pry bar, triangle pry tool, and SIM card eject pin. This complete set of accessories makes it easy to pry open cases, lift screens, and remove SIM cards
  • Compact & Wide Application: Comes in a travel-friendly case, no more lost bits! This portable repair tool kit is ideal for repairing phones, laptops, PCs, game consoles, and other electronics. Also suitable for eyeglasses, jewelry, and everyday household items
url
https://example.com/
https://example.com/pricing
https://another.example/article

Before capturing, have the script skip or report blank rows and reject malformed URLs. A syntactically valid URL can still lead to a blocked page, timeout, or site error, so record failures separately rather than treating every requested capture as successful.

Make runs auditable

Keep a manifest with at least the CSV row number, source URL, output filename, capture time, and any error. Choose whether each run overwrites a latest image or preserves an archive. Do not name files using only the hostname: different paths on one site would collide. Include a row number, path slug, or run date in each name. shot-scraper chooses a numbered suffix when its default output filename already exists; explicit output names provide more control.

Capture CSV URLs with Playwright

The following Python script reads a CSV with a url header, validates absolute HTTP(S) URLs, captures each page, and writes a CSV manifest. Install Playwright and its Chromium browser before running it:

Rank #2
HIGOLEPC Mini PC Win 11 Pro,Celeron N5095 Mini Computer with Fan,8GB DDR4,256GB ROM,USB-C Mini PC with Screen,Micro PC WiFi 5.0 BT5.2 4K 60Hz Triple Display with Battery,Mini Gaming Computer
  • 【MINI PC With Built-In Fan】The HIGOLE MINI PC equipped with a built-in fan【UPGRADE 1】, ensures optimal temperature control, enhancing both performance and stability. Users can enjoy a seamless experience without experiencing any lag or system crashes caused by overheating. Additionally, the integrated fan effectively reduces noise levels, prolongs the lifespan of the MINI PC, and provides a worry-free and comfortable user experience.
  • 【MINI PC FULL-FEATURED TYPE-C】The HIGOLE MINI PC, featuring a convenient and versatile Full Functionality TYPE-C port【UPGRADE 2】, allows for effortless connectivity and compatibility with a wide range of devices. Users can easily transfer data, connect peripherals, and even charge their devices, including power banks. This versatility enhances convenience and flexibility in usage, resulting in increased productivity and seamless integration within the digital ecosystem.
  • 【MINI PC WITH Touch Screen&2500 mAh battery】The HIGOLE MINI PC can be used for touch screen business office, leisure and entertainment,easy use . HIGOLE MINI PC can also be used to remotely control other micro PCs or smart home systems using remote desktop protocol.This mini computer is equipped with a 2500mAh battery, allowing you to use it anytime and anywhere for extended work and video watching.
  • 【MINI Computer Win 11】Micro PC with latest Win 11 Pro and a valid license, which is support to remote desktop access, supports Win 11 pro upgrade. supports Win 10, Support IOT building,Ideal for developers and programmers running dual custom OS. 【Extra large memory 】8GB DDR4,128GB Upgrade 256GB Emmc【UPGRADE 3】.
  • 【Celeron N5095 CPU】This small mini PC, features the Faster Celeron N5095 processor【UPGRADE 4】,J4125 Upgrade N5095 with CPU/GPU throttling. It's a competent quad-core that does a decent job for lightweight tasks, with a base operating frequency of 2.0 GHz/s to 2.9GHz (4MB cache). Drawing under 10 watts of power.Its metal body helps to expel heat quickly and the device is completely silent, improving efficiency.With the latest wireless connectivity.The tiny PC with WiFi 5.0,dual-band WiFi2.4G/5.0G,it provides speeds up to 450Mbps/2.4GHz and 1000Mbps/5GHz. Gigabit Ethernet supports 10/100/1000Mbps,Bluetooth 4.2 fast data transfer speed up to 2Mbps.
python -m pip install playwright
python -m playwright install chromium

Save this as capture_csv.py:

import csv
import re
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlparse

from playwright.sync_api import sync_playwright

INPUT = Path("urls.csv")
OUTPUT_DIR = Path("screenshots")
MANIFEST = OUTPUT_DIR / "manifest.csv"
FULL_PAGE = True


def valid_http_url(value):
    try:
        parsed = urlparse(value)
        return parsed.scheme in {"http", "https"} and bool(parsed.netloc)
    except ValueError:
        return False


def filename_for(index, url):
    host = urlparse(url).netloc.lower()
    host = re.sub(r"[^a-z0-9.-]+", "_", host).strip("._") or "page"
    return f"{index:04d}-{host}.png"


OUTPUT_DIR.mkdir(parents=True, exist_ok=True)

with INPUT.open(newline="", encoding="utf-8-sig") as csv_file, 
     MANIFEST.open("w", newline="", encoding="utf-8") as manifest_file:
    reader = csv.DictReader(csv_file)
    if not reader.fieldnames or "url" not in reader.fieldnames:
        raise SystemExit("CSV must have a header named 'url'")

    writer = csv.DictWriter(
        manifest_file,
        fieldnames=["row", "url", "file", "captured_at_utc", "error"],
    )
    writer.writeheader()

    with sync_playwright() as playwright:
        browser = playwright.chromium.launch()
        page = browser.new_page(viewport={"width": 1440, "height": 900})

        for row_number, row in enumerate(reader, start=2):
            url = (row.get("url") or "").strip()
            if not url:
                writer.writerow({"row": row_number, "url": "", "file": "", "captured_at_utc": "", "error": "blank URL"})
                continue
            if not valid_http_url(url):
                writer.writerow({"row": row_number, "url": url, "file": "", "captured_at_utc": "", "error": "invalid HTTP(S) URL"})
                continue

            output_file = OUTPUT_DIR / filename_for(row_number, url)
            captured_at = datetime.now(timezone.utc).isoformat()
            error = ""
            try:
                response = page.goto(url, wait_until="networkidle", timeout=60000)
                if response and response.status >= 400:
                    error = f"HTTP {response.status}"
                page.screenshot(path=str(output_file), full_page=FULL_PAGE)
            except Exception as exc:
                error = f"{type(exc).__name__}: {exc}"
                output_file = ""

            writer.writerow({
                "row": row_number,
                "url": url,
                "file": str(output_file),
                "captured_at_utc": captured_at,
                "error": error,
            })

        browser.close()

The script uses a 1,440 × 900 viewport, waits for network idle for up to 60 seconds, and captures the full scrollable page. Change FULL_PAGE to False for a viewport-only image. A response with an HTTP error status is still recorded as an error; inspect the manifest before treating the batch as complete. The script is a starting point: sites with delayed content or interactions may need a site-specific wait or browser action.

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.

Run a batch with shot-scraper

shot-scraper provides a CLI and multi-shot configuration for batches. Convert the validated CSV rows into its documented configuration, then run that configuration in your job; alternatively, write a wrapper that invokes the tool once per row. Use explicit output names if you need predictable overwrite or archive behavior. Follow the project’s current configuration and CLI documentation for its exact file format and command options.

This keeps the same separation of responsibilities: your input step handles CSV validation and manifest details, while shot-scraper handles the configured captures. If a page needs custom authentication or browser interaction beyond the batch configuration, a Playwright script may be easier to adapt.

Rank #3
5.5" Touchscreen Mini PC Win 11 Pro, N5095 Mini Desktop Computer with Quiet Cooling Fan, 16GB RAM 256GB ROM Micro PC with Full-Featured USB-C, HDMI 4K 60Hz Triple Display Mini Computer WiFi BT5.0
  • 【One Compact PC, Multiple Applications】Pre-installed with Windows 11 Pro and Linux-ready for flexible system deployment. Built-in Wi-Fi 5, Bluetooth 5.0, and a G-Sensor support convenient wireless connectivity and automatic screen rotation. The responsive touchscreen is ideal for remote meetings, smart-home control, self-service kiosks, industrial HMI, and inventory management. Designed for everyday and light-duty applications, it is best suited for essential tasks rather than heavy multitasking, gaming, or video rendering
  • 【Portable Power for Work Anywhere】Stay productive without being tied to a power outlet. The built-in 2500mAh rechargeable battery provides up to 4.5 hours of runtime, while the lightweight 0.32 kg design makes it easy to carry wherever you go. From home and office use to field debugging, equipment inspections, and on-site tasks, enjoy the freedom to work wherever you need
  • 【Touchscreen Mini PC, No Monitor Required】Enjoy a complete computing experience without the need for a separate display. This compact 5.5-inch IPS touchscreen mini PC features a 720×1280 resolution, Intel Celeron processor, 16GB RAM 256GB eMMC storage, and Windows 11 Pro. Ideal for everyday tasks like web browsing, document editing, and media playback, while also fitting seamlessly into digital signage, kiosks, POS systems, and light-duty industrial applications
  • 【Dual-Display Support & Extensive Connectivity】Expand your workspace with dual-display output through HDMI up to 4K@30Hz and Type-C video output. A full selection of ports—including Gigabit Ethernet, four USB 3.0 ports, a TF card slot, and a PD charging port—makes it easy to connect keyboards, external storage, network devices, and other peripherals. Whether you're creating a compact home workstation, setting up a POS system, or integrating it into an industrial control environment, this mini PC provides the connectivity you need
  • 【Intel Celeron N5095 Processor with Quiet Cooling】Powered by a quad-core Intel Celeron N5095 processor with speeds up to 2.9GHz and 4MB cache, this compact mini PC delivers smooth and reliable performance for everyday computing. The built-in quiet cooling fan helps dissipate heat efficiently during extended use while keeping operating noise to a minimum

Schedule the capture job with GitHub Actions

GitHub Actions can run the capture workflow on a cron schedule. Create .github/workflows/screenshots.yml and use the same install-and-capture steps you run locally. This example runs daily at 06:00 UTC:

name: Scheduled screenshots

on:
  schedule:
    - cron: "0 6 * * *"
  workflow_dispatch:

permissions:
  contents: read

jobs:
  capture:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: python -m pip install playwright
      - run: python -m playwright install --with-deps chromium
      - run: python capture_csv.py

Replace the cron expression with the required schedule. GitHub documents POSIX cron syntax, UTC as the default schedule timezone, a minimum interval of once every five minutes, and scheduled runs against the latest commit on the default branch. See GitHub’s schedule event documentation. Its actual run time may not be exact, so use a different scheduling arrangement if a precise execution time is essential.

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

The workflow above creates screenshots and a manifest on its runner, but does not preserve them after the job. To retain results, add a deliberate storage or artifact step. If you commit generated files, consider whether the repository is private and whether the images contain confidential or authenticated page content. Store credentials in GitHub secrets, not in the CSV or source code, and restrict access to captures as appropriate. shot-scraper’s workflow example also demonstrates installation, browser setup, running a multi-shot command, and optionally committing output files.

Rank #4
RANSANX 3.5 Inch IPS USB Mini Screen No Installation AIDA64 Pc Case
  • Parameters: This is a new type of mini computer chassis screen. There is no need to install AIDA64, and only a USB cable is required to detect whether the running parameters are normal. Display area: 49X74 (mm), overall size: 55X85 (mm), resolution: 320X480, thickness: 7~ 8 (mm), viewing angle: IPS full viewing angle, interface: USB-TYPEC, shell material: metal
  • FAQ: Unable to download URL and unzip, use tutorial, what system is supported? Please don't worry, we will upload video tutorial in the link, which will be reflected in the video. At the same time, we will have product instructions. Finally, our products are compatible and easy to operate
  • Features: Support horizontal and vertical screen switching, 0°and 180°two options, energy saving and environmental protection, automatic screen off after shutdown, eye comfort, stepless brightness adjustment
  • Function: Displays various data of CPU, memory, hard disk and other hardware, so that users can grasp the computer operation status in time. Through special customized chips, it supports dynamic wallpaper and other forms, can add visual effects, and only takes up a small amount of CPU resources. Compared with the traditional HDMI secondary screen, it only needs a USB data cable to connect, avoiding various problems such as cable clutter
  • Packing list: 1 x 3.5-inch screen; 1 x USB data cable; 1 x adjustable bracket; 1 x product manual; 1x Acrylic double-sided tape;1 x packaging box. If you encounter the above problems or other problems about the product, the information we provide cannot solve them for you. Please contact us. We are online 24 hours a day and will serve you as soon as possible.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Keep captures comparable and useful

Control the browser environment

Visual output can vary with the host operating system, browser version, settings, hardware, power conditions, and headless mode. Keep the runner, browser version, viewport, and relevant settings stable when comparing images over time. A visual difference is evidence of a difference in rendered output, not proof that the site’s content changed.

Choose viewport or full-page capture deliberately

A viewport capture is bounded and generally smaller; a full-page capture includes the scrollable document and can be much taller and larger. Long pages may load images or other content only after scrolling. Dynamic pages may also need a selector wait, delay, or interaction before capture. Verify that the chosen wait condition matches the page rather than assuming that navigation completion means all visual content is ready.

Make partial failures visible

A batch can be incomplete because a page blocks automation, needs authentication, times out, changes layout, or returns an error. Track each URL independently and make the job report failure when any required capture fails; otherwise a partially successful run can look complete. For large batches, consider retrying transient failures, while keeping retries bounded so one unhealthy page cannot hold the scheduled job indefinitely.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
HIGOLEPC Mini PC 12th Gen N95 16GB RAM 256GB ROM, 4G Data Mini PC with Screen Dual 2.5GbE LAN Full-Functional USB-C Mini Computer with Battery, WiFi 5 BT 5.0 4K Display HDMI Desktop Computer
  • 【12th Gen Alder Lake-N95 & Fan design】The HIGOLEPC Mini PC equipped with the powerful 12th Gen Alder Lake-N95 processor. Featuring 4 cores and 4 threads, with speeds of up to 3.4GHz, this micro PC delivers a 30% performance boost compared to its predecessors, the celeron N5095 and N5105. The design of the cooling fan helps this computer dissipate heat and maintain a stable state..With a low TDP of just 8W, it achieves robust performance at an exceptionally low power consumption.
  • 【High-Speed Performance & Expandable Storage&4G data transmission】Enjoy faster computing with 16GB of DDR4 RAM and 256GB of storage,Ideal for home working, business offices, IOT, school education, and billboards. Expand storage effortlessly with a Micro SD card slot (up to 512GB).Supporting the use of 4G for data transfer. Please note, this 4G data transmission functionality does not support calling features.
  • 【Triple Video Display & Full-featured TYPE-C】Maximize your visual experience with Triple Video display supported by the ultra HD graphics card (4K@60Hz). One HDMI ports and a full-function USB-C allow simultaneous dual display, enhancing your work efficiency. The USB-C PD 3.1 port supports 4K display, data transfer, and power input, reducing cord clutter and optimizing your workspace.
  • 【Wi-Fi 5 & Bluetooth 5.0 & Dual 2.5G Ethernet network】 HIGOLEPC mini PC incorporates advanced Wi-Fi 5 and Bluetooth 5.0 technologies, ensuring reliable dual-band connectivity (2.4GHz and 5GHz). With dual 2.5G ethernet network,You can manually install firmware for this mini PC to use it as a NAS,software router,home server or network firewall with very powerful features.Enjoy the convenience of a portable desktop PC anytime, anywhere, with swift connectivity and adaptable charging options.
  • 【Pre-installed OS System & Large capacity battery 】 This mini PC comes with the latest Win11 Pro system and also supports other types of systems such as Debian, Ubuntu, and Linux. All these systems have undergone stable testing to make your mini PC more convenient to use. This computer is equipped with a high-capacity battery of 5000mAh, which can help address the issue of low power. Its battery life exceeds 3 hours, so you can use it to watch videos, listen to music, or work.

Troubleshoot common problems

  • The script rejects the CSV: Confirm the first row includes the exact header url, the file is valid CSV, and URLs include http:// or https://. Blank rows are recorded and skipped.
  • Browser installation fails in CI: Install the browser version required by the installed Playwright package; on Linux runners, use python -m playwright install --with-deps chromium to install browser dependencies as well.
  • Navigation times out: The site may be slow, never reach network idle, or block automation. Increase the timeout only when appropriate; try a more suitable readiness condition or a site-specific wait, and retain the per-URL error in the manifest.
  • The capture is blank or incomplete: Check whether the page needs a longer wait, scrolling, a click, or authentication. Confirm whether viewport-only or full-page output is desired.
  • Images overwrite or names collide: Include a row index or run identifier in the filename and define whether outputs should be archived or replaced.
  • The scheduled run produces no retained files: Workflow files live on the runner during execution. Add an artifact or storage step, or intentionally commit output if that is appropriate for the repository.
  • Runs appear at an unexpected time: GitHub’s scheduled cron uses UTC by default. Check the cron expression and convert the desired local time to UTC, including daylight-saving changes where relevant.
  • Images differ even though the site seems unchanged: Stabilize the operating system, browser version, viewport, and capture settings before interpreting visual differences.

Or skip the browser setup

ScreenshotNeo offers a one-request screenshot API and an MCP server for AI agents. This cURL example captures a page as WebP; see the ScreenshotNeo API documentation for request options and integration details.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

For a CSV batch, your scheduler still needs to read and validate the rows, then make one request per URL. ScreenshotNeo removes cookie banners, popups, and chat widgets before capture; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots. Learn about ScreenshotNeo, or sign up for 1,000 free screenshots a month with no card.

Frequently Asked Questions

Can I run the capture workflow manually as well as on a schedule?

Yes. The example workflow includes workflow_dispatch, which lets you start a run from the GitHub Actions interface.

Should I commit screenshots to the same repository as the CSV?

Only if the repository’s access controls and retention history are appropriate for the captured content. For confidential or authenticated pages, use restricted storage and avoid exposing captures through a public repository.

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

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.