How to Compare Amazon India Search Results With Competitor Page Screenshots
Compare Amazon.in results with competitor pages using a repeatable capture record, a fair product match, and clear price and promotion checks.
To compare Amazon India search results with competitor product-page screenshots, capture the same Amazon.in query and relevant product pages close together in time, record the conditions for each capture, and compare only genuinely similar products. Treat each screenshot as evidence of what was visible at that moment—not as a universal ranking or current price. Record product identity, title, main image, displayed price, promotion, availability, and timestamp separately.
This guide covers a repeatable manual workflow, a runnable browser-capture example, a comparison template, seller-side checks, common failure modes, and an API option. The recording controls below are practical reproducibility recommendations; they are not claims about Amazon policy or guaranteed controls over personalization.
1. Decide what the comparison is meant to answer
Write down the question before collecting screenshots. Examples include: which products appear for a particular query, how a competing listing presents its title and image, or what price and promotion were displayed during a specific observation. A single capture can answer what was visible in that capture. It cannot, by itself, establish a stable market price, a general ranking, or why a result appeared.
Amazon Seller Central describes competitor research in terms of competitor number, size, selection, pricing, and promotions. Those dimensions are a useful starting point, but first confirm that the products are meaningfully comparable. Check model, variant, pack size or quantity, and offer terms before calling one cheaper or better value. Amazon Seller Central: Using Research
2. Record the capture conditions
Search results and offers are observations tied to a query and a time. Keep a capture note beside every screenshot so someone else can interpret or repeat the observation.
| Field | What to record | Why it helps |
|---|---|---|
| Marketplace and query | Amazon.in and the exact search text, including spelling and filters | Identifies the search being compared. |
| Capture time | Date, time, and timezone | Prices, promotions, availability, and visible results can change. |
| Delivery location | PIN code or delivery location if set; otherwise mark unknown or unset | Preserves the delivery context shown in the observation. |
| Device and viewport | Phone or desktop, browser, and viewport dimensions | Makes layout and visible content easier to reproduce. |
| Session state | Signed in, signed out, or unknown | Documents context without assuming its effect on results. |
| Page identity | Full URL, product identifier or ASIN if visible, and query rank as captured | Lets readers locate the specific result or listing. |
A filename can carry the essentials, for example amazon-in_wireless-headphones_560001_desktop_2026-10-04T1030Z_search.png. Store more detail in a sidecar note if the filename becomes unwieldy. Use the same browser and viewport when practical, and capture the results and detail pages close together in time.
3. Capture the search results and competitor pages
- Open Amazon.in and enter the exact query. Record any filters or sort order that you apply.
- Record the visible result order and the rank of each candidate as it appears in that capture. Do not label the observed order as a permanent ranking.
- Open each relevant competitor product page and capture enough context to identify the product and offer. Keep its URL or product identifier with the image.
- Save an unmodified original of every screenshot. If you annotate or crop a working copy, retain the original and do not hide price, variant, delivery, or promotion conditions.
- Repeat the process for your own listing, if relevant, under the same documented conditions.
Amazon’s image guidance says the main image is also shown in search. Its title guidance says titles help customers identify, differentiate, and compare products. That makes the search image and title useful comparison fields, but screenshots only show the presentation captured at that time. Amazon Seller Central: Product image guide · Amazon Seller Central: Product title requirements and guidelines
4. Build a comparison table and separate facts from interpretation
Use one row per product and one observation date per capture set. Fill absent values with “not visible” or “unavailable”; do not infer them from another listing or from memory.
| Observed field | Record |
|---|---|
| Query rank | Position observed on the results page, with capture conditions |
| Product identity | ASIN or URL if visible; brand, model, variant, and quantity |
| Title | Visible title as shown; preserve the original screenshot for exact wording |
| Main image | Brief description of the visible subject and presentation |
| Displayed price | Amount and currency exactly as displayed |
| Promotion | Visible coupon, deal, discount, or offer terms; note if none is visible |
| Delivery and availability | Visible delivery estimate, stock or availability text, and location context |
| Evidence | Screenshot filename, URL, capture timestamp, timezone, device, and session note |
Keep observation and interpretation distinct. “The screenshot displayed ₹X at 10:30 UTC” is an observation. “The competitor is cheaper” is a conclusion that requires checking the matching variant, quantity, shipping or delivery context, and applicable offer terms. If any of those are not comparable, qualify the conclusion or leave it unresolved.
5. Interpret displayed prices and promotions carefully
Record the price shown, the reference price if shown, and each promotion separately. Do not assume a displayed discount proves the item is cheaper than a comparable offer. Verify that the comparison uses the same quantity and variant, and note whether a coupon or other offer needs to be applied.
Amazon Seller Central India describes Was Price as a 90-day median of prices paid by customers. Reference-price rules and effective dates can change; the dossier also identifies announced 2026 changes to List Price validation and Typical Price calculation. Check the live Seller Central guidance before relying on a reference price or applying a rule to a current listing. Amazon Seller Central: Reference Price guidance · Amazon Seller Central: Upcoming Improvements to Reference Pricing
6. Cross-check with seller-side dashboards when available
If you have seller access, compare the visual observation with the relevant Seller Central reporting view and write down its reporting window. The Search Query Details dashboard announcement describes query-level ASIN comparisons and weekly, monthly, and quarterly periods, with a score based on impressions, clicks, cart additions, and purchases. The Similar Product dashboard announcement describes tracking prices for up to five similar products. These dashboard descriptions and interfaces may change; verify availability and labels in the live account. They provide a different evidence source from a screenshot, so do not treat one as a substitute for the other.
- Amazon Seller Central: Search Query Details dashboard
- Amazon Seller Central: Similar Product dashboard
7. Automate repeatable browser captures
For a documented, repeatable capture of a page you can access, a browser automation library can save a screenshot and the page URL. This Python example uses Playwright, waits for the page load event, writes a full-page PNG, and emits a JSON sidecar with the conditions to review. Install Playwright and its browser first with pip install playwright and playwright install chromium. Set AMAZON_URL to the exact search or product URL you are recording.
import asyncio
import json
import os
from datetime import datetime, timezone
from pathlib import Path
from playwright.async_api import async_playwright
async def main():
url = os.environ["AMAZON_URL"]
pin_code = os.getenv("DELIVERY_PIN", "unset")
out = Path("capture")
out.mkdir(exist_ok=True)
captured_at = datetime.now(timezone.utc).isoformat(timespec="seconds")
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page(viewport={"width": 1440, "height": 1000})
response = await page.goto(url, wait_until="domcontentloaded", timeout=60000)
# A short settling wait lets client-side content render; it does not
# guarantee that every image, price, or offer has finished updating.
await page.wait_for_timeout(2500)
name = "amazon-in-capture"
await page.screenshot(path=str(out / f"{name}.png"), full_page=True)
metadata = {
"marketplace": "Amazon.in",
"requested_url": url,
"final_url": page.url,
"http_status": response.status if response else None,
"captured_at_utc": captured_at,
"delivery_pin": pin_code,
"viewport": {"width": 1440, "height": 1000},
"browser": "Chromium via Playwright",
"session_state": "signed out or site-dependent; verify manually",
"screenshot": f"{name}.png",
}
(out / f"{name}.json").write_text(json.dumps(metadata, indent=2))
await browser.close()
asyncio.run(main())
This is a capture skeleton, not a guarantee that Amazon will show the same results in every run. Review the saved page for consent prompts, bot checks, incomplete content, or a changed delivery location. The script does not sign in, set a PIN code on the site, interpret product variants, or determine whether two offers are equivalent; document and verify those fields manually. Use capture methods and frequency appropriate to your access and applicable terms; the sources used here do not establish a permitted automation frequency or method.
8. Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server for developers. A single GET request captures a URL as an image or PDF. For this example, the target can be an Amazon.in search or competitor page URL that you are able to access. See the ScreenshotNeo API documentation for parameters and response details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.amazon.in/s?k=wireless+headphones -o shot.webp
import requests
url = "https://www.amazon.in/s?k=wireless+headphones"
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": url},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
const target = 'https://www.amazon.in/s?k=wireless+headphones';
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: target });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
Replace the example target with your exact search or product URL and save the capture time, delivery context, viewport, and session state in your comparison notes. ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses indicate the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents. 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.
9. Troubleshoot incomplete or misleading captures
| Symptom | Likely cause | What to do |
|---|---|---|
| The screenshot shows a bot check or CAPTCHA | The page did not render the expected results for that request or session. | Mark the capture as a bot check, retain the evidence, and do not treat it as a product result. Revisit using an appropriate ordinary browser session. |
| The page is blank or partly rendered | Capture occurred before content rendered, navigation failed, or page content did not load. | Check the final URL and response status, wait for a meaningful page element rather than relying only on a fixed delay, and recapture if appropriate. |
| Images or prices are missing | Lazy loading or client-side updates may not have completed. | Allow the page to settle, scroll relevant content into view when using browser automation, and verify the visible result manually. Keep the original incomplete capture labeled as such. |
| The screenshot does not show the expected delivery context | The location was unset, changed, or not applied in the session. | Record the context as unknown until verified on the page; do not infer it from the URL alone. |
| Two products seem comparable but the price conclusion looks wrong | Variant, quantity, shipping, coupon eligibility, or offer terms differ. | Compare the exact variants and terms; report observed prices separately if equivalence cannot be established. |
| A later recapture differs from the first | The query, time, availability, session, location, device, or page content changed. | Compare metadata first, note the changed conditions, and describe the captures as separate observations. |
| API request returns an error or non-image response | There may be an invalid key or URL, request failure, or a page verdict that is not a clean capture. | Check the HTTP status, response headers, access key, and target URL. Keep the returned verdict and billing headers with the record; do not assume every response is an image. |
10. Improve reliability and control cost
- Keep provenance: store original screenshots with a sidecar record, and use a stable naming convention.
- Capture close in time: reduce the gap between search results and detail-page captures; still record each timestamp.
- Repeat when the decision matters: one screenshot is a time-specific observation. A later repeat reveals whether the conditions or displayed content changed, but does not prove why.
- Handle failures explicitly: label bot checks, blank pages, timeouts, and missing content rather than silently dropping them from a comparison.
- Limit unnecessary work: capture the small set of relevant results and pages, and avoid recapturing unchanged pages without a reason. For automated runs, set sensible timeouts and retain status metadata.
- Account for API usage: ScreenshotNeo lists 1,000 free shots monthly, then plans of $5 for 3,000, $15 for 15,000, $39 for 60,000, $99 for 250,000, and $249 for 1,000,000; yearly billing gives two months free. All features are on every plan. A cache hit is not billed, and only clean shots are billed, according to the supplied product facts.
No benchmark or guaranteed capture speed is asserted here. Actual capture duration depends on the page and request. For dependable comparisons, preserve failures and their headers as part of the record rather than interpreting a missing screenshot as evidence about a product.
Frequently asked questions
Can one screenshot prove a competitor is always cheaper?
No. It records a displayed offer at a particular moment and under particular conditions. Confirm product equivalence and offer terms, and qualify the time-specific observation.
Should I compare a search result image with a product-page image?
You can compare presentation, but label the source and context for each image. Amazon’s guidance identifies the main image as the one also shown in search; a screenshot remains evidence of what was visible in that capture.
How many competitor products should I include?
Include the products relevant to your stated question and explain how you chose them. Amazon’s Similar Product dashboard announcement describes a tool for comparing up to five similar products; that is a dashboard capability, not a required limit for screenshot research.
Can I use these captures to infer why a listing ranked where it did?
No. The screenshot records visible order, not the cause of that order. Use the relevant seller reporting data for query performance when available, and avoid causal claims the evidence does not support.


