Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
FREEDOM251

Freedom251 › Blog › browser automation

How to Take Batch Screenshots of Indian Real Estate Listings from URLs

By Freedom251 Team · · 7 min read

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

Use a browser automation script to read listing URLs from a file, open each page, wait for the content you need, and save a viewport, full-page, or selected-element screenshot. Playwright supports all three capture types. Before automating any Indian property portal, check its current terms: Magicbricks requires prior written consent for automated software used to extract or download site data, and screenshot-only automation should not be assumed exempt.

Choose what each screenshot needs to show

Decide the capture scope before building the batch. Playwright can capture the visible viewport, the full scrollable page, or a specific element. The right choice depends on what you need to preserve:

As an Amazon Associate I earn from qualifying purchases.

  • Viewport: the initially visible screen, useful when you need a consistent first-glance record.
  • Full page: content below the fold, useful when relevant listing details continue farther down the page.
  • Element: a listing card, details panel, or other selected region, useful when surrounding navigation and page chrome are not part of the record.

Full-page screenshots can become very tall. If the purpose is to compare the main summary across many listings, a viewport or element capture may be easier to review. Playwright documents the available screenshot modes at Playwright screenshots.

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

Check portal terms before making a batch

Terms vary by portal and can change. Magicbricks’ General Terms & Conditions state: “Use of automated software to extract or download data from the Site is prohibited without prior written consent.” A screenshot batch accesses and captures page content, so do not assume screenshot-only use falls outside that restriction; obtain written consent or use an authorized method when required.

#1 Best Overall
Asteroom 360 Camera 3D Virtual Tour Real Estate Kit - Gear Includes: Tripod, Digital Camera Rotator, Fisheye Cam Lens (Asteroom Phone Case Not Included, Purchased Separately on Amazon)
  • 📷 Turn your smartphone into a 360 degree camera to create 3D virtual tours with this 3D Tour Kit. In 15 minutes (1 minute per photo) with no training, you can shoot, upload and share your 3D virtual tours anywhere online.
  • Create high-quality 360 virtual tours using smartphones by taking 360-degree panoramic images. Photos are converted into tours in our iOS and Android app in 24-48 hours.
  • Creating a tour starts at $59 per tour in our mobile app and includes all of the following with each tour: 3D Dollhouse to showcase the layout of your property, and image touch up to polish your tours to professional image quality, and 2d floor plan to get full dimensions. HDR photo compatibility, teaser videos, viewership analytics, and much more.
  • RECOMMENDED FOR BETTER QUALITY. Asteroom Phone Cases are available for iPhone or Samsung Galaxy. These allow for the highest image quality. Mobile app compatible with 360 Ricoh V camera, Gopro, and insta 360 cameras but phones provide higher resolutions and are recommended.
  • No monthly subscription. $59 per active tour. Create your first 3D tour for FREE. Find the redeem voucher in the box to activate this promotion.

Housing.com describes itself as an advertising and information platform and says it does not validate listing authenticity. Its terms advise users to independently check property and project details. A screenshot is evidence of what appeared on a page at a particular time, not proof that a property claim is accurate or that a listing is still current.

Check the current terms for 99acres and NoBroker directly before automating. Their automation rules are not established here, which does not mean either permits or prohibits screenshot capture.

