ScreenshotNeo

BlogHow-to

How to Schedule Daily Website Screenshots for Indian Price Tracking

Schedule daily screenshots to track Indian prices with a managed monitor or Playwright. Check region, currency, product variant, and page loading before trusting a change.

By the ScreenshotNeo team4 October 20268 min read

To track an Indian product price with daily website screenshots, either configure a managed visual monitor to check the product page once a day, or run a Playwright script on a daily scheduler and save a dated screenshot. In either case, confirm the checking location, product variant, currency, availability, and that the price area has finished loading. A changed screenshot is a visual signal, not a validated price record.

Choose a daily tracking method

Need Managed monitor Playwright you run
Setup Add a page, choose the whole page or a supported area, describe the change, and set a daily frequency. Write a script to capture the page, then configure a scheduler to run it daily.
Comparison and alerts Visualping describes before-and-after comparisons and change alerts; optional AI summaries and feature availability may depend on plan. Playwright’s test runner supports screenshot comparisons. A basic screenshot script does not include a ready-made alert service.
Regional control Check the selected location. Visualping says its default crawler location is California in the United States, and other locations are available. The reviewed help material does not say which Indian locations are offered. Choose a runtime whose network location matches the market you need to observe. Playwright’s cited documentation does not establish a requirement to host in India.
Maintenance Less browser-runtime maintenance, while access and page behavior still depend on the service and site. You control naming, storage, retention, and scheduling, and must maintain the browser runtime and handle failures.

Visualping is one managed option documented for price and availability monitoring. Its documentation describes scheduling, comparisons, and alerts; these are vendor-described capabilities, not independent accuracy tests. [Visualping price tracking; Visualping monitor setup]

Set up a managed monitor

  1. Choose a publicly accessible product page and create a monitor.
  2. Select the full page, or select the price and availability area if the service supports region selection.
  3. Describe the change precisely, such as a decrease in the displayed price. If relevant, include availability as a separate condition.
  4. Inspect the preview. If the price is missing or still loading, increase the wait time and inspect again.
  5. Set the frequency to daily. Check the account’s time zone and checking location. Do not assume that a default United States location represents an Indian shopper’s view.
  6. Review an initial comparison manually. Confirm the product, variant, currency, price, delivery region, and availability before recording it as a price observation.

Visualping’s setup guidance recommends checking the preview and adding wait time when page elements have not loaded. Its help overview describes California, US as the default checking location and says other locations are available. Check the current account options directly; the reviewed source does not establish that a particular Indian location is offered. [Monitor setup; Getting started and checking locations]

Build a daily screenshot job with Playwright

This example uses Node.js and Playwright to open a product page and save a timestamped PNG. It demonstrates capture only: comparison, alert delivery, retention, and recurring execution are separate pieces you configure.

1. Install Playwright

mkdir price-watch
cd price-watch
npm init -y
npm install playwright
npx playwright install chromium

2. Create the capture script

Save this as capture.mjs. Set PRODUCT_URL to the product page you are authorized to access. The script waits for the page’s load event, then allows a short settling period for client-rendered price content. Adjust the delay after inspecting actual captures.

import { chromium } from 'playwright';
import { mkdir } from 'node:fs/promises';

const url = process.env.PRODUCT_URL;
if (!url) throw new Error('Set PRODUCT_URL to the product page URL');

const outputDir = process.env.OUTPUT_DIR ?? 'screenshots';
await mkdir(outputDir, { recursive: true });
const stamp = new Date().toISOString().replaceAll(':', '-');
const outputPath = `${outputDir}/price-${stamp}.png`;

const browser = await chromium.launch({ headless: true });
try {
  const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
  await page.goto(url, { waitUntil: 'load', timeout: 60_000 });
  await page.waitForTimeout(2_000);
  await page.screenshot({ path: outputPath, fullPage: true });
  console.log(`Saved ${outputPath}`);
} finally {
  await browser.close();
}

Run it once manually:

PRODUCT_URL='https://example.com/product' node capture.mjs

The URL above is a placeholder; replace it with the actual product page. Playwright’s documented basic flow is to navigate with page.goto() and save with page.screenshot(). Its visual comparison guidance notes that rendering may vary with operating system, browser version, settings, hardware, and headless mode, so keep the runtime consistent if you compare images. [Playwright Page API; Playwright visual comparisons]

3. Schedule it once a day

Run the script from a machine or hosted runtime that is available at the chosen time. For a Linux system using cron, edit the crontab with crontab -e and add a daily entry, replacing the paths and URL:

0 9 * * * cd /absolute/path/price-watch && PRODUCT_URL='https://example.com/product' /usr/bin/node capture.mjs >> capture.log 2>&1

