# SEO and SERP tracking
Source: https://proxuno.com/use-cases/seo-serp-tracking
Updated: 2026-10-01

Use case

Check rankings the way local searchers see them: country- and city-level results, without personalisation or rate-limit pages skewing the data.

Rotating residential Rotating per request, city targeting

## The problem

Search engines localise results down to the city and adapt them to the device and network. A rank tracker running from a datacentre in Frankfurt does not see what a searcher in Lyon sees, and its requests are quickly answered with consent walls, CAPTCHAs or HTTP 429 responses.

Accurate tracking therefore needs many independent requests from residential addresses in the right city, spread over enough IPs that no single address carries a recognisable query pattern.

## Configuration

**Product**
Rotating residential, billed per GB

**Rotation**
Per request (no session parameter)

**Targeting**
-country-fr-city-lyon, one city per tracked market

**Request headers**
Accept-Language and hl/gl parameters matching the target country

**Concurrency**
10–30 parallel requests per market; spread keywords over the day

**Typical volume**
A results page weighs 150–400 KB, so 1 GB covers roughly 3,000–6,000 queries

## Example

Python Copy

```python
import random, time
import requests

LOGIN, PASSWORD = "px7h2k9m4q", "Rq4Tn8Vw2Lx6Bz9C"

def fetch_serp(query, country="fr", city="lyon"):
user = f"{LOGIN}-country-{country}-city-{city}"
proxy = f"http://{user}:{PASSWORD}@resi.gw.proxuno.com:7000"
r = requests.get(
"https://www.google.com/search",
params={"q": query, "hl": "fr", "gl": country, "num": 20},
headers={"Accept-Language": "fr-FR,fr;q=0.9"},
proxies={"http": proxy, "https": proxy},
timeout=30,
)
r.raise_for_status()
return r.text

for keyword in ["avocat droit du travail lyon", "plombier lyon 3"]:
html = fetch_serp(keyword)
time.sleep(random.uniform(2, 5))
```

Example credentials. Replace them with yours from the dashboard.

## Best practices

- Match the language parameters and the Accept-Language header to the targeted country; mismatches produce mixed-language results.
- Do not reuse cookies between queries. Personalisation from one search leaks into the next.
- Retry a CAPTCHA or 429 response once through a new IP, then back off for that keyword instead of hammering it.
- Store the raw HTML with the timestamp and the exit country so ranking changes can be audited later.

Compliance

Collect only public result pages, respect the search engine's rate limits and do not use the data to manipulate rankings through automated clicks.

[Read the acceptable use policy](/acceptable-use)

Recommended product

Rotating residential

Pay per GB, Europe-wide pool, city targeting and sticky sessions.

From $3.80per GB

[Order](/signup?next=%2Fdashboard%2Fbuy%3Fproduct%3Dresi-rotating%26gb%3D10) [Product details](/residential-proxies)

Alternative

[Mobile 4G/5G](/mobile-proxies)

Use a dedicated mobile proxy when you track mobile-only results or need carrier-level locality, for example to audit a single market every day.

## Other use cases

[Use cases](/use-cases)

- [Web scraping Rotating residential](/use-cases/web-scraping)
- [Social media management Mobile 4G/5G](/use-cases/social-media-management)
- [Ad verification Rotating residential](/use-cases/ad-verification)
- [E-commerce price monitoring Rotating residential](/use-cases/ecommerce-price-monitoring)
- [Geo-testing and localisation QA Mobile 4G/5G](/use-cases/geo-testing)
- [Market research Static ISP](/use-cases/market-research)

## Run your first request in under five minutes

Create an account, add funds in crypto and start with a 24-hour mobile proxy — paid from your balance and delivered instantly.

[Create an account](/signup) [Compare pricing](/pricing)