Rank #2
Canon EOS 2000D / Rebel T7 DSLR Camera with EF-S 18-55mm + EF 75-300mm Daul Lens + SanDisk 64GB Memory Card + Tripod + Case + Wideangle Lenses + ZeeTech Accessory Bundle (21pc Bundle) (Renewed)
  • Canon EOS 2000D / Rebel T7 DSLRCamera Body (International Version )- 24.1MP APS-C CMOS Sensor, ISO 100-6400, Up to 3 fps Shooting, Built-In Wi-Fi with NFC, 9-Point AF with Center Cross-Type Point, Full HD 1080/30p Video Recording, Creative Filters, Creative Auto Modes, 3.0 inch 920k-Dot LCD Monitor, DIGIC 4+ Image Processor and Scene Intelligent Auto Mode.
  • This ZeeTech Camera Bundle Includes: Canon Lithium-Ion Battery Pack LP-E10 (7.4 V), Battery Charger LC-E10, Lens Cap, Body Cap, Neck Strap, SanDisk 64GB Memory Card, Backpack for Camera and Lens, Full Size Tripod, 58mm 3 Pieces Filter Kit, 58mm 2.2x Auxiliary Telephoto Lens, 58mm 0.43x Auxiliary Wide angle Lens, 58mm Tulip Lens Hood, High Speed Memory Card Reader, Ultra-Bright Slave Flash Light, 2-1 Cleaning Pen, Dust Blower, Deluxe Starter Kit, ZeeTech MicroFiber Cleaning Cloth.
  • Canon EF-S 18-55mm f/4-5.6 Lens. Key Features: EF-S Mount Lens/APS-C Format, 28.8-88mm (35mm Equivalent), Aperture Range: f/4 to f/32, One Aspherical Element, Super Spectra Coating, Super Spectra Coating, Rounded 7-Blade Diaphragm.
  • Canon EF 75-300mm f/4-5.6 III Lens. Key Features: EF-Mount Lens/Full-Frame Format, Aperture Range: f/4 to f/45, Super Spectra Coating, Micro Motor AF System, 7-Blade Diaphragm.
  • Built-in Wi-Fi with NFC permits pairing the DSLR with a smartphone or tablet for wirelessly sharing photos and movies for instant online posting. Wi-Fi connectivity also enables wireless remote control over the camera from linked mobile devices using the Camera Connect app.

Build a repeatable batch with Playwright

Keep one URL per line in a UTF-8 text file named urls.txt. The Python example below records a timestamp, output filename, and success or failure for each URL in manifest.csv. It uses full-page screenshots; change the capture call to capture only the viewport or a selected element if that better fits your record.

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

Install the browser automation package

  1. Install Python 3 and create a project folder.
  2. In a terminal in that folder, run python -m pip install playwright.
  3. Install Playwright’s Chromium browser with python -m playwright install chromium.
  4. Create urls.txt with one complete listing URL per line.

Run the batch script

Save this as batch_screenshots.py. The script waits for the page’s load event, then allows a short settling interval for client-rendered content. If a specific listing element is essential, replace the delay with a locator wait using a selector observed on that page. The generic delay is not proof that every portal has finished loading.

Rank #3
Sale
Yatao 6K WiFi Flip Screen Digital Camera, Mic & Fill Light for Photography
  • 6K WiFi Digital Camera with Dual Lens — Capture clear photos and 6K Ultra HD video with this compact digital camera. Includes a Wide‑Angle Lens for landscapes and a Macro Lens for close‑ups, plus 16X zoom for flexible shooting.
  • Compact Vlogging Camera for YouTube — Designed for beginners and content creators, this portable camera features a flip screen for selfies and creative shots, making it ideal for vlogging, travel, and family use.
  • WiFi Connectivity & Easy Sharing — Built‑in WiFi and app control allow instant transfer to smartphones for posting on social media. USB‑C supports webcam use for live streaming.
  • Creative Shooting Modes with Rich Accessories — Unlock playful features like slow motion, continuous shooting, and built‑in flash. With clear audio from the microphone, warm/cool tones from the fill light, and glare reduction from the lens hood, this camera helps creators produce standout content for YouTube, TikTok, and Instagram.
  • Affordable & Fun Value Package — This bundle includes a 64GB card, two batteries with charging stand, microphone, bi‑color fill light, and lens hood, giving buyers a cost‑effective all‑in‑one setup for travel, vlogging, and daily photography. Whether for birthdays, holidays, or special occasions, this compact digital camera is the perfect gift to inspire creativity and capture memories.
