ScreenshotNeo

BlogComparisons

Free website screenshot tools for Indian freelancers with bulk URL support

Compare free bulk screenshot tools by URLs per batch, monthly allowance, and India capture options. Includes a runnable Playwright workflow and practical checks for client work.

By the ScreenshotNeo team4 October 202611 min read

For a quick list of up to three URLs without an account, Scrnpix advertises a free browser tool. For a large list, url2image accepts batches up to 500 URLs, but its free allowance is 10 screenshots per month. If you need a recurring API, ScreenshotNeo is the first option to try: it offers clean screenshots, bills only clean shots, and its paid plan starts at $5 for 3,000 screenshots. These are vendor-published limits researched on October 3, 2026, not independently tested results.

The key distinction is URLs per batch versus screenshots per month. A 500-URL batch limit does not mean 500 free monthly screenshots. For Indian client work, check whether the plan explicitly offers India as a capture country; viewport and geolocation settings alone do not prove where a hosted browser runs.

1. Free screenshot tools at a glance

Tool Advertised free allowance Batch limit Best fit and caveat
ScreenshotNeo 1,000 shots per month, no card Bulk capture supports up to 100 URLs per call Best first API to try: it removes consent banners, popups, and chat widgets before capture, and only clean shots are billed. It also has an MCP server for AI agents.
url2image 10 screenshots per month without a card or signup Up to 500 URLs Useful for testing a large list shape with a small monthly quota. Accepts pasted URLs or CSV/text and returns a ZIP with images and a manifest. Vendor says output is retained for 14 days.
Scrnpix browser bulk tool 5 renders per hour without login Up to 3 URLs per batch in the browser tool Good for a quick small batch. The vendor separately advertises 50 monthly credits for free API keys; its API page does not state a batch-size limit.
ScreenshotInk 100 screenshots per month 5 URLs per free run Recurring API-oriented allowance; vendor lists PDF output and monitoring features. The free tier allows one request per second.
ScreenshotCenter 500 screenshots per month on Trial Batch capture Trial offers the United States plus one country of choice. India is listed among capture countries on Plus, so do not assume India capture is included on the free tier.
PageShot No-signup API use, as described by the vendor Up to 5 URLs The vendor says its current deployment is in West Europe and Asia-Pacific regions are planned. Do not treat it as an India-region renderer.
Playwright Self-hosted software, not a hosted monthly quota You control the input list Flexible browser automation if you can run code and manage browser setup, concurrency, retries, and storage.
Chrome DevTools Included with Chrome Manual capture Useful for manual responsive review. Device mode is an approximation; use a real phone when device-specific behavior matters.

Check each vendor’s current plan page before a client commitment. Allowances, region availability, retention, and prices can change.

2. Choose by workload, not headline batch size

Quick one-off list

For two or three public URLs and no setup, Scrnpix’s browser bulk tool is a small-list option. Its stated cap is three URLs per batch and five renders per hour without login. Keep a local record of which URLs succeeded if you need a deliverable.

Large list, small free monthly quota

url2image is a candidate when the input itself is large: it advertises up to 500 URLs in one batch, while the free plan covers 10 screenshots a month. Treat the batch limit as a convenience for submitting a list, not as a monthly allocation. Its ZIP and manifest are useful for matching returned images to inputs.

Recurring API captures

For a scheduled workflow, compare monthly output, request pacing, failure behavior, and whether the API returns enough status information to retry selectively. Scrnpix lists 50 free monthly API credits and 20 requests per minute; ScreenshotInk lists 100 captures monthly and one request per second on its free tier. ScreenshotNeo’s free tier includes 1,000 shots per month without a card, supports bulk capture of up to 100 URLs per call, and exposes whether a response was a clean shot or a non-billable outcome.

India-specific capture

ScreenshotCenter explicitly lists India among the countries available on Plus. Its Trial tier is described as the United States plus one country of choice, so confirm the selected country and plan before relying on it. PageShot says its current deployment is in West Europe, with Asia-Pacific planned. A geolocation parameter changes browser location settings; it does not establish the physical region of the rendering machine.

Vendor pages list prices in USD in the reviewed material. The research does not establish an Indian customer’s final INR total, tax, currency-conversion fees, or accepted payment methods. Confirm those at checkout.

