ScreenshotNeo

BlogHow-to

How to Monitor an Indian Hospital Website for Doctor Availability Changes

Track changes to a public OPD schedule, then verify doctor, location and bookable slots through the hospital’s official appointment channel.

By the ScreenshotNeo team4 October 20269 min read

To monitor doctor availability changes, watch the hospital’s official public doctor listing or OPD schedule page, then verify any alert in the hospital’s official booking channel or by calling its published number. A schedule change does not prove that a doctor has a bookable slot or that an appointment is confirmed. Check the specific site’s terms and access controls before using an automated monitor.

This guide shows how to set up a careful manual or automated workflow, how to interpret alerts, and how to take periodic screenshots of a public schedule page. It does not promise real-time alerts or compatibility with every hospital website.

1. Know what you are monitoring

Indian hospitals may publish doctor timings, OPD schedules, and appointment information through separate pages or systems. The Government of India’s ORS portal describes appointments at participating hospitals, where hospitals provide slots and patients select a hospital, department, and date. VMMC & Safdarjung Hospital’s official website has a separate “OPD Schedule” section and online booking link. These examples show why a published schedule and current appointment availability should be treated as different signals: ORS Patient Portal and VMMC & Safdarjung Hospital.

  • Schedule: published information about a doctor’s timing, department, or OPD day.
  • Availability: whether an appointment slot remains bookable through the hospital’s own system.
  • Confirmation: the hospital or booking provider’s confirmation for a specific appointment.

Appointment timings can be indicative and subject to change. Apollo 24|7’s terms, for example, state that appointment timing may change and appointments can be rescheduled or cancelled. Medanta’s terms say doctor-specific services depend on availability and describe confirmation by SMS or email. These are provider-specific conditions, not a universal promise for every hospital: Apollo 24|7 terms and Medanta terms.

2. Prepare a safe, useful monitor

  1. Find the official page. Start at the hospital’s own website. Locate the doctor listing, OPD schedule, or relevant department page. Confirm the hospital branch, city, department, and doctor identity.
  2. Record the baseline. Save the exact public URL and note when you checked it. Record the displayed schedule, any “last updated” date, and the schedule’s effective period.
  3. Read the rules for that site. Check its terms and any published access controls. Permission to view a page does not automatically grant permission to scrape, republish, or use its information commercially. Apollo 24|7’s platform terms, for instance, restrict commercial use of platform information; that is an Apollo-specific term, not a general rule for every hospital.
  4. Choose the least intrusive method that works. Manual checks are suitable for infrequent updates. A page-change alert or scheduled capture may help when the page is public and automated access is permitted. There is no universally appropriate check interval: choose a conservative cadence consistent with the site’s terms.
  5. Keep the monitored page narrow. Watch the relevant schedule page or doctor section rather than the entire site. If the tool supports selecting an element, monitor the schedule container so rotating banners and unrelated page changes are less likely to alert.
  6. Keep private information out. Do not give a monitoring service patient credentials, one-time passwords, account cookies, or health details. A public schedule check should not require those secrets.

3. Set up a scheduled screenshot check with code

A screenshot monitor can give you a visual record of a public page at each check. The example below uses Playwright with Node.js. It opens the URL, waits for the page to settle, and saves a full-page PNG. It does not bypass logins, bot checks, or access controls. Use it only when automated access is allowed by the target site.

Install and run

mkdir hospital-schedule-watch
cd hospital-schedule-watch
npm init -y
npm install playwright
npx playwright install chromium

Save as capture.mjs:

import { chromium } from 'playwright';

const url = process.env.SCHEDULE_URL;
if (!url) throw new Error('Set SCHEDULE_URL to the public hospital schedule URL');

const browser = await chromium.launch({ headless: true });
try {
  const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
  const response = await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 45000 });
  if (!response || !response.ok()) {
    throw new Error(`Page returned ${response?.status() ?? 'no response'}`);
  }
  await page.locator('body').waitFor({ state: 'visible', timeout: 15000 });
  await page.screenshot({ path: 'schedule.png', fullPage: true });
  console.log(`Saved schedule.png; HTTP ${response.status()}`);
} finally {
  await browser.close();
}

Run it with the official public page URL:

SCHEDULE_URL='https://hospital.example/public-opd-schedule' node capture.mjs

Replace the example URL with the exact public schedule URL you are allowed to monitor. The script intentionally does not log in or attempt to evade a challenge. Run it from a scheduler on a cadence permitted by the site. Keep snapshots with timestamps and compare them manually or with a visual-diff tool you trust; a pixel difference alone is not proof that the doctor’s availability changed.

Optional: wait for a known schedule element

If the page renders its schedule after initial navigation, identify a stable selector in the page’s public markup and wait for it before capturing. Replace .opd-schedule with the actual selector; do not assume that every site uses this name.

const schedule = page.locator('.opd-schedule');
await schedule.waitFor({ state: 'visible', timeout: 20000 });
await schedule.screenshot({ path: 'schedule-section.png' });

