ScreenshotNeo

BlogHow-to

How to Capture Website Screenshots in Rupees Using a Screenshot API

Capture website screenshots through an API and estimate the cost in INR. Learn how to convert USD plan prices responsibly and handle billing details.

By the ScreenshotNeo team4 October 20268 min read

A screenshot API captures a webpage in a hosted browser and returns an image or another supported output. To estimate its cost in rupees, take the provider’s published USD plan price and multiply it by a dated USD/INR reference rate. Treat the result as an estimate: the actual checkout currency, payment conversion, fees, and taxes may differ.

This guide shows the request flow, runnable examples, how to calculate a dated INR estimate, what affects the bill, and how to handle common errors.

1. How a screenshot API request works

  1. Create an account and obtain an API credential. ScreenshotOne calls its credential an access_key.
  2. Send the target page URL and capture options to the provider over HTTPS.
  3. Receive the rendered screenshot as a binary response or use the provider’s documented image output.
  4. Track successful renders, cache behavior, and plan limits when forecasting spend.

Use HTTPS because a plain HTTP request does not encrypt the request in transit and could expose credentials, headers, cookies, or other sensitive data. ScreenshotOne documents GET requests and also supports POST requests with JSON options. ScreenshotOne getting started documentation.

2. Estimate a screenshot API price in rupees

Providers may publish prices in USD even when you are budgeting in INR. A transparent estimate needs both the USD list price and the date of the exchange rate.

  1. Find the provider’s current plan price and monthly render allowance.
  2. Choose a dated USD/INR reference rate. The RBI explains that it publishes a daily reference rate; check the date associated with the rate you use.
  3. Calculate USD plan price × INR per USD.
  4. Label the result as an estimate and state the rate date. Separately account for taxes, payment conversion, or fees if applicable; the sources here do not establish your exact checkout charge.
ScreenshotOne plan Published monthly price Allowance Estimate at ₹95.8918/USD
Basic $17/month 2,000 screenshots About ₹1,630/month
Growth $79/month 10,000 screenshots About ₹7,575/month
Scale $259/month 50,000 screenshots About ₹24,836/month

These are arithmetic estimates using the MSEI archive’s September 25, 2026 rate, not current exchange quotes or amounts published in INR by a provider. ScreenshotOne says its prices exclude VAT. Verify the live ScreenshotOne pricing page before choosing a plan because prices and features can change. MSEI reference-rate archive; Reserve Bank of India.

For example, the Basic estimate is 17 × 95.8918 = 1,630.1606, or approximately ₹1,630 before any applicable taxes or payment-provider conversion difference. Do not describe this as the exact amount an Indian customer will pay: currency at checkout, card or payment-provider conversion, fees, and applicable taxes are not established by this calculation.

3. Make a screenshot API request

The following documented ScreenshotOne examples show the basic GET flow. Use the provider’s HTTPS endpoint and keep the access key out of source control and client-side code.

curl -G "https://api.screenshotone.com/take" \
  --data-urlencode "access_key=YOUR_ACCESS_KEY" \
  --data-urlencode "url=https://example.com" \
  -o screenshot.png
import requests

response = requests.get(
    "https://api.screenshotone.com/take",
    params={"access_key": "YOUR_ACCESS_KEY", "url": "https://example.com"},
    timeout=90,
)
response.raise_for_status()
with open("screenshot.png", "wb") as image_file:
    image_file.write(response.content)
const params = new URLSearchParams({
  access_key: process.env.SCREENSHOTONE_ACCESS_KEY,
  url: "https://example.com",
});

const response = await fetch(`https://api.screenshotone.com/take?${params}`);
if (!response.ok) {
  throw new Error(`Screenshot request failed: ${response.status} ${await response.text()}`);
}
const image = Buffer.from(await response.arrayBuffer());
await import("node:fs/promises").then(({ writeFile }) => writeFile("screenshot.png", image));

These examples demonstrate URL capture and binary output. Add only options documented by your selected provider, and check the response content type and status before treating the body as an image. ScreenshotOne also documents POST with JSON options; use its official documentation for the request schema and supported capture settings.

4. Compare the costs that affect your INR budget

The plan price alone does not tell you the effective cost per useful screenshot. Check the following terms in the provider’s current documentation:

  • Allowance and overage: monthly included renders and the charge for additional use.
  • Failed requests: whether browser, network, or HTTP failures consume credits.
  • Caching: whether a cache hit avoids a charge and whether a cache miss triggers a billable render.
  • Request limits: rate limits or concurrency constraints that may affect batch workloads.
  • Localization: whether the service can capture from a relevant IP location and which plans include it.
  • Output and capture options: supported formats and rendering controls needed by your application.
  • Taxes: whether listed prices exclude VAT or other taxes.

