Ein Teil der Woche einer SEO-Fachkraft geht dafür drauf, wichtige Keywords einzeln zu suchen und zu prüfen, auf welcher Position die Website erscheint. Bei fünf Keywords ist das eine Gewohnheit; bei fünfhundert Keywords, drei Städten und zwei Gerätetypen ist es eine unmögliche Aufgabe. Und manuelle Prüfungen täuschen: Die Position, die Sie in einem bei Google angemeldeten Browser sehen, ist nicht dieselbe, die ein Nutzer in Izmir auf seinem Smartphone sieht.
In diesem Artikel erklären wir, was eine SERP (Suchergebnisseite) und Rank-Tracking sind, warum manuelles Tracking nicht skaliert und wie Sie mit der Search Console API die Automatisierung beginnen, mit einem lauffähigen Python-Beispiel. Danach behandeln wir die Daten, die Search Console nicht liefert, warum standortbezogene Ergebnisse abweichen, die Bausteine eines Tracking-Systems und die Grenzen dieser Arbeit nach den Nutzungsbedingungen. Ein wichtiger Hinweis vorab: Google-Suchergebnisse ohne Erlaubnis automatisch zu scrapen, verstößt gegen die Richtlinien von Google. Dieser Artikel empfiehlt zuerst den offiziellen Weg, dann lizenzierte Datenquellen.
Was sind SERPs und Rank-Tracking?
Eine SERP (Search Engine Results Page) ist die Ergebnisseite, die eine Suchmaschine für eine Suchanfrage liefert. Die heutige SERP besteht nicht nur aus zehn blauen Links: Anzeigen, eine Karte mit lokalen Unternehmen, Shopping-Ergebnisse, Boxen mit „Ähnliche Fragen", Videos, Bilder und KI-generierte Zusammenfassungen können auf derselben Seite erscheinen.
Rank-Tracking bedeutet, in regelmäßigen Abständen festzuhalten, wo Ihre Website auf dieser Seite für bestimmte Keywords erscheint. Ziel ist nicht, die Position eines Tages zu kennen, sondern die Veränderung über die Zeit zu sehen: Ist die Position nach einem Inhaltsupdate gestiegen, welche Seiten sind nach einem Algorithmus-Update gefallen, ist die neue Stadtseite in dieser Stadt sichtbar?
Die wichtigsten Kennzahlen beim Rank-Tracking:
- Position: der Platz des Ergebnisses auf der Seite. In Search Console ist dieser Wert der Durchschnitt über die Impressionen eines Zeitraums.
- Impressionen: wie oft Ihre Website in Ergebnissen gezeigt wurde.
- Klicks und Klickrate (CTR): wie viele Impressionen zu Besuchen wurden.
- Darstellungsart: ob das Ergebnis ein normaler Link, ein Rich Result oder ein lokales Paket ist.
Warum skaliert manuelles Tracking nicht?
Manuelle Ranking-Prüfungen sind aus drei Gründen langsam und irreführend:
- Personalisierung. Eine Suche mit angemeldetem Google-Konto kann von Ihren früheren Suchen und Besuchen beeinflusst sein. Besuchen Sie Ihre eigene Website oft, sehen Sie sie womöglich höher, als sie wirklich steht.
- Standort. Suchergebnisse ändern sich mit Land, Stadt und bei Anfragen mit lokaler Absicht sogar mit dem Stadtteil des Nutzers. Das Ergebnis, das Sie in Ihrem Büro in Istanbul sehen, ist nicht das Ergebnis eines Nutzers in Ankara.
- Gerät und Sprache. Mobile und Desktop-Ergebnisse zeigen wegen Seitenlayout und SERP-Funktionen unterschiedliche Positionen. Auch die Spracheinstellung des Browsers beeinflusst die Ergebnisse.
Dazu kommt die Zeit: Ergebnisse können sich im Tagesverlauf ändern. Die Prüfung einer Person an einem Morgen zeigt eine einzige Kombination dieser Variablen. Entscheidungen brauchen dieselbe Messung, unter denselben Bedingungen in regelmäßigen Abständen wiederholt.
Warum mit der Search Console API beginnen?
Der richtige Einstieg ins Rank-Tracking der eigenen Website ist Google Search Console, denn die Daten kommen direkt von Google und beruhen auf den Ergebnissen, die echte Nutzer sehen. Der Leistungsbericht in der Oberfläche genügt für kleine Analysen; für regelmäßiges, detailliertes Tracking wird die Methode searchanalytics.query der Search Console API genutzt.
Die Daten, die die API liefert:
| Feld | Beschreibung |
|---|---|
Dimensionen (dimensions) | date, query, page, country, device, searchAppearance und hour für stündliche Daten |
| Kennzahlen | clicks, impressions, ctr (0-1), position (Durchschnitt) |
Suchtyp (type) | web (Standard), image, video, news, discover, googleNews |
Zeilenlimit (rowLimit) | Bis zu 25.000 pro Anfrage; mehr wird mit startRow seitenweise abgerufen |
Datenstand (dataState) | final (Standard, abgeschlossen), all (inklusive frischer, noch nicht abgeschlossener Daten) |
| Berechtigung | Der Scope webmasters.readonly genügt |
Die Stärken von Search Console: echte Daten, kostenlos und nach Land und Gerät aufgeschlüsselt. Ihre Grenzen sollten Sie aber kennen: Die Position ist ein Durchschnitt, die Daten der letzten Tage sind womöglich noch nicht abgeschlossen, und manche sehr selten gesuchte Anfragen fehlen aus Datenschutzgründen in den Berichten.
Wie ziehen Sie Ranking-Daten mit der Search Console API?
Die Einrichtung dauert vier Schritte:
- Erstellen Sie ein Projekt in Google Cloud und aktivieren Sie die Search Console API.
- Erstellen Sie ein Dienstkonto und laden Sie dessen Schlüsseldatei (JSON) herunter. Nehmen Sie diese Datei nicht in die Versionsverwaltung auf.
- Fügen Sie die E-Mail-Adresse des Dienstkontos als Nutzer Ihrer Search-Console-Property hinzu. Lesezugriff genügt. Überspringen Sie diesen Schritt, liefert die API einen Berechtigungsfehler.
- Installieren Sie die Python-Bibliotheken:
pip install google-api-python-client google-authDas folgende Skript zieht die Daten eines Zeitraums nach Suchanfrage, Seite, Land und Gerät aufgeschlüsselt, liest sie in Seiten zu 25.000 Zeilen und schreibt sie in eine SQLite-Datenbank:
import sqlite3
from datetime import date, timedelta
from google.oauth2 import service_account
from googleapiclient.discovery import build
SITE = "sc-domain:example.com" # Domain-Property; für eine URL-Property "https://example.com/" nutzen
SCOPES = ["https://www.googleapis.com/auth/webmasters.readonly"]
PAGE_SIZE = 25_000
credentials = service_account.Credentials.from_service_account_file("service-account.json", scopes=SCOPES)
service = build("searchconsole", "v1", credentials=credentials)
def fetch_rows(start, end):
start_row = 0
while True:
body = {
"startDate": start.isoformat(),
"endDate": end.isoformat(),
"dimensions": ["date", "query", "page", "country", "device"],
"rowLimit": PAGE_SIZE,
"startRow": start_row,
}
response = service.searchanalytics().query(siteUrl=SITE, body=body).execute()
rows = response.get("rows", [])
yield from rows
if len(rows) < PAGE_SIZE:
break
start_row += PAGE_SIZE
db = sqlite3.connect("rankings.db")
db.execute("""
CREATE TABLE IF NOT EXISTS performance (
date TEXT, query TEXT, page TEXT, country TEXT, device TEXT,
clicks REAL, impressions REAL, ctr REAL, position REAL,
PRIMARY KEY (date, query, page, country, device)
)
""")
end = date.today() - timedelta(days=3) # die letzten Tage sind womöglich noch nicht abgeschlossen
start = end - timedelta(days=6)
with db:
db.executemany(
"INSERT OR REPLACE INTO performance VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
(
(*row["keys"], row["clicks"], row["impressions"], row["ctr"], row["position"])
for row in fetch_rows(start, end)
),
)
print("Zeilenzahl:", db.execute("SELECT COUNT(*) FROM performance").fetchone()[0])Die Reihenfolge der Werte im Array keys entspricht der Reihenfolge von dimensions in der Anfrage; beachten Sie das beim Schreiben in die Tabelle. Dank INSERT OR REPLACE aktualisiert ein erneutes Ziehen desselben Tages die Daten, statt sie zu duplizieren.
Liegen die Daten vor, ist die nützlichste Abfrage die Positionsänderung zwischen zwei Zeiträumen. Um etwa die durchschnittliche Position mobiler Suchen in Türkiye über die letzten zwei Wochen zu vergleichen:
WITH period AS (
SELECT query,
AVG(CASE WHEN date >= date('now', '-10 days') THEN position END) AS this_week,
AVG(CASE WHEN date < date('now', '-10 days') THEN position END) AS last_week,
SUM(impressions) AS impressions
FROM performance
WHERE country = 'tur' AND device = 'MOBILE' AND date >= date('now', '-17 days')
GROUP BY query
)
SELECT query, ROUND(last_week, 1) AS before, ROUND(this_week, 1) AS now,
ROUND(this_week - last_week, 1) AS change, impressions
FROM period
WHERE impressions > 100
ORDER BY change DESC
LIMIT 20;Eine höhere Positionszahl bedeutet, dass das Ranking gefallen ist; die Abfrage stellt die am stärksten gefallenen Keywords nach oben. Ländercodes sind dreibuchstabige ISO-Codes (tur für Türkiye).
Daten, die Search Console nicht liefert
Search Console ist eine verlässliche Quelle über Ihre eigene Website, deckt aber manche Anforderungen des Rank-Trackings nicht ab:
- Positionen von Wettbewerbern. Search Console zeigt nur die Daten Ihrer eigenen Website. Die Website auf Platz eins für ein Keyword oder den Aufstieg eines Wettbewerbers sehen Sie nicht.
- Ergebnisse auf Stadtebene. Die Aufschlüsselung erfolgt auf Länderebene. Rankings in Ankara und in Izmir lassen sich nicht trennen.
- Die vollständige SERP-Ansicht. Wie viele Anzeigen, lokale Pakete oder KI-Zusammenfassungen über Ihrem Ergebnis stehen, also das Seitenlayout, das die Klickbarkeit beeinflusst, wird nicht berichtet.
- Anfragen ohne Impressionen. Für ein Keyword, bei dem Sie auf den ersten Seiten gar nicht erscheinen, gibt es praktisch keine Daten.
- Der aktuelle Stand. Daten werden mit einigen Tagen Verzögerung abgeschlossen.
Für diese Lücken gibt es zwei legitime Optionen: SERP-Datendienste, die Suchergebnisdaten unter Lizenz bereitstellen, und manuelle Standortprüfungen im menschlichen Maßstab. Suchmaschinenergebnisse mit einem eigenen Skript automatisch zu erfassen, ist aus den unten erklärten Gründen keine Option.
Warum weichen standortbezogene Ergebnisse ab?
Suchmaschinen bewerten, ob eine Anfrage lokale Absicht hat. Bei Informationsanfragen wie „Was ist ein Proxy" sind die Ergebnisse innerhalb eines Landes weitgehend gleich. Bei Anfragen mit lokaler Absicht wie „Zahnklinik", „Schlüsseldienst", „Autovermietung" oder „nächste Paketstation" ändern sich die Ergebnisse je nach Stadt und sogar Stadtteil vollständig.
In Türkiye fällt dieser Unterschied besonders auf bei:
- Unternehmen mit Filialen in mehreren Städten. Ob jede Stadtseite in ihrer eigenen Stadt erscheint.
- Unternehmen mit Einzugsgebiet. Ob ein Unternehmen in den bedienten Bezirken in lokalen Ergebnissen erscheint.
- Landesweiten Onlineshops. Kategorieseiten, die in Großstädten unterschiedlich ranken.
- Suchen in verschiedenen Sprachen. Ergebnisse für Nutzer, die aus Türkiye auf Englisch suchen, gegenüber denen, die auf Türkisch suchen.
Unterschiede auf Stadtebene in großem Umfang zu messen, geschieht über die Standortparameter von SERP-Datendiensten. Gelegentlich zu prüfen, wie eine begrenzte Zahl wichtiger Seiten in bestimmten Städten aussieht, ist eine Aufgabe im menschlichen Maßstab: Eine SEO-Fachkraft sucht einige kritische Anfragen selbst in einem abgemeldeten, sauberen Browserprofil mit einer IP-Adresse aus der jeweiligen Stadt. Ausgangspunkte auf Stadtebene in Türkiye finden Sie auf unserer Standortseite Türkiye, wie solche Prüfungen aufgebaut werden, auf unserer Seite zur SEO-Proxy-Lösung.
Datenquellen im Vergleich
| Kriterium | Search Console API | Lizenzierter SERP-Datendienst | Suchmaschinen mit eigenem Skript scrapen |
|---|---|---|---|
| Wessen Daten? | Nur Ihre eigene Website | Jede Anfrage und Website | Jede Anfrage und Website |
| Quelle | Echte Nutzerdaten von Google | Vom Dienst erfasste Ergebnisseiten | Von Ihnen gesendete automatisierte Abfragen |
| Art der Position | Durchschnitt | Momentaufnahme, Einzelmessung | Momentaufnahme, Einzelmessung |
| Stadtebene | Nein, Land | Meist ja | Technisch möglich |
| Positionen von Wettbewerbern | Nein | Ja | Ja |
| Klicks und Impressionen | Ja | Nein | Nein |
| Kosten | Kostenlos | Kostenpflichtig pro Abfrage | Infrastruktur und Wartung |
| Nutzungsbedingungen | Offizieller Weg | Abhängig vom Vertrag des Dienstes | Nicht autorisierte automatisierte Abfragen an Google verstoßen gegen die Richtlinien |
| Unsere Empfehlung | Erste Quelle | Für Wettbewerber- und Stadtdaten | Nicht nutzen |
Bausteine der Automatisierung
Ein Rank-Tracking-System hat unabhängig von der Datenquelle vier Bausteine:
- Keyword-Liste. Für jedes Keyword: die Zielseite, die Priorität, das zu verfolgende Land und Gerät und bei Bedarf die Stadt. Die Liste wird in einer Tabelle oder Datenbank geführt und mit den Geschäftszielen aktualisiert. Anfragen mit vielen Impressionen aus den Search-Console-Daten können als Kandidaten ergänzt werden.
- Zeitplanung. Für Search-Console-Daten genügt ein Lauf pro Tag; die Daten werden ohnehin mit einigen Tagen Verzögerung abgeschlossen. Genutzt werden können
cronunter Linux, die Aufgabenplanung unter Windows oder ein geplanter Job in einer CI-Pipeline. - Speicherung. Jede Messung wird mit Zeitstempel gespeichert; alte Daten werden nicht gelöscht, denn der Wert des Trackings liegt im Vergleich mit der Vergangenheit. SQLite für kleine Projekte, PostgreSQL oder ein Data Warehouse für Teams.
- Berichte und Alarme. Ein wöchentlicher Änderungsbericht, Alarme für Anfragen, die über eine Schwelle hinaus fallen, und eine gruppierte Ansicht nach Seitengruppen (Kategorie, Blog, Stadtseiten).
Damit Alarme aussagekräftig bleiben, filtern Sie Schwankungen bei Anfragen mit wenigen Impressionen heraus; eine Anfrage mit einer Handvoll Impressionen, die von Position 3 auf 9 rutscht, bedeutet statistisch womöglich nichts.
Nutzungsbedingungen und verantwortungsvoller Einsatz
Dieser Abschnitt ist der wichtigste Teil des Artikels.
Die Spam-Richtlinien von Google definieren unter der Überschrift „maschinengenerierter Traffic" das Senden automatisierter Anfragen an Google und das Scrapen von Ergebnissen zum Zweck der Rankingprüfung ohne ausdrückliche Erlaubnis als Richtlinienverstöße und halten fest, dass dies auch gegen die Nutzungsbedingungen von Google verstößt. Die Nutzungsbedingungen von Google zählen zudem den Zugriff auf die Dienste mit automatisierten Mitteln entgegen maschinenlesbaren Anweisungen wie robots.txt zu den Beispielen für Missbrauch.
In der Praxis heißt das:
- Scrapen Sie Google-Ergebnisse nicht automatisch mit einem eigenen Skript, auch nicht mit einem Proxy-Pool. Ein IP-Wechsel stellt Sie nicht außerhalb einer Richtlinie.
- Nutzen Sie für Ihre eigene Website zuerst die Search Console API. Sie ist offiziell, kostenlos und beruht auf echten Nutzerdaten.
- Wählen Sie für Wettbewerber- und Stadtdaten einen lizenzierten Datendienst und prüfen Sie, wie der Dienst die Daten bereitstellt und ob sein Vertrag Ihre Nutzung abdeckt.
- Halten Sie manuelle Prüfungen im menschlichen Maßstab. Eine Fachkraft, die einige wichtige Anfragen über eine Verbindung aus einer anderen Stadt sucht, ist nicht dasselbe wie ein Skript, das Tausende Anfragen automatisch sendet.
- Lesen Sie auch die Bedingungen anderer Suchmaschinen. Jede Suchmaschine, Yandex eingeschlossen, hat eigene Nutzungsbedingungen und offizielle Datenwerkzeuge.
Den allgemeinen rechtlichen Rahmen für Datenerfassung im Web erklären wir in Ist Web Scraping legal?, wie robots.txt-Regeln gelesen werden, in Was ist robots.txt und wie liest man die Datei?.
Anwendungsfälle
- Wochenbericht eines Content-Teams: tägliche Daten aus der Search Console API, in SQLite gespeichert, eine wöchentliche Liste der 20 am stärksten gefallenen und gestiegenen Anfragen.
- Lokale Sichtbarkeit eines Unternehmens in mehreren Städten: ein Trend auf Länderebene aus Search Console, Messung auf Stadtebene über einen lizenzierten SERP-Dienst und Prüfung wichtiger Stadtseiten im menschlichen Maßstab. Residential-Proxy-Adressen, die über echte Privatanschlüsse ins Netz gehen, lassen eine Fachkraft diese Seiten so sehen wie ein Nutzer in dieser Stadt.
- Sichtbarkeit in regionalen Suchmaschinen: regionale Ergebnisse in anderen Suchmaschinen als Google prüfen; die zugehörigen Seiten sind unsere Lösungen Google-Proxy und Yandex-Proxy.
- Marktforschung: die Suchsichtbarkeit von Websites einer Branche mit lizenzierten Daten vergleichen. Den Rechercheaufbau beschreibt unsere Seite zur Marktforschung.
- Öffentliche Seiten von Wettbewerbern beobachten: nicht Suchmaschinenergebnisse, sondern Inhalts- und Preisänderungen auf den Websites der Wettbewerber selbst. Diese Aufgabe befolgt robots.txt und Bedingungen der Websites mit Rate-Limit; ein Rotierender Proxy kann die Last verteilen. Die Regeln erklären wir in Web Scraping ohne Sperren.
Häufige Fehler
- Rankings in einem angemeldeten Browser prüfen. Personalisierung verzerrt das Ergebnis.
- Die Position in Search Console für eine Momentaufnahme halten. Der Wert ist der Durchschnitt aller Impressionen des Zeitraums und kann zudem verschiedene Länder und Geräte mischen. Betrachten Sie ihn mit Länder- und Gerätefiltern.
- Entscheidungen auf die Daten der letzten zwei oder drei Tage stützen. Die Daten sind womöglich noch nicht abgeschlossen.
- Das Limit von 25.000 Zeilen vergessen. Bei großen Websites kommen Daten ohne Seitenabruf stillschweigend unvollständig zurück.
- Auf Schwankungen bei Anfragen mit wenigen Impressionen reagieren. Setzen Sie eine Impressionsschwelle für aussagekräftige Änderungen.
- Die Keyword-Liste nie aktualisieren. Neue Seiten der Website und verändertes Suchverhalten sollten sich in der Liste widerspiegeln.
- Suchmaschinenergebnisse automatisch scrapen. Das verstößt gegen Richtlinien und ist keine dauerhafte Lösung.
Entscheidungshilfe
| Ihr Bedarf | Empfehlung |
|---|---|
| Rankings der eigenen Website auf Anfrageebene | Search Console API |
| Klicks, Impressionen und CTR | Search Console API |
| Aufschlüsselung nach Land und Gerät | Search Console API |
| Positionen von Wettbewerbern | Lizenzierter SERP-Datendienst |
| Ranking-Messung auf Stadtebene | Lizenzierter SERP-Datendienst |
| Prüfen, wie einige kritische Seiten aus einer Stadt aussehen | Manuelle Prüfung im menschlichen Maßstab, IP auf Stadtebene |
| Inhalts- und Preisänderungen auf Wettbewerberseiten | Regelkonformes Scraping mit Rate-Limit |
| Google-Ergebnisse mit eigenem Skript erfassen | Nicht empfohlen, verstößt gegen Richtlinien |
Häufig gestellte Fragen
Was bedeutet die durchschnittliche Position in Search Console?
Sie ist der Durchschnitt der jeweils höchsten Position Ihrer Website über alle Impressionen, die sie im gewählten Zeitraum für diese Anfrage erhielt. Weil sie an verschiedenen Tagen, in verschiedenen Ländern und auf verschiedenen Geräten gesehene Positionen mischt, entspricht sie womöglich nicht genau der Position, die ein einzelner Nutzer sieht.
Ist die Search Console API kostenpflichtig?
Nein, die Search Console API ist kostenlos. Es gibt Nutzungskontingente; ein Rank-Tracking-Skript mit einem Sammelabruf pro Tag bleibt meist deutlich darunter.
Warum erscheinen manche Anfragen nicht in Search Console?
Zum Schutz der Privatsphäre lässt Google manche von sehr wenigen Personen gesuchte Anfragen in Berichten weg. Deshalb können die Gesamtklicks in der Aufschlüsselung nach Anfragen niedriger wirken als die Gesamtsumme.
Wie verfolge ich die Rankings meiner Wettbewerber?
Search Console liefert diese Daten nicht. Für Positionen von Wettbewerbern werden Dienste genutzt, die Suchergebnisdaten unter Lizenz bereitstellen. Prüfen Sie bei der Auswahl, wie die Daten erfasst werden und ob der Vertrag Ihre Nutzung abdeckt.
Kann ich mit einem Proxy automatisierte Rankingprüfungen bei Google durchführen?
Die Spam-Richtlinien von Google verbieten das Senden automatisierter Anfragen zur Rankingprüfung ohne ausdrückliche Erlaubnis; ein IP-Wechsel ändert daran nichts. Die legitime Nutzung eines Proxys ist hier, dass eine Fachkraft im menschlichen Maßstab prüft, wie einige kritische Seiten aus verschiedenen Städten aussehen.
Wie oft sollte ich Rankings verfolgen?
Für Search-Console-Daten genügt ein täglicher Abruf; für Entscheidungen betrachten Sie Wochen- und Monatstrends. Tägliche Schwankungen zeigen oft keine aussagekräftige Veränderung.
Fazit
Manuelle Rankingprüfung skaliert nicht und täuscht wegen Personalisierung, Standort- und Geräteunterschieden. Beginnen Sie die Automatisierung mit der Search Console API: Ziehen Sie täglich Daten nach Anfrage, Seite, Land und Gerät aufgeschlüsselt, blättern Sie in Schritten von 25.000 Zeilen, speichern Sie sie in einer Datenbank und berichten Sie Änderungen zwischen Zeiträumen. Nutzen Sie lizenzierte SERP-Dienste für Wettbewerber- und Stadtdaten und Prüfungen im menschlichen Maßstab dafür, wie wichtige Seiten lokal aussehen. Google-Ergebnisse mit nicht autorisierten automatisierten Abfragen zu scrapen, verstößt gegen dessen Richtlinien. Optionen für standortbezogene manuelle Prüfungen finden Sie in unseren Proxy-Diensten.




