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

You can bulk screenshot product URLs with Playwright by reading an authorized URL list, opening each page in a browser, waiting for the content you need, and saving a screenshot plus a result record for every input. Playwright provides navigation and capture; the batch loop, safe filenames, and failure tracking are application code you must build. Before automating marketplace pages, verify that the specific access, capture frequency, storage, and publication you plan are permitted.

What the bulk workflow does

A reliable batch is a small pipeline: input records go in, browser captures are attempted, and images plus a manifest come out. Give every input a stable ID so that duplicate URLs, redirects, and failed pages remain distinguishable. The example below uses a CSV-like JSON file for clarity; the same loop can read a database or spreadsheet export.

Install Playwright and its Chromium browser in a Node.js project:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npm install playwright
npx playwright install chromium

Save the following as capture.mjs. It expects a urls.json file containing an array of objects such as [{"id":"item-001","url":"https://example.com/product"}]. Use only URLs and access methods you are authorized to automate.

#1 Best Overall
Philips 24 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 241V8LB
  • CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
  • WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
  • A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents
import { chromium } from 'playwright';
import { mkdir, writeFile } from 'node:fs/promises';

const inputPath = process.argv[2] ?? 'urls.json';
const outputDir = process.argv[3] ?? 'screenshots';
const captureMode = process.env.CAPTURE_MODE ?? 'viewport'; // viewport | full | element
const elementSelector = process.env.ELEMENT_SELECTOR;
const waitSelector = process.env.WAIT_SELECTOR;
const delayMs = Number(process.env.DELAY_MS ?? 0);
const timeoutMs = Number(process.env.TIMEOUT_MS ?? 30000);

const inputs = JSON.parse(await (await import('node:fs/promises')).readFile(inputPath, 'utf8'));
if (!Array.isArray(inputs)) throw new Error('Input JSON must be an array of { id, url } records.');
if (captureMode === 'element' && !elementSelector) throw new Error('Set ELEMENT_SELECTOR for element capture.');

await mkdir(outputDir, { recursive: true });
const browser = await chromium.launch({ headless: true });
const results = [];

try {
  for (const [index, item] of inputs.entries()) {
    const id = String(item.id ?? `row-${index + 1}`).replace(/[^a-zA-Z0-9_-]/g, '_');
    const result = {
      id,
      inputUrl: item.url,
      capturedAt: new Date().toISOString(),
      screenshotPath: null,
      status: 'failed',
      finalUrl: null,
      error: null
    };

    let page;
    try {
      if (typeof item.url !== 'string' || !/^https?:///i.test(item.url)) {
        throw new Error('URL must be an absolute HTTP or HTTPS URL.');
      }
      page = await browser.newPage({ viewport: { width: 1280, height: 900 } });
      page.setDefaultNavigationTimeout(timeoutMs);
      const response = await page.goto(item.url, { waitUntil: 'domcontentloaded' });
      result.finalUrl = page.url();
      result.httpStatus = response?.status() ?? null;

      if (waitSelector) await page.locator(waitSelector).waitFor({ state: 'visible', timeout: timeoutMs });
      if (delayMs > 0) await page.waitForTimeout(delayMs);

      const filePath = `${outputDir}/${id}.png`;
      if (captureMode === 'element') {
        await page.locator(elementSelector).screenshot({ path: filePath, type: 'png', timeout: timeoutMs });
      } else {
        await page.screenshot({ path: filePath, type: 'png', fullPage: captureMode === 'full', timeout: timeoutMs });
      }
      result.screenshotPath = filePath;
      result.status = 'captured';
    } catch (error) {
      result.error = error instanceof Error ? error.message : String(error);
    } finally {
      await page?.close().catch(() => {});
    }
    results.push(result);
    await writeFile(`${outputDir}/manifest.json`, JSON.stringify(results, null, 2));
  }
} finally {
  await browser.close();
}

Run a viewport capture with node capture.mjs urls.json screenshots. For a full-page image, set CAPTURE_MODE=full; for an element, set CAPTURE_MODE=element and ELEMENT_SELECTOR to a selector that actually exists on the authorized page. To wait for a visible product detail, set WAIT_SELECTOR. Optional DELAY_MS adds a fixed post-navigation pause; TIMEOUT_MS sets the navigation, selector, and screenshot timeout in milliseconds.

Choose the right capture for the comparison

Capture Use it when Trade-off
Viewport You need consistent above-the-fold previews across product URLs. It does not include content below the visible area.
Full page Details farther down the page matter to the task. Long pages produce larger images and may include more content than needed.
Element You need a specific product area rather than the whole layout. The selector is page-specific and must be checked; Playwright’s Page API does not combine element capture with fullPage.

The Playwright Page API documents navigation and screenshot options, while its screenshot guide covers page and element screenshots. The default screenshot is the viewport, not the full scrollable page. Image output supports PNG, JPEG, and WebP; CSS-pixel versus device-pixel scaling affects resolution and file size. The example uses PNG for lossless captures and a fixed viewport so images are more comparable. Change dimensions or output format only when the intended comparison calls for it.

Rank #2
Philips 22 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 221V8LB
  • CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
  • SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors

