Transformer Google Trends en signal de demande avec Python

Lisez la série temporelle, calculez une direction de tendance simple, et retenez la seule chose essentielle : une valeur Trends est un intérêt relatif, jamais un volume de recherche. Testé en août 2026.

Vous voulez un chiffre pour mesurer l’intérêt actuel autour d’un sujet, à mettre dans un dashboard, pour décider quoi stocker en rayon, ou quoi écrire ensuite. Lire un graphique en ligne sur le site de Google Trends ne tient pas la route au-delà d’une recherche à la fois, et ça ne s’intègre nulle part où un script pourrait l’exploiter.

Ce que renvoie /v1/trends

Envoyez une query à /v1/trends et vous récupérez interest_over_time, et à l’intérieur une liste timeline_data. Chaque point a une date (une plage lisible du type “Aug 23-29, 2026”), un timestamp, et une liste values avec une entrée par requête demandée, chacune portant une value de 0 à 100. Notre échantillon, pour la requête « web scraping api », est revenu avec 53 points hebdomadaires sur environ un an, pour 5 crédits.

Le chiffre est relatif, jamais absolu

C’est là que ça part le plus souvent en vrille : une value de Trends n’est pas un nombre de recherches. C’est un indice, mis à l’échelle pour que le point le plus haut de la plage demandée vaille 100 et que chaque autre point soit une fraction de ce pic. Une valeur de 14 ne veut pas dire 14 recherches, ni 14 de quoi que ce soit de comptable. Ça veut dire 14 % de ce qu’était la semaine la plus chargée de cette fenêtre.

Ça a deux conséquences que les gens ratent. D’abord, vous ne pouvez pas comparer la valeur d’une requête à celle d’une autre requête pour conclure qu’un sujet est plus recherché, parce que chacune est mise à l’échelle par rapport à son propre pic, pas une base commune. Ensuite, une valeur calculée sur une plage de dates ou un lieu donné n’est pas comparable à une valeur calculée sur une plage ou un lieu différent, pour la même raison : changez la fenêtre et chaque point est réajusté par rapport à un nouveau pic. Si vous avez besoin de deux sujets sur la même échelle, demandez-les ensemble dans un seul appel pour qu’ils partagent une base commune, ou comparez la forme (hausse, baisse, stable) plutôt que le niveau brut.

Lire la série et une direction de tendance

import requests

API_KEY = "faf_live_..."  # votre clé FastAF

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}%)")

Sur notre échantillon, ça a affiché les huit dernières semaines, oscillant entre 5 et 88, avec une moyenne récente de 37,9 contre une moyenne des huit semaines précédentes de 84,6 : une baisse de 55 %, étiquetée “falling”. Que huit semaines soit la bonne fenêtre dépend de la façon dont le sujet évolue normalement. Une catégorie qui bouge plus lentement pourrait comparer des blocs de 90 jours plutôt que deux blocs de 8 semaines ; la logique du calcul reste la même.

Mettez-le à profit

Une ligne de dashboard n’a besoin que de la dernière value et de l’étiquette de direction, rafraîchies au rythme qui correspond à la vitesse réelle d’évolution de l’intérêt sous-jacent : du quotidien, c’est excessif pour une série qui ne rapporte que par blocs hebdomadaires, comme notre échantillon. Pour une décision de stock ou de sujet à traiter, la direction compte plus que le niveau absolu : un sujet qui grimpe de 20 à 40 est un signal plus clair qu’un sujet qui stagne à 80 depuis des mois, même si 80 paraît être le plus gros chiffre.

Ce que ça coûte

Un appel coûte 5 crédits, peu importe le nombre de semaines renvoyées dans la série, donc remplir un dashboard avec un an d’historique et le rafraîchir chaque semaine coûtent tous les deux les mêmes 5 crédits. Les requêtes échouées ne sont pas facturées.

Commencez avec l’offre gratuite, 500 crédits et sans carte, soit 100 appels : de quoi récupérer la série de chaque sujet entre lesquels vous hésitez avant de vous engager à en suivre un en particulier.