Google Trends mit Python in ein Demand-Signal verwandeln

Die Zeitreihe lesen, eine einfache Trendrichtung berechnen, und die eine Sache, die stimmen muss: Ein Trends-Wert ist relatives Interesse, nie eine Suchvolumen-Zahl. Getestet im August 2026.

Du willst eine Zahl dafür, wie viel Interesse ein Thema gerade bekommt, um sie in ein Dashboard zu packen, zu entscheiden, was du auf Lager nimmst, oder zu entscheiden, worüber du als Nächstes schreibst. Ein Liniendiagramm auf der Google-Trends-Website zu lesen skaliert nicht über eine Abfrage nach der anderen hinaus, und es passt nirgendwo hin, wo ein Skript es nutzen könnte.

Was /v1/trends liefert

Schicke eine query an /v1/trends und du bekommst interest_over_time, und darin eine timeline_data-Liste. Jeder Punkt hat ein date (eine menschenlesbare Spanne wie “Aug 23-29, 2026”), einen timestamp, und eine values-Liste mit einem Eintrag pro abgefragter Query, jeder mit einem value von 0 bis 100. Unser Sample, für die Query “web scraping api”, kam als 53 wöchentliche Punkte über etwa ein Jahr zurück, für 5 Credits.

Die Zahl ist relativ, nie absolut

Hier geht es am häufigsten schief: Ein Trends-value ist keine Anzahl von Suchen. Es ist ein Index, so skaliert, dass der höchste Punkt in der abgefragten Spanne 100 ist und jeder andere Punkt ein Bruchteil dieses Höchstwerts. Ein Wert von 14 bedeutet nicht 14 Suchen oder 14 von irgendetwas Zählbarem. Er bedeutet 14 Prozent von dem, was auch immer die stärkste Woche in diesem Fenster war.

Das hat zwei Konsequenzen, die leicht übersehen werden. Erstens kannst du einen Wert aus einer Query nicht gegen einen Wert aus einer anderen Query stellen und daraus schließen, dass ein Thema öfter gesucht wird, weil jeder gegen seinen eigenen Höchstwert skaliert ist, nicht gegen eine gemeinsame Baseline. Zweitens ist ein Wert, berechnet über eine Zeitspanne oder einen Ort, nicht vergleichbar mit einem Wert, berechnet über eine andere Spanne oder einen anderen Ort, aus demselben Grund: Ändere das Fenster, und jeder Punkt wird gegen einen neuen Höchstwert neu skaliert. Wenn du zwei Themen auf derselben Skala brauchst, frag sie zusammen in einem Call ab, damit sie sich eine Baseline teilen, oder vergleiche die Form (steigend, fallend, flach) statt des Rohwerts.

Die Serie lesen und eine Trendrichtung berechnen

import requests

API_KEY = "faf_live_..."  # dein FastAF-Key

resp = requests.get(
    "https://api.fastaf.co/v1/trends",
    params={"query": "web scraping api", "data_type": "TIMESERIES"},
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)
resp.raise_for_status()

points = resp.json()["interest_over_time"]["timeline_data"]
series = [(p["date"], p["values"][0]["value"]) for p in points]

for date, value in series[-8:]:
    print(f"{date:<26} {value:>3}")

recent = [v for _, v in series[-8:]]
prior = [v for _, v in series[-16:-8]]
recent_avg = sum(recent) / len(recent)
prior_avg = sum(prior) / len(prior)
change = (recent_avg - prior_avg) / prior_avg * 100
direction = "rising" if change > 10 else "falling" if change < -10 else "flat"

print(f"recent avg {recent_avg:.1f} vs prior avg {prior_avg:.1f}: {direction} ({change:+.1f}%)")

In unserem Sample gab das die letzten acht Wochen aus, schwankend zwischen 5 und 88, mit einem aktuellen Durchschnitt von 37,9 gegenüber einem vorherigen Achtwochendurchschnitt von 84,6: ein Rückgang von 55 Prozent, mit dem Label “falling”. Ob acht Wochen das richtige Fenster sind, hängt davon ab, wie sich das Thema normalerweise bewegt. Eine langsamer bewegte Kategorie könnte stattdessen 90-Tage-Blöcke statt zweier 8-Wochen-Blöcke vergleichen, die Form der Berechnung bleibt gleich.

In der Praxis einsetzen

Eine Dashboard-Zeile braucht nur den aktuellsten value und das Richtungslabel, aktualisiert in dem Takt, der dazu passt, wie oft sich das zugrunde liegende Interesse tatsächlich bewegt: täglich ist übertrieben für eine Serie, die nur in wöchentlichen Blöcken berichtet, wie unser Sample. Für eine Lager-oder-Schreib-Entscheidung zählt die Richtung mehr als das absolute Niveau: Ein Thema, das von 20 auf 40 klettert, ist ein klareres Signal als ein Thema, das seit Monaten bei 80 liegt, auch wenn 80 nach der größeren Zahl klingt.

Was es kostet

Ein Call kostet 5 Credits, egal wie viele Wochen in der Serie zurückkommen, ein Dashboard rückwirkend mit einem Jahr Historie zu befüllen und es wöchentlich zu aktualisieren kosten also beide dieselben 5 Credits. Fehlgeschlagene Anfragen werden nicht berechnet.

Starte mit dem Free Tier, 500 Credits ohne Karte, das sind 100 Calls: genug, um die Serie für jedes Thema zu ziehen, zwischen denen du entscheidest, bevor du dich aufs Tracken eines davon festlegst.