ScreenshotNeo

BlogHow-to

How to Schedule Screenshots of Indian Ecommerce Product Pages During Sale Events

Schedule screenshots for storefronts you own or are authorized to capture. Check permission and time zones before automating sale-event captures.

By the ScreenshotNeo team4 October 202610 min read

Direct answer: For product pages you own or have explicit permission to capture, schedule a browser screenshot job for the sale-event time, confirm which time zone the scheduler uses, and run a harmless test capture first. Do not assume automated monitoring of Amazon.in or Flipkart product pages is permitted: their published terms restrict automated monitoring or systematic extraction unless the access method is purposely made available or you have permission.

This guide covers the workflow for authorized pages, a runnable self-hosted scheduler, time-zone checks, common failures, and a one-call option for individual captures. A scheduler does not grant permission to access a page.

1. Check permission before scheduling

Start by defining the pages and purpose of the capture. Ownership or explicit authorization is the right basis for routine screenshot automation. For marketplace pages, check the current terms and any official access method or written permission before automating.

Flipkart’s terms prohibit using a page scrape, robot, spider, or other automated process to access, copy, or monitor site content through means not purposely made available. Amazon’s seller-site terms restrict data-mining and systematic extraction without express written consent. These are substantive limits, not technical hurdles a scheduler or screenshot API can bypass. Read the current Flipkart Terms of Use and Amazon Seller Terms of Use before acting.

If you operate an affiliate site, Amazon Associates India also says price-tracking or price-alert functionality is disallowed unless otherwise agreed, and disallows artificially generating sessions through robots or software. Review the Amazon Associates participation requirements if that applies.

  • Store you own or are authorized to capture: Use a scheduler for the approved pages and purpose; record the authorization and capture times.
  • Amazon.in or Flipkart listing: Do not set up routine automated capture unless the platform has made that access method available or you have permission.
  • Need marketplace information: Look for an official interface or request written authorization. This guide does not establish that a particular API or screenshot service is approved for those pages.

Amazon Creator Central has a feature for scheduling shoppable posts around selected times and shopping events. That schedules publication of creator content; it is not a screenshot scheduler. See the Amazon India announcement for the feature it describes.

2. Define the event time and time zone

Write down the intended event time with an explicit zone, such as 2026-10-10 00:05 Asia/Kolkata. Confirm whether the scheduler follows the host machine, browser, account, or store time zone. Do not rely on a bare local time or an assumption that the operator’s computer is set correctly.

Time-zone interpretation matters for scheduled store events too: Shopify’s bot-protection documentation distinguishes the store’s time zone from the operator’s browser time zone. That documentation concerns bot protection, not screenshot capture, but it illustrates why the scheduler’s time-zone setting needs verification. See Shopify’s bot-protection guidance.

  1. Choose the event instant and record it with its zone.
  2. Inspect the scheduler’s time-zone setting and determine whether it expects a named zone or an offset.
  3. Schedule a harmless test capture well before the sale window.
  4. Compare the recorded execution time with the intended instant, including the date and zone.
  5. Keep the page, purpose, authorization reference, scheduled time, and result together so later screenshots have context.

For India, Asia/Kolkata is commonly used as the IANA time-zone identifier. A fixed UTC offset can be less clear to a human reader; use the scheduler’s supported named zone when available, and verify its behavior rather than assuming support.

3. Schedule a screenshot for an authorized page

Here is a minimal self-hosted example using Python, Playwright, and the system cron scheduler. It captures one authorized URL at a specified instant in Asia/Kolkata. It is a generic browser-automation example, not an endorsement or permission to automate any marketplace page.

Install the browser automation dependency

python -m venv .venv
. .venv/bin/activate
pip install playwright
playwright install chromium

Create the capture script

Save as capture.py. Set CAPTURE_URL to a page you own or are authorized to capture, and set OUTPUT_PATH to a writable location.

import asyncio
import os
from pathlib import Path
from playwright.async_api import async_playwright