For a full-page snapshot after the selector appears, keep the same wait and use page.screenshot({ path: 'schedule.png', fullPage: true }).

Run it repeatedly

Use your operating system’s scheduler or a job runner to invoke the script at a conservative interval. Store snapshots with dates in a restricted location, rotate old files, and make the alert include the page URL and capture time. Avoid aggressive retries: if the site times out, record the failed check and try again later according to your chosen policy.

4. Review an alert before acting

  1. Open the official page and compare the relevant doctor, department, location, date, and timing with your baseline.
  2. Check whether the change is effective now or applies to a future date. Look for a published update date or validity period.
  3. Separate meaningful content changes from layout changes, rotating announcements, or temporary loading failures.
  4. Open the hospital’s official booking channel or call its published contact number to confirm current bookable slots.
  5. Rely on the booking channel’s confirmation for an appointment. An alert is only a prompt to verify, not a booking or clinical guarantee.

ORS explains that participating hospitals provide appointment slots through its service, while the VMMC & Safdarjung website separates its OPD schedule from online booking. e-Hospital@NIC also describes patient registration and appointment booking, confirmation, or cancellation modules. These are official channels to check where applicable; they do not establish a universal external change-alert service for every hospital: e-Hospital@NIC.

5. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server for developers. One GET request captures a page as PNG, JPEG, WebP, or PDF. Its API accepts a URL, and the ScreenshotNeo documentation describes the available options.

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,
)
r.raise_for_status()
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}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', res);

Replace https://stripe.com with the public hospital schedule URL you are permitted to capture. ScreenshotNeo can accept cookie or consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each of those steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies page verdict and billing status in headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 shots a month without a card; paid plans start at $5 for 3,000 shots. A screenshot is still a visual observation: verify any schedule change and appointment slot with the hospital.

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

6. Troubleshooting

Symptom Likely cause What to do
The capture is blank or incomplete The page is still rendering, content is loaded later, or the site returned an error or challenge. Check the URL in a normal browser, wait for a stable schedule element, and inspect the HTTP response. Do not try to bypass a challenge; use the hospital’s official channel.
The script times out Slow server response, third-party resources, or an overly strict timeout. Use domcontentloaded rather than waiting for every network request; increase the timeout modestly if appropriate. Log the failed check and retry later rather than polling rapidly.
Every check triggers an alert Rotating banners, advertisements, timestamps, or layout changes are changing pixels. Capture only the schedule element when possible, or compare extracted schedule text if permitted. Review the page before notifying anyone.
The page content differs from a normal browser The site may personalize by location, session, cookies, or device layout. Compare the same public URL and viewport. Do not share personal account credentials or patient session data with a monitor.
A screenshot shows a new timing, but booking shows none The published schedule and remaining appointment inventory are distinct, or the listing has not been updated in sync. Trust the hospital’s booking channel or direct confirmation for bookable availability.
Access is denied or a CAPTCHA appears The site is limiting automated access or requiring a human check. Stop automated requests, review the site’s terms and access controls, and use the official page manually or contact the hospital.
The monitored page URL stops working The hospital changed its site structure or moved the schedule. Navigate from the hospital’s official homepage and update the saved URL only after confirming it is the same hospital, branch, and department.

7. Performance, reliability, and cost

  • Check cadence: A more frequent schedule can detect a change sooner but creates more requests and can burden the site. Follow the site’s rules and use the slowest cadence that meets your needs; this research does not establish one interval as appropriate for all hospitals.
  • Reliability: A screenshot can fail because of network issues, page redesigns, browser rendering, or site-side restrictions. Track capture time and success or failure separately from schedule content. Confirm changes through an official appointment channel.
  • False alerts: Visual changes include banners, fonts, spacing, and dynamic elements. Narrow the capture region, inspect each alert, and avoid treating a visual diff as proof of a doctor’s availability.
  • Cost: A local Playwright script has no screenshot API charge, but uses compute, storage, and maintenance. Hosted capture adds a service plan cost. ScreenshotNeo’s stated 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; Business: $249 for 1,000,000. Yearly billing gives two months free, and every feature is on every plan.
  • Data handling: Public schedule images can still reveal sensitive operational details. Store only what you need, restrict access, and set a retention period. Never capture authenticated patient pages for this use case.

Frequently asked questions

Can an alert tell me that a doctor has an appointment slot?

No. It can tell you that a monitored page appears to have changed. Check the hospital’s official booking channel for current slots and confirmation.

Is there one government alert service for every Indian hospital?

The cited ORS and e-Hospital services describe appointment workflows for participating hospitals, not a universal third-party alert feature across all hospitals.

Should I monitor a logged-in booking page?

For this workflow, use a public schedule page. Do not provide patient credentials, OTPs, cookies, or health information to an external monitoring service.

How often should I check?

There is no interval established for every hospital. Follow the site’s terms and choose a conservative cadence that fits how often the schedule is published or updated.