3. A practical checklist for client batches

  1. Clarify the deliverable. Agree on viewport dimensions, full-page versus viewport capture, image format, filename convention, and whether the client wants mobile emulation or a real-device review.
  2. Normalize the URL list. Include the scheme (https://), remove duplicates, and preserve a source column or stable index so each output maps back to its URL.
  3. Pilot representative pages. Try a short page, a long lazy-loaded page, a JavaScript-heavy page, a page with a consent dialog, and any required viewport before submitting the full list.
  4. Check geographic needs. Ask whether the requirement is an India-based browser renderer, an India IP/location, or simply a mobile-sized viewport. These are different requirements.
  5. Measure quota use. Count successful outputs, not just submitted URLs. Confirm how the service treats timeouts, blocked pages, retries, cache hits, and failed renders.
  6. Protect client data. Do not put authenticated or private URLs into a public free tool unless its terms and access controls fit the project. Remove secrets from query strings before sharing logs or manifests.
  7. Validate the archive. Check that the ZIP opens, the manifest is present, files are non-empty, and a sample of images has the expected dimensions and content.

4. Do it yourself with Playwright

Playwright is a good fit when you want to own the URL list and browser flow. The following runnable Node.js script installs Chromium through Playwright, captures a list of public URLs as full-page PNGs, and writes a JSON manifest with per-URL success or failure. It does not create a hosted bulk service, guarantee India-region rendering, or remove consent banners automatically.

Install

mkdir screenshot-batch
cd screenshot-batch
npm init -y
npm install playwright
npx playwright install chromium

Save as capture.mjs

import { chromium } from 'playwright';
import { mkdir, writeFile } from 'node:fs/promises';

const urls = [
  'https://example.com',
  'https://www.iana.org/domains/reserved',
];
const outputDir = new URL('./shots/', import.meta.url);
await mkdir(outputDir, { recursive: true });

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

try {
  const context = await browser.newContext({
    viewport: { width: 1440, height: 1000 },
    deviceScaleFactor: 1,
  });

  for (let i = 0; i < urls.length; i += 1) {
    const url = urls[i];
    const page = await context.newPage();
    const filename = `${String(i + 1).padStart(3, '0')}.png`;

    try {
      const response = await page.goto(url, {
        waitUntil: 'networkidle',
        timeout: 45_000,
      });
      await page.screenshot({
        path: new URL(filename, outputDir),
        fullPage: true,
        animations: 'disabled',
      });
      results.push({ url, filename, status: response?.status() ?? null, ok: true });
    } catch (error) {
      results.push({ url, filename: null, ok: false, error: String(error) });
    } finally {
      await page.close();
    }
  }

  await context.close();
} finally {
  await browser.close();
}

await writeFile(
  new URL('manifest.json', outputDir),
  JSON.stringify(results, null, 2),
);
console.log(`Finished ${results.length} URLs. See shots/manifest.json.`);

Run it

node capture.mjs

Replace the example URLs with client-approved public pages. This sequential version is intentionally conservative. For larger batches, add bounded concurrency, but begin with a low number of pages so memory use and the target sites’ load remain manageable. Save outputs to a project-specific directory and keep the manifest with the delivery.

Useful Playwright adjustments

  • Viewport screenshot: set fullPage: false. This captures the current viewport only.
  • Element screenshot: use await page.locator('main').screenshot({ path: 'main.png' }). Replace main with a selector that exists on the target page.
  • Wait for a page-specific element: after navigation call await page.locator('main').waitFor({ state: 'visible', timeout: 15000 }). This is often more reliable than waiting for every network connection to stop.
  • Wait for lazy images: full-page capture may not trigger every site’s lazy-loading behavior. Scroll in steps through the document, wait briefly for images, then capture; verify the result because each site loads content differently.
  • JPEG or WebP: Playwright’s screenshot API supports PNG, JPEG, and WebP where supported by the installed browser. Set type: 'jpeg' and a suitable quality for JPEG; check the current Playwright screenshot documentation for the installed version’s exact options.
  • Mobile emulation: configure a mobile device context or set a narrow viewport and device scale factor. Emulation is useful for responsive layout checks, but it does not replace testing on a physical phone.
  • Authentication: use a project-approved browser context or storage state for private pages. Keep credentials out of source control and delete sensitive state files after use.

Playwright’s official documentation covers page, full-page, and element screenshots. Use the Page screenshot API reference for the installed version’s full option set.

5. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server from Yorker Media. One GET request can return a PNG, JPEG, WebP, or PDF. It supports full-page and element captures, viewport and device presets, waits, custom CSS and JavaScript, cookies and headers, bulk capture up to 100 URLs per call, caching, signed links, and asynchronous jobs. The API documentation lists the parameters.

This example saves a WebP response for one URL:

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);

