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.
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
#1 Best Overall
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:
npm init -ynpm install playwrightnpx 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 });
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
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →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
- 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.
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.
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.
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.
Best Value
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)
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →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_infoandcapture_pdftools 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.
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.

