ScreenshotNeo

BlogHow-to

How to Capture Screenshots of Product Pages on Pepperfry for Price Monitoring

Capture Pepperfry product pages with the price, selected variant, and delivery context visible. Save the URL and timestamp so each image is useful later.

By the ScreenshotNeo team4 October 20267 min read

A screenshot gives you a visual record of what a Pepperfry product page displayed at a particular moment. For useful price monitoring, capture the product identity and displayed price together when possible, and save the exact URL, capture time, selected variant, and delivery-location context alongside the image. A screenshot alone does not track changes: repeat the capture on a schedule if you need a history.

1. Decide what the screenshot needs to prove

Before capturing, identify the details that could change what a price means:

  • Product identity: Keep the product name or another clear identifier in the image.
  • Selected variant: Note the selected color, size, finish, or other option when relevant. A price may depend on the variant.
  • Displayed price: Include the current price and, if visible, the discount or former price.
  • Delivery context: Record the delivery location or estimate if it appears and matters to your comparison.
  • Time and URL: Save the exact product URL and capture time, even if they do not fit in the screenshot.

Pepperfry’s merchant agreement describes sale prices as dynamic and volatile and says merchants may revise them before purchase. Treat an image as evidence of what appeared when you captured it, not as a guarantee of a future price. Pepperfry E-Commerce Services Agreement

2. Capture a product page manually

  1. Open the exact Pepperfry product page in your browser.
  2. Select the variant you intend to monitor, if the page offers choices.
  3. Set the delivery location if you need location-specific delivery context.
  4. Wait for the page and price to finish loading. Check that the intended product, variant, and price are visible.
  5. Use your browser’s screenshot feature or your operating system’s screenshot shortcut to capture the visible page.
  6. Save the image with a descriptive filename and store the URL and capture time in the filename, a note, or a tracking sheet.

For example, a filename might be pepperfry-chair-2026-10-04T1430Z.webp. Keep the URL in a sidecar note or spreadsheet if including it in the filename would make the name unwieldy.

If the price and product identity fit together in one viewport, a viewport screenshot is often the easiest image to compare. If important context is below the fold, capture additional screenshots while scrolling or use a full-page capture. Long full-page screenshots can make small price text harder to inspect, so choose the format that preserves the evidence clearly.

3. Automate repeat captures with Playwright

For a small list of URLs or a repeatable capture routine, Playwright can save screenshots of a page, the full scrollable page, or a specific element. The example below captures a viewport screenshot after navigation. Replace the sample URL with the exact Pepperfry product URL you are monitoring.

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

const productUrl = 'https://www.pepperfry.com/'; // Replace with the exact product URL.
const capturedAt = new Date().toISOString().replaceAll(':', '-');
const outputPath = `captures/pepperfry-product-${capturedAt}.png`;

await mkdir('captures', { recursive: true });
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1440, height: 1100 } });

try {
  await page.goto(productUrl, { waitUntil: 'domcontentloaded', timeout: 60000 });
  await page.screenshot({ path: outputPath });
  console.log(JSON.stringify({
    url: page.url(),
    capturedAt: new Date().toISOString(),
    screenshot: outputPath
  }, null, 2));
} finally {
  await browser.close();
}

Install Playwright in a Node.js project with npm install playwright. Install its browser binaries with npx playwright install chromium. Save the code as capture.mjs and run it with node capture.mjs.

For full-page or element-only capture, replace the screenshot line with one of these options:

// Capture the full scrollable page.
await page.screenshot({ path: outputPath, fullPage: true });

// Capture a specific element; replace the selector with one verified on the page.
await page.locator('YOUR_PRODUCT_SELECTOR').screenshot({ path: outputPath });

See the Playwright screenshots guide and the Playwright Page API for screenshot options and behavior. A selector-based capture is useful when the product details sit in a stable component, but page markup can change; check that the chosen element still contains the product identity and price.

4. Keep a useful monitoring record

Save metadata separately so an image can be interpreted later. A spreadsheet row or JSON record can include:

  • Capture timestamp, preferably in ISO 8601 format and with a timezone.
  • Exact product URL.
  • Product name or your own stable product identifier.
  • Selected variant.
  • Delivery location or visible delivery context.
  • Screenshot filename and capture outcome.

