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

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Use a browser capture script and a scheduler, then save each image with its capture time and URL. For an NSE equity page, “before opening” needs a precise meaning: the official pre-open session runs from 9:00 to 9:15 a.m. IST, so a screenshot before that session must be scheduled earlier than 9:00 a.m. IST. If you mean before continuous trading, the relevant target is later; the NSE describes a 9:12–9:15 a.m. buffer/transition period within the pre-open process. A scheduled image records what the page displayed at that moment—it is not an official market-data feed or proof that displayed data is accurate. NSE: Pre-Open Session

Choose what “before opening” means

The NSE’s official equity pre-open session is 9:00–9:15 a.m. IST. It is the period in which the exchange’s pre-open process determines an equilibrium/opening price, subject to the exchange’s stated cases where no price is discovered. If your requirement is to preserve a page before pre-open begins, arrange for the capture to finish before 9:00 a.m. IST. If you only need it before continuous trading, set a later deadline that accounts for the pre-open process and its 9:12–9:15 buffer/transition period. The exchange notes timing may be handled separately in certain circuit-filter or outage circumstances, so a fixed screenshot time cannot establish the status of every trading day. NSE pre-open details

Choose a capture time with room for navigation, scripts and page content to render. A site may not have refreshed its market data by your chosen time, and a scheduler’s start time is not a guarantee that the screenshot will be completed by a deadline.

Free tools Windows power users keep installed

One-click scans. No signup required.

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

Pick a capture and scheduling method

Method Good fit Trade-offs to account for
Local Playwright script plus an operating-system scheduler You want control over browser setup, capture scope and local file storage. The computer must be powered on and able to launch the browser at the scheduled time. You maintain the script, browser runtime and failure checks.
GitHub Actions running Playwright You want a hosted code workflow and run history without leaving a local computer on. Scheduled workflow runs use cron; schedules run in UTC by default unless a time zone is configured. GitHub warns of delays under load, especially at the start of an hour, and sufficiently high load can cause queued runs to be dropped. Do not treat it as an exact-deadline service.
Managed screenshot service You prefer a hosted capture and scheduling interface over maintaining a browser runtime. Check the current service’s time-zone handling, retention, retries, storage and failure visibility. Vendor descriptions are not independent reliability evaluations.

Playwright supports viewport, full-page and selected-element screenshots. Site-Shot describes daily or weekday schedules using UTC, with scheduling on paid plans, and says its renderer visits public pages as a logged-out visitor. ScreenshotAPI.net describes recurring server-side captures and stored results. These are service descriptions, not a guarantee that any service will capture a particular page successfully or by an exact deadline. Playwright screenshot documentation, Site-Shot scheduling guide, ScreenshotAPI.net scheduling

Build a daily capture with Playwright

1. Install Playwright

In a new project, install Playwright and its Chromium browser. The commands below are for Node.js with npm:

  1. npm init -y
  2. npm install playwright
  3. npx playwright install chromium

2. Save a capture script

Create capture.mjs. Replace the example URL with the public page you want to record. This script waits for the page’s load event, allows a short settling interval for client-rendered content, writes a full-page PNG, and logs a timestamp and URL. The settling interval is not proof that the site’s market data has refreshed; inspect results and adjust the readiness condition for the site.

import { chromium } from 'playwright';

const url = process.env.TARGET_URL ?? 'https://www.nseindia.com/';
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({ viewport: { width: 1440, height: 1000 }, deviceScaleFactor: 1 });

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

try {
await page.goto(url, { waitUntil: 'load', timeout: 60000 });
// Let client-side rendering settle; this does not verify data freshness.
await page.waitForTimeout(3000);
const timestamp = new Date().toISOString().replaceAll(':', '-');
const filename = `captures/market-${timestamp}.png`;
await page.screenshot({ path: filename, fullPage: true });
console.log(JSON.stringify({ capturedAt: new Date().toISOString(), url, filename }));
} finally {
await browser.close();
}

Create the output directory before running: mkdir -p captures. Run a test manually with TARGET_URL='https://www.nseindia.com/' node capture.mjs. Choose fullPage: false for only the visible viewport, or capture one relevant component rather than an entire page:

const chart = page.locator('YOUR_PAGE_SELECTOR');
await chart.screenshot({ path: filename });

Replace YOUR_PAGE_SELECTOR with a selector that exists on the target page. Playwright documents the available screenshot forms and options, including full-page and element screenshots. Playwright: Screenshots

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

3. Schedule it on a local computer

For a local schedule, use your operating system’s scheduler to run the script at the chosen time. On a Unix-like system with cron, a weekday run at 8:45 a.m. IST can be expressed as:

