Skip to content
Back to Blog

Guides

Using Proxies for SEO Rank Tracking: Accurate Data at Scale

ZentisLabs Team10 min read

Accurate SEO rank tracking requires seeing search results the way real users do - from different locations, without personalization. Proxies are essential for this: they let you query Google, Bing, and other search engines from any country, state, or city without your own IP getting blocked or served skewed results.

Why Proxies Are Essential for Rank Tracking

  • Geo-specific results: Google shows different rankings based on your location. A user in Berlin sees different results than one in Tokyo.
  • No personalization bias: Your own search history skews results. Proxies give you a clean, unbiased SERP.
  • Scale without blocks: Search engines rate-limit and block repeated queries from the same IP. Rotating proxies spread requests across thousands of IPs.
  • Competitor monitoring: Track competitor rankings across multiple markets simultaneously.

Which Proxy Type for SEO?

Residential proxies are the best choice for SEO rank tracking. Search engines are extremely aggressive at detecting datacenter IPs. Residential IPs hold up far better because they're assigned to real ISP customers.

ZentisLabs residential proxies support geo-targeting at the country level in 195+ countries, and down to state and city on Light & Basic, which means you can check rankings from "Houston, TX" or "London, UK" specifically.

Implementation: Python SERP Scraper

python
import requests
from bs4 import BeautifulSoup
import time
import random
def check_ranking(keyword, target_domain, country="us", state=None, city=None):
"""Check where target_domain ranks for a keyword on Google."""
# ZentisLabs geo-targeted proxy (a city needs its state)
proxy_pass = f"PASS_country-{country}"
if state:
proxy_pass += f"_state-{state}"
if city:
proxy_pass += f"-city-{city}"
proxy = f"http://USER:{proxy_pass}@basic.resi.zentislabs.com:12321"
proxies = {"http": proxy, "https": proxy}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept-Language": "en-US,en;q=0.9",
}
url = f"https://www.google.com/search?q={keyword}&num=100&hl=en"
r = requests.get(url, proxies=proxies, headers=headers, timeout=15)
soup = BeautifulSoup(r.text, "html.parser")
results = soup.select("div.g a[href]")
for i, link in enumerate(results, 1):
href = link.get("href", "")
if target_domain in href:
return {"keyword": keyword, "position": i, "url": href}
return {"keyword": keyword, "position": None, "url": None}
# Track multiple keywords
keywords = ["best residential proxies", "rotating proxy service", "web scraping proxy"]
for kw in keywords:
result = check_ranking(kw, "zentislabs.com", country="us")
print(f"{kw}: Position {result['position']}")
time.sleep(random.uniform(3, 7)) # Respectful delay

Multi-Location Tracking

Track the same keywords across multiple locations to understand your global SEO performance:

python
locations = [
{"country": "us", "state": "newyork", "city": "newyork", "label": "New York"},
{"country": "us", "state": "california", "city": "losangeles", "label": "Los Angeles"},
{"country": "gb", "state": "england", "city": "london", "label": "London"},
{"country": "de", "state": "berlin", "city": "berlin", "label": "Berlin"},
{"country": "jp", "state": "tokyo", "city": "tokyo", "label": "Tokyo"},
]
keyword = "best proxy service"
for loc in locations:
result = check_ranking(
keyword, "zentislabs.com",
country=loc["country"], state=loc.get("state"), city=loc.get("city")
)
print(f"{loc['label']}: Position {result['position']}")
time.sleep(random.uniform(5, 10))

Best Practices

  • Rotate IPs per query: Never hit Google twice from the same IP. ZentisLabs rotates automatically on each request.
  • Add delays: 3-10 seconds between queries mimics human behavior.
  • Use realistic User-Agents: Rotate through current browser User-Agent strings.
  • Track consistently: Run checks at the same time daily for comparable data.
  • Handle CAPTCHAs: If Google returns a CAPTCHA, back off and retry with a fresh IP after a longer delay.
  • Store historical data: Build a database of rankings over time to spot trends and algorithm update impacts.

ZentisLabs residential proxies support geo-targeting in 195+ countries, down to state and city on Light & Basic. Non-expiring bandwidth means your SEO tracking budget doesn't expire at the end of the month.

Ready to get started?

Try ZentisLabs free - 100MB residential bandwidth included.