How to Track Competitor Search Results Screenshots Across Indian States
Build an auditable workflow for comparing competitor search results across Indian states, with consistent location, device, language, and capture records.
To track competitor search results across Indian states, keep the query, search engine, location, language, device, and capture time consistent for each sample. Save the original screenshot with those settings in a manifest, and compare only samples whose settings match. A screenshot records one configured search context; it does not prove what every person in that state sees.
Google can use multiple signals to estimate location, and Google Ads distinguishes a location targeted by an advertiser from the location associated with a user or their interest. A state name by itself does not document all the conditions behind a result. Google Ads: About measuring geographic performance and Google: How location information is used explain these distinctions.
1. Decide what the screenshots need to answer
Write down the business question before collecting results. For example: “Does our competitor appear in ordinary organic results for this non-branded query in Maharashtra and Karnataka?” That is more actionable than collecting a folder of unlabeled pages.
- Choose the search surface: ordinary organic listings, local pack or Maps visibility, or sponsored placements. Keep them separate in your notes and analysis.
- Choose the geography: state or region for a state-level question; city or locality if that is where the business competes. State-level samples can conceal city-level differences.
- Choose the market list: name each Indian state or city you intend to compare. Confirm that your selected tracker supports the precise location labels you need before committing to a recurring workflow.
- Choose the cadence: capture at an interval that fits the decision. One screenshot is a snapshot, not evidence of a lasting trend.
- Set the competitor scope: use the same competitor domains in each market for organic comparisons. Local-pack competitors may differ, so record that surface separately.
2. Freeze the query set and sampling dimensions
Use the exact same query strings in every location. Put branded and non-branded terms in separate groups. Preserve spelling, punctuation, and language variants when they are part of the question; do not quietly replace one variant with another between states.
For every capture, record these dimensions:
| Dimension | What to record | Why it matters |
|---|---|---|
| Query | Exact typed phrase, including language or spelling variant | Different query wording is a different sample. |
| Search engine | Engine and, if relevant, interface or domain | Do not mix different search products as one comparison. |
| Location | Selected state, city, or locality and the tool’s exact label | Geographic targeting and inferred location are not identical concepts. |
| Language | Search language or interface language, as applicable | Keep language settings stable; label variants explicitly. |
| Device | Mobile or desktop, plus viewport/device preset if captured manually | Compare mobile with mobile and desktop with desktop. |
| Time | Timestamp and timezone | Results can change over time; timestamps make snapshots auditable. |
| Surface | Organic, local pack/Maps, ads, or a combination clearly marked | These are different kinds of visibility. |
| Method | Tracker or manual browser, and its location configuration | A mismatch may result from different sampling contexts. |
Google documents that location estimates may draw on device location, IP address, previous activity, account home or work addresses, and metadata. These signals are one reason to document the setup rather than treating a state label as a complete description of the sample.
3. Choose a collection method
Use a rank tracker for repeated, broad monitoring
A tracker can reduce repeated manual work when you have many queries, locations, competitors, or reporting periods. Evaluate a service against the actual job rather than assuming every product supports the same locations or stores the same evidence.
- Can it target the country, state or region, city, or postal code you require in India?
- Can it hold device and language settings stable across samples?
- Can the same competitor set be monitored in each location?
- Can it identify local-pack visibility separately from ordinary organic results?
- Does the current plan preserve dated screenshots or SERP history, and can you export what you need?
Semrush documents location, device, competitor, and local-pack setup in its Position Tracking configuration guide and ranking tracking guide. Its help page says the original location and device cannot be changed after a Position Tracking setup is created, so verify those choices first and create a separate target when a new sample requires different settings. Ahrefs explains why a tracked keyword needs a location and notes that rankings can differ by location in its Rank Tracker location guide. Confirm current Indian location coverage in the live product before relying on a particular state or city picker.
Use a manual browser check for a small, deliberate sample
A manual check can suit a small number of queries and markets, but it is easy to produce a misleading comparison if the browser context changes. Use a consistent browser setup, deliberately select the intended location where possible, record the settings and time, and retain the unedited capture. A manual result is still a sample from that browser and configuration, not a universal view for a state.
4. Capture and label evidence consistently
- Create a fixed query list and a fixed competitor-domain list. Mark branded and non-branded queries separately.
- For each query, create a sample for every planned location and device. Keep search engine and language fixed unless the comparison explicitly tests them.
- Set the location at the geographic level that matches the decision. Use the same level for all compared markets.
- Capture the relevant surface. If the question concerns organic competitors, do not fold sponsored listings or local-pack results into the organic ranking notes.
- Save the original screenshot and record the exact query, location, device, language, search engine, timestamp, timezone, method, and surface.
- Repeat on the declared cadence. If the search interface or tracking setup changes, note it so later observations are not mistaken for an uninterrupted series.
- Compare only samples with matching dimensions. If a dimension differs, report it as a separate sample rather than attributing the difference to state alone.
A practical filename pattern is YYYY-MM-DD_engine_state-city_device_language_query. Replace spaces and punctuation with safe separators, but keep the exact query in the manifest because a filename may need normalization.
2026-10-04_google_maharashtra-pune_mobile_english_best-accounting-software.webp
Keep a small CSV manifest next to the captures. This example is a recordkeeping format, not a claim about any tool’s export capability:
captured_at,timezone,query,search_engine,location_label,device,language,surface,method,filename,notes
2026-10-04T09:30:00,Asia/Kolkata,"best accounting software",Google,"Pune, Maharashtra",mobile,English,organic,manual,2026-10-04_google_maharashtra-pune_mobile_english_best-accounting-software.webp,"Original capture retained"
If you crop a screenshot for a report or presentation, retain the original privately so the source evidence can still be checked.
5. Interpret state-to-state differences carefully
First check that the two records match on query, search engine, location granularity, device, language, surface, method, and capture period. If they do, you can describe what appeared in those configured samples. Avoid saying that the result is what every user in the state sees.
A manual browser and a rank tracker may disagree because their location, account, device, language, or other sampling context differs. Investigate those dimensions before concluding that one source is wrong. Google Ads geographic reporting is also not a substitute for organic competitor screenshots: it measures campaign performance, may include locations of interest, and can differ from third-party tracking or web logs. Some sub-country metrics may not add up to country totals because impressions can be matched only at country level. See Google’s geographic performance documentation.
6. Separate organic, local, and paid visibility
Record ordinary organic listings, local-pack or Maps results, and ads as distinct surfaces. Google says Search ads are labeled and advertisers cannot buy a boost in organic rankings. For advertiser and creative research, use the Ads Transparency Center, which Google describes as a searchable resource for ads from verified advertisers. Do not describe an ad report or an ad screenshot as an organic competitor ranking.
Semrush describes local-pack tracking as a separately identifiable tracking dimension in its Local Pack Rankings announcement. Because that source is historical, verify current behavior in the product before depending on a specific implementation detail.
7. “How do I see Google search results for different Indian states?”
Use a location-aware tracker or a documented manual sampling setup. Select the same geographic level for each state, hold query, search engine, language, device, and surface constant, and save each result with its exact settings and timestamp. The available geographic specificity can vary; check the current location picker for the markets you need.
8. “Do search rankings change by state in India?”
Rankings can differ by location. Ahrefs’ Rank Tracker help states, “Different locations will reflect different keyword ranking positions.” Treat that as a reason to sample the markets that matter to your business, not as a promise that every query will change between every pair of states.
9. “How can I compare local Google rankings across cities?”
Create a separate, consistently configured sample for each city. Use the same queries, device, language, search engine, surface, competitor scope, and time window. Keep local-pack visibility distinct from organic listings, and do not substitute a state-level sample for a city-level business question.
10. “How do I save proof of what competitors rank for?”
Save the original capture with a timestamp and a manifest of the exact query and sampling settings. Keep edits or crops separate from the original. This makes the observation easier to audit later, while preserving the limitation that it represents one configured context.
11. Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server from Yorker Media. It can capture a search page when you provide a URL, and supports PNG, JPEG, WebP, or PDF output. For a manual, visible search URL you have prepared with the location and query settings you want, call the screenshot endpoint like this. The request captures the supplied URL; it does not select or verify an Indian search location for you. Preserve your manifest and sampling controls either way.
See the ScreenshotNeo API documentation for request parameters and options.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" \
-d access_key=YOUR_API_KEY \
--data-urlencode url="https://www.google.com/search?q=best+accounting+software" \
-o shot.webp
Python
import requests
url = "https://www.google.com/search?q=best+accounting+software"
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": url},
timeout=90,
)
r.raise_for_status()
with open("shot.webp", "wb") as image_file:
image_file.write(r.content)
Node.js
const target = 'https://www.google.com/search?q=best+accounting+software';
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 bytes = new Uint8Array(await res.arrayBuffer());
await (await import('node:fs/promises')).writeFile('shot.webp', bytes);
ScreenshotNeo removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; response headers report the page verdict and billing status. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Every feature is on every plan. These capture features do not replace accurate location selection or a dated record of your search settings.
Sign up free for 1,000 screenshots a month, with no card required.
12. Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| The manual browser and tracker show different competitors | Location, account or activity, device, language, or sampling method differs. | Compare the manifest fields, align the settings, then take a fresh sample. Describe any remaining difference as a context-specific observation. |
| A state or city is missing from the tracker | The location picker may not offer that exact granularity or label. | Check current coverage before setup. Use a consistent supported geographic level and record its exact label; do not claim state-level coverage from a broader target. |
| Mobile and desktop results appear mixed | Device was not held constant or was omitted from filenames and records. | Separate device samples and compare mobile with mobile, desktop with desktop. |
| Organic visibility looks inflated | Ads or local-pack entries may have been counted as organic results. | Re-label each surface and analyze ordinary organic listings separately. |
| One state’s report differs from the country total | Geographic reporting may assign some impressions only to country level, and location reports can differ from other sources. | Do not force sub-country totals to equal the country total; use the report’s documented scope and avoid presenting ad reporting as organic screenshot evidence. |
| The tracker has the wrong location or device | Some setup choices may be locked after project creation. | Check configuration constraints before starting. Semrush documents that the original Position Tracking location and device cannot be changed; create a separate target for a distinct sample. |
| The screenshot filename is ambiguous later | Only a state or query fragment was saved. | Retain the exact query and full settings in a manifest, include a timestamp, and preserve the original image. |
13. Performance, reliability, and cost
For a small query-location set, manual capture may be workable. As the number of queries, locations, devices, and repeat periods grows, the evidence and setup workload grows too; a tracker may help with repeated monitoring. This is workflow guidance, not a measured speed comparison. Estimate the work from your own sample matrix: query count × locations × devices × capture periods.
Reliability comes from consistent configuration and an audit trail, not from collecting more screenshots without labels. Record changes to the browser, tracker, search interface, or location setup. Re-capture failed or incomplete samples and mark them as such rather than silently omitting them.
For paid tracking services, verify current plan limits, location coverage, history retention, and export behavior before buying. The research available for this guide does not establish those current limits for Semrush or Ahrefs. Google Ads geographic reports have a different purpose and matching model; they are not a free substitute for organic SERP capture. For ScreenshotNeo, the stated plans are Free: 1,000 monthly shots; Starter: $5 for 3,000; Growth: $15 for 15,000; Pro: $39 for 60,000; Scale: $99 for 250,000; Business: $249 for 1,000,000. Yearly billing gives two months free. All features are included on every plan. Its billing rules mean only clean shots are billed, so inspect the response’s page-verdict and billed headers when automating captures.
14. FAQ
Should I compare states or cities?
Use the geographic level that matches the business decision. A state sample suits a state-level comparison; a city or locality is usually more informative for a location-specific service area.
Can a screenshot prove what every searcher in a state sees?
No. It documents one result page under one set of location, device, language, account, and time conditions.
Can I use Google Ads location reports to show organic competitor rankings?
No. Those reports describe ad campaign performance and may use location matching that differs from other sources. Keep them separate from organic screenshots.
Should local-pack results count as organic rankings?
Track and report them separately. They are a different search surface from ordinary organic listings.
Sources
- Google Ads Help: About measuring geographic performance
- Google: How Google uses location information
- Google Search: Ads on Search
- Google Ads Transparency Center
- Semrush: Configuring Position Tracking
- Semrush: Track your rankings
- Ahrefs: Choosing a Rank Tracker location
- Semrush: Position Tracking Local Pack Rankings


