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
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.