Direct Answer
German search results depend on where the query comes from, so to track Google.de SERPs accurately you need a real German vantage point. Since Google requires JavaScript for search and redirects google.de to google.com, drive a headless browser (Playwright) through a German mobile proxy with hl=de and gl=de — the results then match what a real German mobile user sees.
Why Location Changes the SERP
Search results are localised. Run the same query from a US datacenter IP and from a German mobile IP and you'll get different rankings, local packs, ads and prices. For SEO monitoring of German rankings, only a German vantage point is valid — anything else measures the wrong market. A real German mobile IP, trusted via CGNAT, gives you that vantage point and keeps datacenter blocks from stalling your checks.
This walkthrough is for legitimate SEO monitoring of public results — see Monitor Responsibly.
Two Google Changes That Broke the Old Tutorials
Two 2025 changes killed the classic requests + parser recipe, and this walkthrough accounts for both:
- Search now requires JavaScript. Since January 2025, Google only serves search results to clients that execute JavaScript. A plain
requests.get()orcurlcall returns a near-empty shell page with no rankings in it — so the collection step needs a real headless browser. - google.de redirects to google.com. Google began retiring its country domains in 2025; google.de now lands on google.com. The German view of the SERP comes from your IP location plus the
hl=de/gl=deparameters — not from the domain in the URL.
What You'll Need
- Python with Playwright (
pip install playwright, thenplaywright install chromium). - BeautifulSoup for parsing the rendered HTML (
pip install beautifulsoup4). - A German mobile proxy endpoint: host, port, username, password.
- A keyword and the URLs whose positions you want to track.
Step 1 — Route the Browser Through the German Mobile Proxy
Pass the endpoint to Playwright's proxy option so the whole page render exits through the German mobile IP:
from playwright.sync_api import sync_playwright
PROXY = {
"server": "http://PROXY_HOST:PORT",
"username": "USER",
"password": "PASS",
}
with sync_playwright() as p:
browser = p.chromium.launch(proxy=PROXY, headless=True)
page = browser.new_page(locale="de-DE")
page.goto("https://www.google.com/search?q=your+keyword&hl=de&gl=de")
page.wait_for_selector("#search") # rendered results container
html = page.content() # hand this to your parser (Step 3)
browser.close()
The URL is google.com on purpose — google.de redirects there anyway, so request the canonical domain and let hl=de (German language) and gl=de (Germany as search country) plus the German mobile IP make the vantage point genuine. One practical note: from an EU IP the first visit usually shows Google's cookie-consent page; handle it once, save the context's storage_state, and reuse it so later queries go straight to results. The full proxy reference is in our Python (requests & Playwright) guide.
Step 2 — Keep One IP Per Check, Rotate Between Runs
Use a sticky session to hold the same German IP for a single keyword's check, then rotate between runs to spread load. The country stays German throughout — rotation changes the address, not the location. See sticky sessions and IP rotation.
Step 3 — Parse and Store Positions
Feed the rendered HTML from page.content() to BeautifulSoup, record the positions of the URLs you track, add a timestamp, and append to a CSV or database. Repeat on a schedule to build a ranking history — a workflow tool like n8n can run it daily.
Step 4 — Verify the Vantage Point
Confirm the proxy is active by loading an IP-echo page in the same browser context before a run. If it's not a German mobile IP, the SERP you collect isn't valid for German monitoring. See test your mobile proxy setup.
Monitor Responsibly
SEO monitoring observes public, ranked results — it is not a way to manipulate or abuse a search engine. Be clear-eyed about where it sits: Google's own robots.txt disallows automated access to /search, and its terms don't invite scraping. Automated rank checking is nonetheless a long-standing, widespread industry practice — treat that tension as a deliberate decision, not as blanket permission:
- Query at a human-reasonable rate; don't flood the endpoint.
- Know the official alternatives — Google Search Console reports your own site's German rankings first-party, and a managed SERP/rank-tracker API moves the access question to a provider.
- Collect public ranking data, not personal data, in line with the GDPR.
- Measure, don't manipulate — this is for observing rankings, not gaming them.
For the legal picture (not legal advice), see is web scraping legal? EU & GDPR.
Takeaway
For German SEO monitoring, the vantage point is the whole game. A German mobile proxy lets your headless-browser checks see Google.de SERPs the way a real German mobile user does — region-true, repeatable, and at a predictable fixed price. The dedicated SERP-tracking setup is laid out on the SERP-tracking use case.
Start Tracking Google.de SERPs
Run your Google.de SERP tracking on real German mobile IPs. Start with a German mobile proxy — HTTP/SOCKS5/OpenVPN, sticky sessions, rotation on demand, fair-use 20 GB/day, from a registered EU provider.
Get a German mobile proxy: Real 4G/5G IPs from Germany, fair-use 20 GB/day — browse German mobile proxy plans or try a shared 5G German proxy.