This runs at 09:00 according to the system’s local time. Set the machine’s time zone deliberately, or use a scheduler that lets you select a time zone. Verify the schedule by checking the first run’s log and output file. Cron is an external scheduler; Playwright itself does not schedule recurring captures.

4. Keep comparison and records meaningful

  • Use the same viewport, browser version, operating system, locale, and runtime for repeat captures where possible.
  • Store the capture time and the intended market or checking location alongside each file. Keep the time zone explicit.
  • Retain enough history to meet your tracking needs, and set a retention limit so image storage does not grow without bound.
  • Review the product identity, variant, currency, price, and availability in each changed capture. A banner, rotating promotion, stock badge, or layout shift can trigger a visual difference without a price change.
  • If you need automated comparisons or notifications, add those separately. A screenshot alone does not extract a structured price or prove that a change is a price drop.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. One GET request returns an image or PDF, and it supports full-page captures and waiting for a selector, delay, or network idle. See the ScreenshotNeo API docs for parameters and examples. This call saves the returned image; scheduling it daily and validating the displayed price remain part of your tracking workflow.

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

Replace the example target with the product URL. The same endpoint can be called from Python:

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)

Or Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

ScreenshotNeo accepts cookie or consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and response headers report page verdict and billing. Its MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. For Indian price tracking, confirm the captured page shows the market, currency, and product variant you intend to track.

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

Troubleshooting

Symptom Likely cause What to do
Price is absent from the image The page renders the price after navigation, or the selected monitor area excludes it. Inspect the preview or screenshot; increase the wait; target the relevant area if supported. For Playwright, wait for a known price selector when the page has a stable one.
Price differs from what an Indian shopper sees The check may use a different network location, delivery region, account state, or product variant. Check the monitor’s selected location and inspect currency, delivery destination, login state, and variant. Do not infer Indian availability from a US-default check.
Many alerts with no actual price change Rotating banners, recommendations, stock messages, or layout changes are included in the monitored area. Narrow the monitored area to the price and availability section if possible, and refine the change criteria. Manually verify each alert.
Playwright times out during navigation The page is slow, the network is unavailable, or the site does not reach the selected load event. Check the URL and runtime connectivity, review the error, and choose an appropriate wait condition for the page. Avoid treating a timeout as a valid capture.
Scheduled capture did not run The host was asleep or offline, the cron path or environment differs from an interactive shell, or the schedule uses an unexpected time zone. Use absolute paths, redirect logs, confirm Node.js and browser installation in the scheduled environment, and verify the host stays available.
Images look different on different days Browser or operating-system updates, fonts, viewport, locale, or headless rendering changed. Keep the capture environment and settings consistent; compare the same viewport and browser version where possible.
Files accumulate indefinitely The script writes a new timestamped image every run with no cleanup policy. Choose a retention period and delete or archive older files on a separate scheduled task.

Performance, reliability, and cost

A once-daily job is modest in request frequency, but total work depends on page weight, browser startup, load delays, image dimensions, and whether the capture is full-page. Do not shorten waits so much that the price is missing; do not wait indefinitely on resources that never settle. A stable selector for the price can make readiness checks more targeted than a fixed delay, when the page exposes one.

For reliability, record each run’s timestamp and outcome, keep logs, and alert yourself when a scheduled run fails or produces no file. A recurring schedule does not guarantee every run succeeds: the host, network, page, and access rules can change. For managed monitors, inspect previews and comparison history and confirm the service’s location and schedule settings.

For cost, a self-hosted workflow uses your compute and storage, whose costs depend on the environment and retention; this research did not establish a provider or cost estimate. Managed-service plan limits and options can change, so check current terms before selecting a plan. ScreenshotNeo’s published options include 1,000 free shots per month without a card, then Starter at $5 for 3,000, Growth at $15 for 15,000, Pro at $39 for 60,000, Scale at $99 for 250,000, and Business at $249 for 1,000,000; yearly billing gives two months free and every feature is on every plan.

Frequently asked questions

Does a screenshot prove that a listed price is available to me?

No. It shows what the page rendered under that request’s location, account, delivery, and variant conditions. Verify those conditions and availability before relying on it.

Can I track a page that requires sign-in?

The workflow depends on the site’s access rules and the monitor or browser’s supported authentication setup. Do not bypass access controls; use only an account and access method you are permitted to use.

Will daily screenshots automatically tell me the numeric price?

No. Screenshot capture records pixels. Structured price extraction, validation, and alerting require an additional workflow.

How should I choose what time the daily check runs?

Choose a time zone explicitly and run at a time when your host is available. If promotions or stock updates have known timing, you can schedule around them, then verify the first few results.