async def main():
    url = os.environ["CAPTURE_URL"]
    output = Path(os.environ.get("OUTPUT_PATH", "sale-page.png"))
    output.parent.mkdir(parents=True, exist_ok=True)

    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page(
            viewport={"width": 1440, "height": 1000},
            device_scale_factor=1,
            timezone_id="Asia/Kolkata",
        )
        response = await page.goto(url, wait_until="domcontentloaded", timeout=60000)
        if response is None:
            raise RuntimeError("Navigation returned no main-document response")
        if response.status >= 400:
            raise RuntimeError(f"Page returned HTTP {response.status}")
        await page.locator("body").wait_for(state="visible", timeout=30000)
        await page.screenshot(path=str(output), full_page=True)
        print(f"Saved {output}; HTTP {response.status}; URL {page.url}")
        await browser.close()

asyncio.run(main())

The script waits for the main document and visible body, then saves a full-page PNG. Some storefront content loads after the document event. If you own the page, use a page-specific selector as a readiness condition, or add a short delay only when you have verified that it is needed. Avoid relying on network-idle as a universal signal: analytics, chat, and other long-running requests can prevent it from occurring.

Set environment variables and test once

export CAPTURE_URL='https://your-authorized-store.example/products/example'
export OUTPUT_PATH='/var/tmp/sale-capture.png'
python capture.py

Open the result and confirm that the expected product page, price or event content, and full-page layout are present. A successful file write alone does not prove that the intended page was captured.

Schedule with cron

For a one-time event, a cron entry is a simple option if the machine is running and its local clock is correct. Cron uses the host’s scheduling configuration; make the host zone explicit and verify the next run. For example, on a Linux host configured for India time:

CRON_TZ=Asia/Kolkata
5 0 10 10 * CAPTURE_URL='https://your-authorized-store.example/products/example' OUTPUT_PATH='/var/tmp/sale-capture.png' /path/to/project/.venv/bin/python /path/to/project/capture.py

This example runs at 00:05 on October 10 in years when the date matches. For a specific year, remove the entry after it runs or use a scheduler that supports a one-time dated job. Cron implementations differ in their CRON_TZ support; check the installed cron documentation and confirm the next execution time with a harmless test. If the host or cron does not support the zone setting, configure the machine’s time zone deliberately or use a scheduler with an explicit zone field.

Choose capture behavior deliberately

  • Viewport or full page: Full-page screenshots include content below the fold, but pages with infinite scrolling may grow unpredictably. A fixed viewport gives more consistent dimensions.
  • Readiness: Prefer a meaningful page-specific element on pages you control. A fixed delay is simple but can be too short on a slow event page or unnecessarily long on a fast one.
  • Authentication: Only use accounts and credentials you are authorized to use. Store secrets outside source code and restrict access to any saved browser state.
  • Output: Use a unique timestamped filename if multiple captures are scheduled, and ensure the destination has enough disk space.
  • Frequency: Schedule only the minimum captures needed for the approved purpose. Repeated captures do not change the permission basis.

4. Capture one authorized page with ScreenshotNeo

ScreenshotNeo is a website screenshot API and MCP server. For an individual authorized capture, its API accepts a URL in one GET request and returns an image or PDF. See the ScreenshotNeo API documentation for parameters and formats. The request below captures an authorized page; it does not schedule recurring jobs or establish permission to access a marketplace.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://your-authorized-store.example/products/example -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://your-authorized-store.example/products/example"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://your-authorized-store.example/products/example' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: HTTP ${res.status}`);
await require('node:fs/promises').writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));

These examples perform immediate captures. For event scheduling, invoke the request from your authorized scheduler at the verified event time. Keep the key in a secret store or environment variable in your own deployment, and check the response headers described in the documentation to distinguish clean captures from other page outcomes.

Or skip the browser setup

For an authorized page, one API call can return the screenshot without installing and managing a browser:

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

