ScreenshotNeo

BlogHow-to

How to Schedule Website Screenshots for Indian E-commerce Price Tracking with VisualScraper

Build a reliable product-page screenshot schedule for Indian e-commerce monitoring, and learn what is and is not verified about VisualScraper.

By the ScreenshotNeo team4 October 202610 min read

To schedule website screenshots for Indian e-commerce price tracking, keep a list of exact product-page URLs, capture each page on a recurring schedule, and save every image with its capture time and viewing configuration. Compare each capture with the previous one and notify reviewers when a meaningful change appears.

VisualScraper is described in available search results as a web data extraction tool with scheduled project runs. The available authoritative documentation does not establish that it can produce scheduled screenshots, configure India-specific browser conditions, or is currently available. Do not assume a VisualScraper project schedule is a screenshot schedule. Verify those capabilities in the product’s current documentation before building around them.

This guide lays out the monitoring workflow, a runnable DIY browser-capture baseline, and a documented scheduled-capture alternative. For recurring captures, visual history, and notification delivery, the available documentation describes Allscreenshots; those capabilities should not be attributed to VisualScraper. For a browser-rendered screenshot API, ScreenshotNeo is another option: it removes consent banners, popups, and chat widgets before capture, and bills only clean shots.

1. Define what you are monitoring

Start with canonical product-page URLs, not a retailer home page or a search-results page. Search results can change order or content independently of the product offer you want to observe.

  1. Choose a small, representative set of product pages.
  2. Record each exact URL, including query parameters that affect the displayed offer. Avoid adding tracking parameters unless they are needed for the page to render the intended state.
  3. Decide which visible changes matter: displayed price, currency, stock status, promotion text, delivery estimate, or a changed product page.
  4. Choose the market conditions to observe, such as language, viewport, and any location or account state that legitimately affects the page.
  5. Set a capture cadence based on how quickly a team needs to react. Hourly and daily schedules are documented examples in Allscreenshots materials; neither is established as optimal for every Indian retailer.

A screenshot records what rendered for one URL and one capture configuration at one point in time. It does not prove that every shopper, region, account, or device saw the same offer.

2. Decide whether VisualScraper can do the screenshot job

Before using VisualScraper for this workflow, confirm all of the following in its current product documentation or account:

  • Scheduled runs produce image screenshots, rather than only extracted fields or exported data.
  • You can provide the exact product-page URL and a recurring cadence.
  • You can set a timezone or otherwise determine the schedule’s timezone.
  • The browser configuration can load the intended regional page state. India-specific routing, currency, language, tax display, and location behavior are not established by the sources available for this guide.
  • Completed images can be retained or exported with timestamps, and changes can be compared or sent to a notification destination.

If any point is unclear, run a single capture manually and inspect the output before scheduling a project. A schedule for extraction is not evidence that screenshot capture is supported.

3. Build a DIY scheduled screenshot baseline with Playwright

The following example uses Playwright with Chromium to capture a list of product pages on demand. A system scheduler can invoke it at the chosen cadence. This is a DIY browser workflow, not a VisualScraper integration. It saves timestamped PNG files; it does not configure Indian geolocation or guarantee that a retailer will show a particular regional offer.

Install

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

Create capture.mjs

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

const urls = [
  'https://www.example.com/product/one',
  'https://www.example.com/product/two',
];
const outDir = new URL('./captures/', import.meta.url);
await mkdir(outDir, { recursive: true });
const browser = await chromium.launch({ headless: true });

try {
  const context = await browser.newContext({
    viewport: { width: 1440, height: 1000 },
    locale: 'en-IN',
    timezoneId: 'Asia/Kolkata',
  });

  for (const url of urls) {
    const page = await context.newPage();
    const startedAt = new Date();
    const stamp = startedAt.toISOString().replaceAll(':', '-');
    try {
      const response = await page.goto(url, {
        waitUntil: 'domcontentloaded',
        timeout: 45000,
      });
      await page.waitForTimeout(1500);
      const safeName = new URL(url).hostname +
        new URL(url).pathname.replaceAll('/', '_');
      const file = `${stamp}_${safeName || 'page'}.png`;
      await page.screenshot({ path: new URL(file, outDir), fullPage: true });
      const metadata = {
        url,
        capturedAt: startedAt.toISOString(),
        status: response?.status() ?? null,
        viewport: { width: 1440, height: 1000 },
        locale: 'en-IN',
        timezone: 'Asia/Kolkata',
        screenshot: file,
      };
      await writeFile(
        new URL(`${file}.json`, outDir),
        JSON.stringify(metadata, null, 2),
      );
      console.log(JSON.stringify(metadata));
    } catch (error) {
      console.error(JSON.stringify({ url, capturedAt: startedAt.toISOString(), error: String(error) }));
    } finally {
      await page.close();
    }
  }
  await context.close();
} finally {
  await browser.close();
}