Rank #3
USA News Radio - 1.000+ Live Streams
  • 1000+ USA News Radio stations
  • Easy to use
  • High quality
  • Broadest selection
  • Top performance, security and functions

45 8 * * 1-5 cd /path/to/project && TARGET_URL='https://www.nseindia.com/' /usr/bin/node capture.mjs

This example assumes the machine’s cron time zone is IST and that Node.js is at /usr/bin/node; verify both on your system. Change the day field if you want calendar-day captures, or use your scheduler’s explicit time-zone setting where available. A weekday schedule does not automatically skip NSE exchange holidays.

4. Or schedule it with GitHub Actions

For a hosted code workflow, commit the script and package files to a repository, then add .github/workflows/daily-capture.yml. This example uses GitHub’s time-zone field to schedule weekdays at 8:45 a.m. India time. Scheduled-workflow availability and behavior depend on GitHub’s current documentation and repository configuration; verify that the workflow is enabled.

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

name: Daily market page capture

on:
schedule:
- cron: '45 8 * * 1-5'
timezone: 'Asia/Kolkata'
workflow_dispatch:

jobs:
capture:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx playwright install --with-deps chromium
- run: mkdir -p captures
- run: node capture.mjs
env:
TARGET_URL: https://www.nseindia.com/
- uses: actions/upload-artifact@v4
with:
name: market-captures
path: captures/*.png
if-no-files-found: error

GitHub Actions cron schedules are UTC by default unless a time zone is configured. GitHub warns that schedules may be delayed under load, particularly at the start of an hour, and sufficiently high load can drop queued runs. Avoid a top-of-hour schedule when timing matters, and do not rely on Actions for a guaranteed pre-open deadline. See GitHub Actions workflow events and schedules.

Make the archive useful and safe

  • Keep a fixed URL, viewport and capture scope if you want images that can be compared day to day.
  • Use timestamped filenames and retain the URL and run log alongside each image so a missing or unexpected capture can be investigated.
  • Choose a storage location and retention period deliberately. Hosted workflow artifacts and managed-service archives have their own retention behavior; check the current documentation rather than assuming permanent storage.
  • Monitor failed runs and periodically inspect images for consent overlays, login prompts, changed layouts, blocked access or pages that appear before dynamic content loads.
  • Capture public pages unless you have deliberately secured credentials, automation and image storage. Do not accidentally preserve account details or other sensitive information.
  • Choose calendar-day versus weekday scheduling intentionally. A generic weekday schedule can still run on an exchange holiday; use the current official holiday calendar if the distinction matters.

Pages with dynamic content can vary because rendering and load times vary. A consistent capture setup improves comparability, but it cannot turn a screenshot into a verified record of the underlying market data. Site-Shot notes dynamic-content and loading-time variation.

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

Troubleshooting missed or misleading captures

  • No image is saved: Check that the output directory exists and that the scheduled process runs from the project directory. Read the run log for browser installation, navigation or permission errors.
  • The image is blank or incomplete: The page may still be rendering, or its content may require a different readiness condition. Wait for a meaningful page element when possible, increase the timeout if navigation is slow, and review the saved image rather than assuming a fixed delay is sufficient.
  • A login, consent prompt or blocked page appears: Confirm that the target is genuinely public and inspect it in a normal browser. Some sites treat automation differently. Do not attempt to bypass access controls; use a permitted public page or another authorized source.
  • The job starts late: Local jobs depend on the computer being available. GitHub Actions schedules can be delayed under load, so add time before the deadline and inspect the workflow run history.
  • Runs happen on holidays or weekends unexpectedly: Cron expresses a schedule, not exchange-calendar logic. Add a current holiday-calendar check if non-trading-day captures should be skipped.
  • The screenshot differs from yesterday’s: First compare URL, viewport, capture scope and timestamp. Then check for page redesigns, dynamic content, overlays and load timing before concluding that the underlying figures changed.
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 is a website screenshot API and MCP server. A single GET request returns an image or PDF; the API captures a page on request, so use a scheduler or your own automation to make it recur at the time you need. See the ScreenshotNeo API documentation for options and setup.

cURL example for a page capture (save your API key securely and replace the example target URL):

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

Python equivalent:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://www.nseindia.com/"}, timeout=90)
open("shot.webp", "wb").write(r.content)

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

Node.js equivalent:

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

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

Sign up for ScreenshotNeo’s free plan to try 1,000 screenshots a month with no card.

Frequently Asked Questions

Does a screenshot prove that an NSE page showed the correct market data?

No. It records the page’s appearance at capture time, not an authoritative or independently verified data feed.

Will a weekday schedule skip NSE holidays automatically?

No. A weekday cron schedule does not by itself apply the exchange holiday calendar.

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

Quick Recap

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.