The Python example requires requests (python -m pip install requests). The Node.js example uses Bun’s file writer to save the response; in Node.js, use await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()))) after checking res.ok.

  • Cookie and consent banners are accepted like a visitor and more than 60 known consent platforms are removed before the shot; newsletter popups and chat widgets are also removed. Each step can be turned off.
  • Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing. Response headers identify the page verdict and whether the request was billed.
  • An MCP server provides take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients.
  • The free plan includes 1,000 shots a month with no card. Paid plans start at $5 for 3,000; every feature is on every plan.

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

6. Performance, reliability, and cost

Batching and throughput

A large batch saves repeated submission work, but it does not necessarily make captures run simultaneously. Check request-per-second limits, maximum batch size, and any per-month quota separately. For self-hosted Playwright, sequential capture is slower but easier on memory and target sites. Add bounded concurrency only after a small run succeeds.

Retries and partial failures

Record outcomes per URL rather than treating a whole batch as all-or-nothing. Retry transient timeouts or server errors with a small delay and a limited number of attempts. Do not repeatedly hammer a site that returns a bot check, access denial, or persistent error. A screenshot can exist even when the final navigation status is not successful, so inspect both the image and status when using your own browser script.

Image size and storage

Full-page images of long pages can consume substantial memory and storage. Use viewport captures when the deliverable only needs the first screen; choose a compressed format when acceptable; keep dimensions consistent across a comparison; and clean up temporary browser profiles, manifests, and archives after delivery. For hosted services, check output retention and download files promptly when the stated retention window is short.

Cost control

Estimate monthly output as URLs per run multiplied by runs per month, plus deliberate retries. Compare that number to the monthly free allowance, not just the batch ceiling. Confirm how failed renders and cache hits are billed, and check the final currency and taxes at checkout. ScreenshotNeo states that only clean shots are billed and that bot checks, blank pages, timeouts, failed loads, and cache hits are free.

7. Common problems and fixes

Problem Likely cause What to do
Only some URLs produce files A per-run cap, monthly allowance, rate limit, or individual page failure. Compare submitted URLs with the manifest or service result list. Split the input within the advertised batch cap and retry only transient failures.
Screenshot is blank or incomplete Navigation returned before client-side content rendered, a script failed, or the page blocks automation. Wait for a meaningful selector, inspect the response and browser console, and test the URL manually. Do not assume a longer fixed delay fixes a blocked page.
Full-page image misses lower images Images load lazily only when scrolled into view. Scroll through the page before capture, wait for image loads, or use a service that explicitly supports lazy-image loading. Verify long pages individually.
Playwright reports a navigation timeout The page keeps analytics, ads, or streaming requests open, or the site is slow. Wait for domcontentloaded or a target selector instead of networkidle, increase the timeout modestly, and keep a per-URL error record.
Tool rejects a supposedly valid India capture India may not be offered on the selected tier, or a location setting was confused with renderer region. Check the vendor’s country list and plan terms. ScreenshotCenter lists India on Plus; do not infer it is on Trial.
Mobile screenshot differs from a real phone Desktop device emulation approximates mobile conditions. Use the vendor’s device options for a consistent viewport, then confirm behavior on a physical device when it matters.
Unexpectedly reaches the free cap Each URL can count as one capture; retries or repeated schedules consume allowance. Calculate monthly URLs times runs, deduplicate inputs, and check whether failed requests are billed before automating a schedule.
ZIP or downloaded image is missing Download was interrupted, output expired, or a response error was saved as an image. Check HTTP status and content type before saving, re-download within the vendor’s retention window, and validate the archive before delivery.

8. Frequently asked questions

Does “500 URLs per batch” mean 500 free screenshots?

No. url2image advertises batches up to 500 URLs and a free allowance of 10 screenshots per month. Batch capacity and monthly quota are separate limits.

Which option works without creating an account?

Scrnpix advertises browser batches up to three URLs without login. url2image says its 10 monthly screenshots do not require signup. Check current terms before relying on no-account access.

Can I guarantee a screenshot was captured from India?

Only if the chosen service explicitly provides an India capture region on your plan. A simulated viewport or browser geolocation is not evidence of physical renderer location.

Is Chrome mobile emulation enough for client approval?

It is useful for responsive layout checks, but Chrome describes device mode as a first-order approximation. Use an actual phone when device-specific behavior is in scope.

Should I use a hosted service or Playwright?

Use a hosted service when you want managed capture and a stated quota. Use Playwright when browser-level control and self-hosting suit your workflow and you can maintain the runtime and output pipeline.

Sources and date checked

Vendor limits and plan details below were checked October 3, 2026. They are published claims, not independent test results: url2image, Scrnpix, ScreenshotInk, ScreenshotCenter, and PageShot. Official technical references: Playwright screenshots and Chrome DevTools device mode.