For recurring monitoring, use a scheduler to run the capture program at the interval you need, and keep each capture rather than overwriting the previous image. A single screenshot is a snapshot; a sequence of timestamped snapshots is a visual history. If you need structured price fields for alerts or analysis, image capture alone may not be sufficient.

5. Choose an approach that fits the monitoring job

Approach Works well for Trade-offs
Manual browser capture A few products and occasional checks Simple to start, but requires someone to repeat the capture and record context.
Playwright automation A repeatable set of screenshots on a schedule Requires setup and maintenance; page behavior and selectors can change.
Commercial tracking or scraping service Recurring or larger-scale collection, especially when structured fields are needed Check current capabilities, pricing, geographic behavior, and applicable site requirements before relying on a service.

Bright Data markets Pepperfry-specific price tracking and scraping products and describes collecting prices, discounts, and other product fields. Those are vendor descriptions, not independent accuracy tests; verify current details directly with its Pepperfry Price Tracker page and its Pepperfry Scraper page. The sources available for this guide do not establish that every automated collection pattern is permitted. Review the relevant terms and requirements for your use before scheduling repeated requests.

6. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server from Yorker Media. Make one GET request with the product URL to receive a screenshot. See the ScreenshotNeo documentation for request options and response details.

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

Replace the sample address with the exact product URL. The same request can be made from Python:

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://www.pepperfry.com/"},
    timeout=90,
)
r.raise_for_status()
with open("pepperfry-product.webp", "wb") as image:
    image.write(r.content)

Or from Node.js:

const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://www.pepperfry.com/'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await import('node:fs/promises').then(({ writeFile }) =>
  writeFile('pepperfry-product.webp', Buffer.from(await res.arrayBuffer()))
);

ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before capture. Bot checks, blank pages, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server lets AI agents use screenshot tools. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.

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

7. Troubleshooting

Symptom Likely cause What to do
The screenshot shows a loading state or missing price. The page had not rendered the relevant content when capture ran. Wait for a known page element or add a short wait after navigation, then inspect a sample capture before scheduling repeated runs.
The image has the wrong product or price. The URL, selected variant, or delivery location differs from the intended record. Confirm the exact URL and visible selections; store variant and location with every capture.
The product section is cut off. A viewport capture does not include content below the fold. Increase viewport height, capture the full page, or capture the relevant element if a stable selector is available.
The full-page image is too tall to compare. The page contains substantial content beyond the price context. Use a viewport shot that includes product identity and price, or capture the product details element instead.
Playwright times out during navigation. The site is slow, or the chosen navigation completion condition waits on activity that continues. Use a suitable timeout and a lighter navigation condition such as domcontentloaded; then wait for the specific content you need.
A selector capture fails or captures the wrong area. The selector is invalid, ambiguous, or changed with the page layout. Inspect the current page, choose a unique selector, and verify the resulting image after page changes.
Automated requests receive a challenge or do not produce a useful page. The site may be presenting a bot check or otherwise limiting automated access. Do not treat a challenge page as a product price. Review applicable site requirements and use a permitted capture method.

8. Performance, reliability, and cost

  • Keep the capture small: A viewport or product-element screenshot is usually faster to store and review than a long full-page image.
  • Use a deliberate schedule: Choose a capture frequency that suits the decision you need to make. A shorter interval creates more images and more requests to maintain.
  • Preserve history: Use timestamped filenames and keep metadata alongside the image. Avoid replacing the prior capture if you need comparisons over time.
  • Check outcomes: Review sample images and retain a capture status so a failed navigation or challenge is not mistaken for a price observation.
  • Budget for maintenance: Browser automation requires a runtime, browser installation, and occasional updates when page structure or behavior changes. A hosted service has its own current pricing and limits; verify these before depending on it.
  • Separate visual evidence from structured data: Screenshots are useful for auditing what appeared. If your workflow needs numeric price extraction, change alerts, or analysis across many listings, plan for a separate structured collection method.

9. Frequently asked questions

Does one screenshot monitor a price over time?

No. It records one page state. You need repeated captures or another tracking workflow to build a history.

Should I use a full-page screenshot every time?

No. Use one when relevant context is below the fold. If product identity and price fit in a viewport, that can be easier to review.

Can I compare prices from different delivery locations?

Only if you record the location context for each observation and compare like with like.

Does a captured price guarantee what I will pay later?

No. It documents what appeared at capture time. The merchant agreement describes sale prices as dynamic and subject to revision before purchase.