import asyncio
import csv
import hashlib
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlparse

from playwright.async_api import async_playwright

INPUT = Path("urls.txt")
OUTPUT = Path("screenshots")
MANIFEST = Path("manifest.csv")
VIEWPORT = {"width": 1440, "height": 1000}
SETTLE_MS = 1500
NAVIGATION_TIMEOUT_MS = 30000


def read_urls():
    return [line.strip() for line in INPUT.read_text(encoding="utf-8").splitlines()
            if line.strip() and not line.lstrip().startswith("#")]


def safe_label(url):
    host = urlparse(url).netloc.replace(".", "_") or "page"
    digest = hashlib.sha256(url.encode("utf-8")).hexdigest()[:10]
    return f"{host[:40]}_{digest}"


async def main():
    OUTPUT.mkdir(parents=True, exist_ok=True)
    urls = read_urls()
    rows = []

    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        context = await browser.new_context(viewport=VIEWPORT, device_scale_factor=1)
        page = await context.new_page()
        page.set_default_navigation_timeout(NAVIGATION_TIMEOUT_MS)

        for index, url in enumerate(urls, start=1):
            timestamp = datetime.now(timezone.utc).isoformat(timespec="seconds")
            filename = f"{index:04d}_{safe_label(url)}.png"
            status = "success"
            error = ""
            try:
                response = await page.goto(url, wait_until="load")
                await page.wait_for_timeout(SETTLE_MS)
                await page.screenshot(path=str(OUTPUT / filename), full_page=True)
                if response is not None and response.status >= 400:
                    status = f"http_{response.status}_captured"
            except Exception as exc:
                status = "failed"
                error = str(exc).replace("n", " ")[:500]
            rows.append({
                "input_url": url,
                "captured_at_utc": timestamp,
                "output_file": filename if status != "failed" else "",
                "status": status,
                "error": error,
            })

        await browser.close()

    with MANIFEST.open("w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=[
            "input_url", "captured_at_utc", "output_file", "status", "error"
        ])
        writer.writeheader()
        writer.writerows(rows)


if __name__ == "__main__":
    asyncio.run(main())

Run it with python batch_screenshots.py. Images go in screenshots/; the CSV manifest ties each input to its capture time and result. The URL-derived hash helps keep names stable and distinct without putting an entire potentially sensitive URL in a filename.

Capture only the viewport or a specific element

For the initial visible screen, replace the screenshot line with await page.screenshot(path=str(OUTPUT / filename), full_page=False). For one element, use the actual selector on the page:

Rank #4
Sale
8K Digital Cameras for Photography, 2026 Autofocus 88MP WiFi Professional Photography Camera with Dual-Lens for YouTube, 16X Digital Zoom, TF Card, Lens Hood, Touch Screen,2 Batteries & Charging Stand
  • Experience Next-Level Clarity with 8K & 88MP Power--This digital camera capture every detail in stunning clarity with 8K video and an 88MP high-resolution sensor. The quick autofocus system locks focus in seconds—just press halfway and shoot with confidence, ensuring every shot is sharp and vivid. Ideal for beginners to advanced creators, perfect for travel, daily moments, and professional-quality content creation.
  • Shoot Smarter with Dual Lens & Large Touchscreen--Designed for easy content creation, this entry-level vlogging camera features front and rear dual lenses for flexible shooting angles, selfies, and smooth vlogging. The photography camera's 3.2-inch IPS touch screen allows intuitive control—simply tap to frame, focus, and shoot with precision. Perfect for capturing clear, vibrant moments anytime.
  • WiFi Transfer & 16X Digital Zoom--Easily connect via WiFi to transfer and share your photos and videos instantly through the “iSmart DV2” app. The powerful 16X digital zoom lets you capture distant subjects with impressive clarity—ideal for travel, events, and everyday shooting. Comes with two high-capacity batteries provide extended shooting time.
  • 360° Smart Mode Dial & 6-Axis Stabilization--Switch shooting modes in an instant with the smooth 360° rotary dial—Timelapse, Filters, Portrait, Scene, Slow Motion, Landscape, Auto and Program Mode are all easily accessible. Powered by 6-axis stabilization, the 8K digital camera keeps shots steady and blur-free, even on the move, for sharp, smooth, professional photos and videos.
  • Multi-Function Professional Camera -- Packed with versatile features including slow motion, continuous shooting, and a built-in flash, this camera delivers impressive image quality in both bright and low-light conditions—ideal for close-ups and landscapes. Comes with a 32GB SD card, ensuring longer shooting time without interruption. Perfect for daily use and travel. Note: Packaging may vary during the transition to our new packaging.