Replace the example URLs with the exact product pages you are authorized to monitor. The script uses a short fixed wait after the document loads because some pages render prices later; adjust it only after observing the target pages. For a more robust workflow, wait for a stable product or price selector when its selector is known, and record a failed capture instead of silently treating it as a valid image.

Schedule it

For a Linux host with cron installed, edit the crontab with crontab -e and add a daily run at 09:00 in the host’s configured timezone:

0 9 * * * cd /path/to/price-screenshots && /usr/bin/node capture.mjs >> captures.log 2>&1

Check the host timezone and cron implementation before relying on that wall-clock time. This example does not establish a India-specific schedule service or geographic browser routing. For teams that need a named timezone independent of the host, use a scheduler that explicitly supports timezone configuration and verify its behavior around timezone changes.

4. Keep useful evidence with each screenshot

Save enough context for a reviewer to interpret a visual difference. Keep one metadata record per capture, even when the capture fails.

  • Exact page URL and UTC capture timestamp.
  • Capture status, including HTTP status when available, timeout, and error details.
  • Viewport size, locale, timezone, and any configured market or account conditions.
  • Visible price, currency, availability, and promotion text when these can be recorded reliably.
  • Screenshot filename and, if your storage workflow supports it, a content hash to detect duplicate files.

Do not infer a price from pixels without a review step or a separately validated extraction method. A missing or obscured price can reflect a page state, consent dialog, stock change, or load failure rather than a genuine offer change.

5. Compare captures and route useful alerts

Compare each successful capture with the prior successful capture for the same product URL and configuration. A visual diff can help find changes, but layout shifts, rotating banners, timestamps, and personalization can also create differences. Treat the image as evidence for review, not as an automatic price conclusion.

  1. Group captures by exact URL and compatible capture configuration.
  2. Skip or flag failed, blank, blocked, and incomplete pages instead of comparing them as normal product states.
  3. Review changed regions or extracted fields against the previous valid capture.
  4. Notify a team only for the change types that matter to its decision.
  5. Keep a visual history so reviewers can trace a notification back to both images and their timestamps.

Allscreenshots documentation describes scheduled monitoring with visual history and webhook delivery; its guide also describes email or webhook destinations and change-oriented notifications. Those are features of that service, not verified VisualScraper functionality.

6. Configure recurring captures with a documented service

Allscreenshots’ documentation describes ecommerce monitoring on recurring schedules, visual history, and scheduled screenshot configuration. Its scheduling guide describes hourly, daily, and weekly cadence aliases, custom schedules using six-field cron expressions, and timezone configuration. Confirm the current service documentation for exact syntax and account limits before deploying a schedule.

A service-based workflow is:

  1. Add the exact product-page URLs to a monitoring list.
  2. Select a cadence that matches the monitoring decision and your review capacity.
  3. Set the schedule timezone explicitly where supported; record it with the monitoring configuration.
  4. Choose the browser and viewport settings needed to render the intended page state.
  5. Enable history and configure email or webhook notifications if available and useful.
  6. Run a test capture, inspect the image and timestamp, then enable the recurring schedule.

These documented capabilities describe Allscreenshots. They do not prove VisualScraper can capture screenshots, deliver India-localized browser sessions, or support a particular schedule or retention limit.

7. Or skip the browser setup