For reference, Urlbox lists Lo-Fi at $19/month for up to 2,000 renders, Hi-Fi at $49/month for up to 5,000, and Ultra at $99/month for up to 15,000; its published prices exclude VAT. Its tiers distinguish rendering needs and access to third-party website captures. Check its live pricing page for current terms. ScreenshotOne says failed requests with HTTP, browser, or network errors do not consume credits, and cached responses generally do not; a cache miss may trigger a render. Its pricing page lists extra-use rates for paid plans, so include those in a high-volume forecast. ScreenshotOne documentation.

5. Choose a plan and forecast monthly spend

  1. Estimate the number of successful, uncached renders you expect each month.
  2. Compare that workload with the included allowance and the provider’s rules for failures and cache hits.
  3. Check rate limits and location requirements against your workload.
  4. Convert the USD list price using a dated reference rate for planning, then leave room for taxes and payment conversion.
  5. Recheck the provider’s live pricing and terms before subscribing or changing plans.

For ScreenshotOne, the cited pricing page lists 100 free screenshots per month, Basic at $17 for 2,000, Growth at $79 for 10,000, and Scale at $259 for 50,000, with extra-use rates of $0.009, $0.006, and $0.004 respectively. Its page says prices exclude VAT. The effective cost depends on how many renders are billable, not just the plan’s headline allowance.

6. Reliability, performance, and safe handling

  • Use HTTPS: protect the key and any sensitive request data in transit.
  • Set a client timeout: bound how long your application waits, and handle timeout errors as failed requests.
  • Check HTTP status before saving: an error body may not be an image.
  • Plan for response size: full-page captures and high-resolution output can require more memory and storage in your application; stream or persist large responses appropriately.
  • Account for cache behavior: repeated requests may be served from cache under provider rules, while a cache miss can perform a new render.
  • Keep credentials server-side: do not embed secret API keys in public webpages or repositories.
  • Use concurrency deliberately: confirm the provider’s request-rate and plan limits before launching large batches.

No universal capture time or performance benchmark is established here. Page complexity, remote resources, provider limits, cache state, and capture options can all affect completion time and resource use.

7. Troubleshooting

Symptom Likely cause What to do
401 or 403 response Missing, invalid, or restricted API key. Check the key, account status, and endpoint documentation. Keep the key in a server-side secret store.
400 response Malformed URL, missing required parameter, or unsupported option. URL-encode the target URL and validate option names against the provider’s current API schema.
Timeout The page or its resources take longer than the client’s timeout, or the network is slow. Use a suitable client timeout, inspect the target page, and follow the provider’s documented timeout and retry guidance.
Saved file is HTML or JSON The API returned an error response that the client saved as if it were an image. Check status and content type before writing the response as an image; log a safely redacted error body.
Unexpected monthly spend Usage exceeded the allowance, cache misses rendered again, or the plan’s billing rules were misunderstood. Review usage and overage terms, cache behavior, and the provider’s usage records; recalculate using billable successful renders.
Localized page looks wrong The capture’s IP location may not match the target audience, or location capture is unavailable on the current plan. Check the provider’s location options and plan availability before relying on region-specific output.

8. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server for developers. A single GET request returns a PNG, JPEG, WebP, or PDF. Its request options include full-page and selector capture, device presets and custom viewports, dark mode, custom CSS and JavaScript, wait conditions, request blocking, headers and cookies, geolocation, caching, async jobs, bulk capture, and more. See the ScreenshotNeo API documentation for parameters and setup.

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)
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}`);
const image = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(({ writeFile }) => writeFile('shot.webp', image));
  • Cookie and consent banners, newsletter popups, and chat widgets are removed before capture; each cleanup step can be turned off.
  • Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are never billed. Responses report the page verdict and billing status in headers.
  • 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 per month with no card required. Paid plans start at $5 for 3,000 screenshots; every feature is on every plan.

Sign up for ScreenshotNeo’s free plan to get 1,000 screenshots a month with no card.

9. FAQ

Is a rupee estimate the amount my card will be charged?

No. A USD-to-INR calculation is a budgeting estimate. The checkout currency, payment conversion, fees, and applicable taxes can change the final amount.

Should I use the exchange rate from the day I subscribe?

For an estimate, use a dated reference rate and state its date. The actual provider or payment processor may use a different rate.

Do failed screenshot requests always cost nothing?

No single rule applies to every provider. ScreenshotOne documents that HTTP, browser, and network errors do not consume credits, but check the current terms for the service you use.

Can I use a screenshot API from a browser app?

A secret API key should not be exposed in public client-side code. Make the request from a server-side component or use a provider’s documented public-image or signed-link mechanism.

Sources