How to Save Screenshots of Indian Government Web Portals for a Compliance Report
Capture government portal pages with a clear record of URL, time, and context. Preserve originals and understand when legal review may be needed.
For a compliance report, capture the relevant government portal page in its browser view, save the original screenshot without alteration, and keep it with a log recording the full URL, capture time and time zone, page title, operator, and browser/device context. Preserve any publication, effective, or review date shown on the page. If the screenshot may be submitted as evidence in India, get advice from the responsible legal team: a screenshot alone does not guarantee admissibility.
This guide covers a repeatable manual workflow, a browser-automation option, what to record, how to preserve the capture, and the legal distinction under the Bharatiya Sakshya Adhiniyam, 2023 (BSA). It is practical information, not legal advice.
1. What a compliance screenshot should establish
A screenshot is most useful when a reviewer can tell what page was captured, when it was captured, who captured it, and which part of the report it supports. The image alone may not answer those questions, so treat it as one item in a small capture package.
| Record | What to include |
|---|---|
| Page identity | Portal or department name, page title, and full URL, including relevant path and query string. |
| Time | Capture date and time, including time zone. Use a consistent clock source and timestamp format across the report. |
| Page context | Any visible publication, effective, issue, or last-reviewed date. Record if no such date is displayed when that matters to the report. |
| Provenance | Operator and browser/device context, such as browser name and version, operating system, and viewport or device type. |
| Capture reference | A stable file name or report item ID that links the image to its capture-log entry. |
GIGW 3.0 guidance calls for dates on important content and addresses archiving and review of expired material. It also recognizes gov.in and nic.in as indicators of official government website identity. Those details help identify and contextualize a capture; they do not by themselves prove page authenticity or legal status. See the Guidelines for Indian Government Websites (GIGW).
2. Manual capture workflow
- Open the exact page. Navigate to the page relevant to the compliance point. Check that the portal and content match the report item. If you arrive through a redirect, record the final URL and, where useful, the starting URL and redirect.
- Record page details. Copy the full address from the browser, note the page title and department, and record visible publication or review dates. Do this before capture so the log reflects the page as viewed.
- Record the capture context. Note the operator, browser and version, device or operating system, viewport, and timestamp with time zone. A practical ISO 8601 format is
2026-10-04T14:30:00+05:30; use the actual capture time and offset. - Capture the relevant view. Use the operating system’s screenshot function or browser capture facility. Ensure the relevant text and page identity are readable. If the information continues below the fold, capture additional views or a full-page image; do not let a partial image imply that it shows the whole page.
- Save the original. Keep the image in its native output format. Do not crop, annotate, compress, or overwrite this original. If annotations help the report reader, create a separate working copy and label it clearly.
- Link image and log. Give the file a stable name that includes a report or case reference and timestamp, then store the image and log entry together.
- Review the package. Open the saved file, check legibility and completeness, and confirm that its filename and log entry match. This is a handling check, not proof that the site content was authentic.
Example capture log
Report item: COMP-2026-014
Portal/department: [name]
Page title: [title shown in browser]
Full URL: https://example.gov.in/path?parameter=value
Redirect observed: [none / starting URL to final URL]
Captured at: 2026-10-04T14:30:00+05:30
Operator: [name or role]
Browser/version: [browser and version]
Device/OS: [device and operating system]
Viewport: [width × height; device scale if known]
Page-displayed date: [publication/review date or not displayed]
Screenshot file: COMP-2026-014_20261004T143000+0530.png
Notes: [relevant context or capture limitation]
The example values are placeholders. No particular log template or screenshot format is prescribed by the sources summarized here; adapt the fields to your organization’s process.
3. Capture with browser automation
For repeat captures, browser automation can make viewport and file naming consistent. The following Playwright example opens a page and saves a full-page PNG. Install Playwright and its browser first with npm install playwright and npx playwright install chromium. Save this as capture.mjs, then run node capture.mjs https://example.gov.in/path.
import { chromium } from 'playwright';
import { writeFile } from 'node:fs/promises';
const url = process.argv[2];
if (!url) throw new Error('Usage: node capture.mjs https://example.gov.in/path');
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({
viewport: { width: 1440, height: 1000 },
deviceScaleFactor: 1,
});
const page = await context.newPage();
const response = await page.goto(url, {
waitUntil: 'domcontentloaded',
timeout: 60000,
});
try {
await page.screenshot({ path: 'capture-original.png', fullPage: true });
const metadata = {
requestedUrl: url,
finalUrl: page.url(),
title: await page.title(),
capturedAt: new Date().toISOString(),
httpStatus: response?.status() ?? null,
browser: 'Playwright Chromium',
viewport: { width: 1440, height: 1000 },
screenshot: 'capture-original.png',
};
await writeFile('capture-log.json', JSON.stringify(metadata, null, 2));
} finally {
await browser.close();
}
This script is a capture aid, not an evidence-certification tool. It records UTC time from the machine clock; if your report requires a different time zone, record the offset explicitly and use your organization’s approved time source. It also does not verify that all dynamic content finished loading. Inspect the saved page and log, and adapt waiting to the portal’s behavior.
Full-page, viewport, and element captures
- Viewport: captures only what is visible in the browser window. Use it when the relevant content fits on one screen and visible browser context is useful.
- Full page: captures a tall page in one image. Check the result for lazy-loaded sections, sticky headers, repeated content, and layout changes during scrolling.
- Multiple views: use sequential screenshots when a long page becomes too small to read in a single full-page image. Label their order and keep the complete set together.
- Element: a selector-specific capture can isolate a table or notice, but keep enough surrounding context to identify the page. Retain a broader page capture if the report needs to show where the element appeared.
4. Preserve the original and its context
Keep the original image unchanged, together with its capture log and the report item it supports. If you need highlights, redactions, or crops for readability, create a separate derivative, retain the original, and identify the derivative as edited.
Where organizational rules require it, keep a second copy under controlled access and record transfers or custody changes. A USB flash drive can serve as an optional storage medium for a copy; it is not required for capture, is not secure by itself, and does not prove authenticity or admissibility. Apply your organization’s access, encryption, retention, and backup policies.
For recurring preservation, an organization may record a cryptographic hash using its approved procedure to help detect later file changes. Government digital preservation guidance discusses fixity, provenance, cataloguing, representation, digital signatures, access rights, and the lifecycle from creation and capture through trusted storage and preservation. This is a useful model for a records workflow, not a rule requiring a particular hash algorithm for every screenshot. A hash can help detect a changed file; it does not establish what a portal displayed.
Portal content may later move to an offline archive or be removed under the department’s content policy. A dated capture can therefore help preserve the context of a time-sensitive notice. It does not replace the portal’s own archived record or prove that the captured page was authoritative.
5. Assemble the compliance report appendix
- Give each screenshot a report item or exhibit reference.
- Add a concise caption with the page title, full URL, timestamp and time zone, and the compliance point it supports.
- State whether the portal displayed a publication, effective, or review date, where relevant.
- Link the caption to the corresponding capture-log entry and retain the original image.
- For a long page, include the ordered set of views needed to show the relevant content without suggesting a partial image is complete.
- Follow internal retention and access rules for both the report and the preserved capture package.
Example caption
Item COMP-2026-014. Department [name], “[page title],” [full URL], captured 2026-10-04 at 14:30 IST (UTC+05:30) by [operator], using [browser/version] on [device/OS]. The page displayed a last-reviewed date of [date]. This image supports [specific report point]. See capture-log entry COMP-2026-014.
6. What Indian evidence law says about website screenshots
The BSA distinguishes recognition of electronic records from proof of their contents. Section 61 says an electronic or digital record is not denied legal effect solely because it is electronic, subject to section 63. Section 62 says the contents of electronic records may be proved in accordance with section 63. Section 63(1) addresses computer output, including information stored, recorded, or copied in electronic form, when statutory conditions are met.
Section 63(4) provides for a certificate when a statement is given in evidence by virtue of section 63. It is to accompany the electronic record at each instance it is submitted for admission and identifies the record, describes how it was produced, gives appropriate particulars of devices involved, and addresses the conditions in section 63(2). Read the Bharatiya Sakshya Adhiniyam, 2023 on India Code and have the responsible legal professional confirm how the provision applies to the specific record and proceeding.
A presentation by Dr. M. S. Deshpande, Additional Director, Maharashtra Judicial Academy, discusses proving website content with printouts or screenshot printouts and says section 63(4) certification is necessary. This is judicial training material, not a court holding or the text of the statute. The practical conclusion is not a universal yes or no: whether a certificate and what handling steps are required depends on the evidentiary route and circumstances. A screenshot, printout, or storage device alone does not guarantee admissibility.
7. Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. One GET request can return a screenshot or PDF. For a capture workflow, keep the returned file with your own report reference, capture log, and review process; an API response does not replace provenance records or any legal certificate that may apply.
See the ScreenshotNeo API documentation for request options. This cURL example captures the target URL to WebP:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.gov.in/path -o shot.webp
Python:
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.gov.in/path"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://example.gov.in/path',
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await import('node:fs/promises').then(({ writeFile }) =>
writeFile('shot.webp', Buffer.from(await res.arrayBuffer()))
);
Cookie banners, newsletter popups, and chat widgets are removed before the shot; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers say the page verdict and whether the shot was billed. An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Every feature is on every plan. Create a free ScreenshotNeo account.
8. Troubleshooting capture problems
| Problem | Likely cause | What to do |
|---|---|---|
| Screenshot is blank or shows a loading shell | The page relies on client-side rendering, a slow API, or a failed navigation. | Wait for the specific content or selector, inspect the page in a browser, and recapture. Record any persistent failure rather than presenting the blank image as the intended page. |
| Notice or table is missing | Content loaded after the capture, appeared only after interaction, or was lazy-loaded below the fold. | Wait for a meaningful selector, scroll to load relevant content, or capture additional views. Verify the saved file. |
| Full-page capture is unreadable | The page is very tall and the image scales down in the report. | Capture several readable viewport images with order labels, and retain a full-page copy only if it adds useful context. |
| URL in the log differs from the captured page | The portal redirected, changed query parameters, or navigated after load. | Record requested and final URLs and recapture from the relevant canonical page if needed. |
| Timestamp or time zone is unclear | The machine clock or log format does not identify an offset. | Use a consistent time source and record an explicit offset or named time zone. Preserve the raw timestamp and avoid silently converting it. |
| Image was edited after capture | Annotations or cropping overwrote the source file. | Recapture if possible; otherwise clearly disclose the limitation. For future captures, keep an immutable original and edit a separately named copy. |
| Automated capture times out | The site is slow, intermittently unavailable, or waits on resources that do not finish. | Use a suitable timeout and wait condition, then inspect the result. Do not assume a timeout screenshot represents a completed page. |
| Portal asks for authentication or blocks automation | The content is restricted or the site has access controls or bot defenses. | Use an authorized, ordinary browser session and follow the portal’s terms and organizational policy. Do not bypass access controls; document that the content could not be captured if necessary. |
9. Performance, reliability, and cost
Manual capture is usually sufficient for a small number of pages and makes it easy for an operator to inspect context. Automation helps standardize repeated captures, but adds browser setup, maintenance, and failure modes such as navigation timeouts and dynamic content that has not loaded. Full-page images can be large and difficult to read; several focused screenshots may work better in a report.
For either method, use a stable timestamp convention, preserve the original, verify the saved file, and keep the log adjacent. For recurring or high-volume work, define retries, duplicate handling, access control, retention, and failure reporting before relying on a script. A successful file write does not prove the page loaded correctly.
ScreenshotNeo’s listed plans are Free: 1,000 shots/month with no card; 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. These are service plan prices and do not determine legal sufficiency or records-management requirements.
10. Frequently asked questions
How do I prove what a government website showed on a certain date?
Preserve the unaltered capture together with its URL, timestamp and time zone, page title, operator, and browser/device context. If the matter involves formal evidence, ask the responsible legal professional about the required process; the capture package alone does not settle admissibility.
Do screenshots of a government website need a certificate in India?
There is no safe universal yes-or-no answer for every use. BSA section 63(4) addresses a certificate when a statement is given in evidence under section 63. Get case-specific legal guidance before evidentiary submission.
Is a gov.in or nic.in address enough to prove a page is official?
GIGW identifies these domains as indicators of government website identity. That indicator helps with context but does not independently prove the authenticity or legal status of a particular capture.
Should I submit a full-page image or several screenshots?
Choose the form that keeps the relevant material readable and makes page coverage clear. For long pages, sequential views often communicate details better; retain the log and identify the sequence.
Does a hash make a screenshot admissible?
No. A hash can help detect later file changes under an approved process, but it does not prove what the portal displayed or replace legal requirements.