Cookie and consent banners are accepted and removed before capture, along with 60+ known consent platforms, newsletter popups, and chat widgets; each step can be turned off. Bot checks, blank pages, timeouts, and failed loads are not billed, and cache hits cost nothing. An MCP server lets AI agents use screenshot tools. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. These features do not override a site’s access terms, and the API call itself is not a scheduler.

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

5. Reliability, performance, and cost

Reliability

  • Use a scheduler host that will be online at the event time; a laptop that sleeps cannot run a local job.
  • Record the intended time zone and the actual execution time. Alerting and logs should make missed runs visible.
  • Use a unique output name and verify that the file is non-empty and corresponds to the expected page.
  • Plan for retries carefully. A transient network failure may justify a retry for an authorized page, but avoid rapid repeated requests and do not treat retries as permission.
  • Keep credentials out of logs and source control. Limit access to screenshots if they contain account or customer information.

Performance

Browser startup and page loading usually dominate the work in a one-off capture. Reusing a browser process can reduce startup overhead for a batch of authorized pages, while separate browser contexts help isolate cookies and session state. Full-page capture can require extra layout and rendering work, especially for long or lazy-loaded pages. Prefer a targeted element or fixed viewport when that is sufficient for your authorized purpose.

Cost

A self-hosted job has infrastructure, maintenance, and storage costs even if the browser library itself is available without a per-screenshot charge. A hosted API trades browser operations for usage-based plan limits. ScreenshotNeo’s listed plans are Free: 1,000 shots/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, and every feature is on every plan. Only clean shots are billed; responses include page-verdict and billed headers. Check the documentation and current plan details before choosing a capture workflow.

6. Troubleshooting

Symptom Likely cause Fix
Capture runs at the wrong hour The scheduler follows the host, account, browser, or store zone rather than the assumed zone. Set or confirm the supported zone explicitly, then run a test and compare the actual timestamp.
No screenshot file appears The job used a different working directory, lacks write permission, or the host was asleep/offline. Use an absolute output path, check scheduler logs and filesystem permissions, and keep the host available.
Browser executable is missing Playwright’s Chromium browser was not installed in the same environment used by the job. Run playwright install chromium in the deployment environment and use the intended virtual environment’s Python path.
Navigation times out Slow network, an unresponsive page, or a wait condition that never completes. Check connectivity and the target page; use a bounded timeout and a specific readiness condition. Do not continually retry an unauthorized or blocked page.
Screenshot is blank or incomplete The page content is client-rendered, lazy-loaded, or captured before the relevant element appears. For a page you control, wait for a stable product element or load the required content before capture; verify the result before the event.
HTTP 403, CAPTCHA, or bot check appears The site denied or challenged automated access. Stop and check permission and approved access methods. Do not attempt to evade access controls.
Works manually but not in cron Different PATH, environment variables, Python environment, or working directory. Use absolute paths, provide required variables in the job configuration, and run the command as the scheduler’s user.
Output overwritten by a later run Every execution writes the same filename. Include the scheduled instant in the filename and retain only the period needed for the approved purpose.

7. Frequently asked questions

Can I schedule Amazon.in or Flipkart screenshots with this method?

Only if the platform has made the access method available or you have the necessary permission. The fact that a browser can load a page does not mean automated monitoring is allowed.

Does Amazon Creator Central schedule product-page screenshots?

No. The cited announcement describes scheduling shoppable posts, which is a publishing feature.

Does ScreenshotNeo schedule recurring captures?

The API examples here make individual captures. You can call an API from a scheduler for pages you are authorized to capture, but the call does not itself create a recurring schedule.

How do I know the scheduler used India time?

Check its documented zone setting, use an explicit zone such as Asia/Kolkata if supported, and verify with a test run before the sale.

Is a screenshot sufficient evidence of the price at a particular instant?

A screenshot records a rendered view, but this guide does not establish evidentiary or legal requirements. Preserve the timestamp and context, and determine what records your use case requires.