ScreenshotNeo takes a website URL in one API request and returns a PNG, JPEG, WebP, or PDF. Its capture options include full-page screenshots with lazy images loaded, selector-based element capture, device and viewport settings, wait conditions, custom headers and cookies, timezone and geolocation, caching, asynchronous jobs, bulk capture, and signed webhooks. Use the ScreenshotNeo API documentation for parameters and configuration details.

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}`);

Replace the example target URL with a product URL you intend to capture. Store the API key as a secret, not in source control. ScreenshotNeo removes cookie and consent banners, newsletter popups, and chat widgets before the shot; bot checks, blank pages, failed loads, timeouts, and cache hits are never billed. Each response indicates the page verdict and billing status in headers. Its MCP server lets Claude, Cursor, and other MCP clients use screenshot tools. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Every feature is available on every plan.

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

8. Performance, reliability, and cost

Performance

  • Begin with a small URL set and measure how long representative pages take to load before scaling the schedule.
  • Use a readiness condition appropriate to the page, such as a known product or price selector, where available. Fixed waits are simple but can waste time or finish too early.
  • Full-page captures and lazy-loaded images can take longer and produce larger files than viewport captures. Capture only the page area needed for review.
  • Limit parallel browser work to a level the host can sustain. Too much concurrency can exhaust memory and make captures less reliable.

Reliability

  • Record failures as first-class run results, with URL, timestamp, and cause. Do not substitute an old screenshot without marking it stale.
  • Retry transient timeouts with a limit and delay. Repeated immediate retries can add load without fixing a persistent block or page error.
  • Keep the schedule, its timezone, and the browser configuration under version control or in an auditable configuration record.
  • Review a sample of captures after changing browser version, viewport, locale, selectors, or schedule settings.
  • Retailer pages can vary by location, account, cookies, and time. The available sources do not establish India-specific routing or regional behavior for VisualScraper or Allscreenshots.

Cost and retention

For a DIY workflow, account for compute, browser maintenance, storage, and the time spent reviewing false visual changes. For a managed service, check current per-capture pricing, retention, quotas, bulk limits, and webhook behavior in its own documentation; the dossier does not establish current VisualScraper pricing or limits.

ScreenshotNeo’s stated plans are Free: 1,000 shots per month; Starter: $5 for 3,000; Growth: $15 for 15,000; Pro: $39 for 60,000; Scale: $99 for 250,000; and Business: $249 for 1,000,000. Yearly billing gives two months free. Only clean shots are billed, and cache hits cost nothing. Treat these as the supplied product facts and confirm the current plan page before purchase.

9. Troubleshooting

Symptom Likely cause What to do
No screenshot appears from a VisualScraper scheduled run The configured project schedule may run extraction or export rather than image capture; screenshot support is not verified by the available sources. Check current VisualScraper documentation and confirm a manual run returns an image before setting a recurring schedule.
The capture shows a blank page or loading state The page may need more time, a specific readiness condition, or client-side rendering may have failed. Inspect the run status and browser logs, wait for a stable selector, and mark incomplete captures as failures.
The displayed price or currency is unexpected The page may depend on location, language, cookies, account state, or retailer-side behavior. Record the configuration, verify the intended page in a normal browser session, and do not assume India-specific routing is supported.
The schedule runs at the wrong local time The scheduler may use the host timezone or a different configured timezone. Inspect timezone settings, record the intended zone, and verify a test run’s UTC timestamp against expected local time.
Every capture looks changed Rotating banners, dynamic content, layout shifts, or incompatible viewports may create noise. Keep viewport and locale stable, identify meaningful page regions, and require review before sending alerts.
Repeated timeouts or blocked pages The page may be slow, unavailable, or presenting a bot check or access restriction. Preserve the failure status, use bounded retries, and avoid interpreting the result as a price change. Do not try to bypass access controls.
Capture files become expensive to retain or review Full-page images and frequent schedules multiply storage and review volume. Choose a cadence tied to the decision, retain only useful evidence under your policy, and consider capturing a relevant element where appropriate.

10. FAQ

Can VisualScraper capture a product page automatically?

Available results mention scheduled scraper project runs, but the sources do not verify scheduled screenshot output. Confirm screenshot support directly before relying on it.

Can I track competitor prices across India with screenshots?

You can monitor rendered product pages, but a screenshot only records the state shown to its capture configuration. Regional offer behavior and India-specific browser routing were not established in the researched sources.

Should I schedule captures hourly or daily?

Both are documented cadence examples for Allscreenshots. Pick based on the decision’s response time, page stability, and review capacity; no universal interval is established.

Does a screenshot prove the price changed?

It provides visual evidence of a rendered page at a recorded time. Confirm the relevant price, currency, and availability in context before treating a visual difference as a price change.

Sources