Make batches auditable and controlled

Keep stable identifiers and safe filenames

Use a stable input ID for the filename rather than inserting a raw URL into a path. URLs can contain characters awkward for filesystems, and two URLs may share a slug. Retain the original input URL and final URL in the manifest so redirects are visible.

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

Record outcomes, not just images

The example writes manifest.json after each attempt with the input ID, input URL, final URL, timestamp, screenshot path, status, HTTP status when available, and error text. Failed attempts remain recorded instead of silently disappearing. If a process stops mid-batch, the most recent manifest still contains completed results.

Rank #3
Sale
Dell 24 Monitor - SE2426H - 23.8-inch FHD (1920x1080) 144Hz 1ms Display, in-Plane Switching (IPS) Technology, AMD FreeSync™, TÜV 3-Star 2X HDMI, Tilt
  • Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
  • Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
  • Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
  • In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
  • Ultra-thin bezels: Maximize your viewing experience with thin bezels.

Start sequentially; add concurrency only deliberately

The sample uses one page at a time. If your authorized workload requires more throughput, concurrency is an application-level choice: cap the number of open pages, record each result independently, and respect the marketplace’s allowed access rate. Higher concurrency can increase resource use and may trigger access controls; do not use it to evade a limit or block. No single concurrency setting is established as appropriate for every marketplace or page set.

Marketplace permissions come before browser automation

Playwright’s ability to load a page does not grant permission to automate it. Review the current terms that govern the actual marketplace pages, your role, capture volume and cadence, and how you plan to store or publish the captures. Do not bypass authentication, CAPTCHAs, rate limits, or other controls.

Rank #4
Sale
Samsung 27" Essential S3 (S36GD) Series FHD 1800R Curved Computer Monitor
  • CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
  • SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
  • MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
  • KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
  • INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient

Flipkart

Flipkart’s Terms of Use prohibit using a deep link, page scrape, robot, spider, or other automatic method to access, acquire, copy, or monitor website content, except information purposely made available; the terms also reserve the right to bar such activity. This is a material constraint for a proposed automated product-page screenshot batch, not a Playwright configuration issue.

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.

For eligible seller workflows, Flipkart’s seller API documentation describes programmatic exchange of marketplace data for seller business processes, subject to marketplace terms. It is an option to investigate for authorized seller data needs, not evidence of a general product-page screenshot endpoint.

Best Value
Sale
Sceptre New 22-Inch Gaming Monitor, FHD 1080p, Up to 144Hz, HDMI, DisplayPort, Built-in Speakers, Machine Black (E225W-FW144 Series, 2026)
  • 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
  • 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
  • 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.

Amazon.in

The located Amazon India Associates participation requirements say, in the context of the Associates program, that users must not artificially generate clicks or impressions or create Sessions on the Amazon Site by robot or software program. That program rule should not be treated as a complete statement of Amazon.in retail-site policy for every use. Amazon Freight India conditions separately restrict data mining, robots, and similar tools for content extraction; they are not a substitute for checking current terms applicable to Amazon.in retail pages. Confirm the rules that actually govern your purpose and access.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot common batch failures

Symptom Likely cause What to do
Browser executable missing Playwright package installed but Chromium browser was not installed. Run npx playwright install chromium in the project environment.
Navigation timeout The page did not reach the requested navigation condition in time, or access was slow or blocked. Check the result’s error and final URL if available; adjust the timeout only when the permitted page behavior justifies it. Do not retry aggressively or bypass a control.
Screenshot shows incomplete product details Navigation completed before the relevant content rendered, or the chosen wait condition did not match the page. Wait for a meaningful visible selector or use a measured delay where appropriate. Page layouts and loading behavior vary; verify selectors on each permitted page type.
Element capture fails The selector is missing, hidden, or ambiguous on that page. Inspect the authorized page structure and provide a selector that identifies a visible target; handle different page layouts explicitly.
Blank, redirected, or unexpected page The marketplace redirected the request, presented an access challenge, or failed to serve the expected content. Use the manifest’s final URL and status to diagnose. Treat challenges and access restrictions as a stop condition, not as something to evade.
Output overwrites or invalid filenames IDs are missing, duplicated, or derived from arbitrary URL text. Assign unique stable IDs before the run and keep URLs in the manifest rather than filenames.

Or skip the browser setup

ScreenshotNeo offers a one-request screenshot API and an MCP server for AI agents. Its documented cleanup accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify the page verdict and billing status. The MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. It is not a way around marketplace permissions: check authorization for the pages and intended use first.

One GET request returns an image or PDF; adapt the target URL and select desired documented parameters for your capture:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/product -o shot.webp

See the ScreenshotNeo API documentation for access keys and request options. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Sign up for 1,000 free screenshots a month with no card.

Frequently Asked Questions

Does Playwright include a built-in bulk URL screenshot feature?

No. The URL iteration, naming, manifest, and batch error handling are code you provide around Playwright’s page navigation and screenshot operations.

Can I combine a full-page capture with an element screenshot?

No. Playwright’s Page API does not support combining element capture with the fullPage option; choose the page or element capture appropriate to the task.

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.