target = page.locator(".listing-card").first
await target.wait_for(state="visible", timeout=10000)
await target.screenshot(path=str(OUTPUT / filename))

Selectors are site-specific and can change. Confirm that the selector identifies the intended listing before relying on it for a large run. Playwright’s Python documentation describes the full-page option as full_page=True and documents screenshots in its Python screenshot guide.

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.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Keep comparisons consistent and failures visible

Use the same browser engine and version, viewport dimensions, device scale factor, and headless setting for the whole comparison set. Playwright notes that screenshots can differ with operating system, browser version, settings, hardware, power source, and headless mode; a visual difference may therefore come from the capture environment rather than a changed listing.

  • Record the essentials: preserve input URL, UTC capture timestamp, output filename, and status in a manifest.
  • Wait for meaningful content: for pages that render asynchronously, prefer a locator wait for a known heading or listing element over an arbitrary long delay.
  • Limit retries: retry transient navigation failures only a small, defined number of times and record each final outcome. Avoid an unbounded loop that can keep a batch running indefinitely.
  • Handle HTTP errors explicitly: a browser can render an error response. The example records HTTP statuses of 400 or higher separately rather than treating their screenshots as ordinary successes.
  • Protect the output: listing URLs may contain private search or account information. Store screenshots and manifests accordingly, and avoid sharing them without checking their contents.

Troubleshoot common batch problems

The script times out or captures a partially loaded page

Some content may arrive after the browser’s load event. Increase the navigation timeout only if the page is genuinely slow, and preferably wait for a stable, relevant element with locator.wait_for(state="visible"). Record timeouts as failures and inspect a sample manually before rerunning the entire batch.

The screenshot is blank or shows an access challenge

A blank page, CAPTCHA, or bot check is not a valid record of the listing details. Do not try to defeat access controls. Check that the URL works in an ordinary browser and that the portal authorizes your capture method; request permission or use an authorized route when needed.

An element screenshot says the locator was not found

The selector may be wrong, the page structure may have changed, or the element may not have loaded. Inspect the page, choose a locator that uniquely identifies the target, and wait for it to become visible. If there is no dependable selector, use a viewport or full-page capture instead.

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

Images differ despite no apparent listing change

Check that both runs used the same browser version, operating system, viewport, scale, and headless configuration. Differences in those conditions can change rendering; keep the manifest with the images so the capture context is traceable.

Or skip the browser setup

ScreenshotNeo offers a one-request screenshot API and an MCP server for AI agents. Its clean-capture flow accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify the page verdict and billing status in headers. An MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients. The service has a free allowance of 1,000 shots per month with no card, and paid plans start at $5 for 3,000 shots. Check portal terms and authorization requirements before sending listing URLs to any capture service.

For a single request, use cURL:

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

See the ScreenshotNeo API documentation for request options, response handling, and adapting the call for your batch. You can also use ScreenshotNeo to explore the service. Sign up for 1,000 free screenshots a month, with no card required.

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.

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

browser automationIndiaPlaywrightreal estateweb screenshots

Leave a Reply

Your email address will not be published. Required fields are marked *

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

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.