Overview de la méthodologiePrésentation de l’API Google Ads (Keyword planner)Présentation de l’API Google TrendsExemple de recalcul basé sur un exemple Conclusion
Overview de la méthodologie
- Établir une liste de keywords via des outils SEO quelconques (disons que c’est déjà fait ici)
- Récupération des volumes de recherche via API Google Ads
- Récupération de la base 100 Google Trends
- Recalcul de l’historique
Présentation de l’API Google Ads (Keyword planner)
L’API Google Ads nous offre la possibilité de récupérer les “métriques historiques”.
Voici la liste des métriques mentionnées dans la documentation de l’API Google Ads :
- Nombre moyen de recherches mensuelles (12 derniers mois)
- Volume de recherche mensuel approximatif (par mois)
- Niveau de concurrence
- Indice de la concurrence
- 20e centile des enchères
- 80e centile des enchères
Lien vers la documentation : ici
Cette API est très intéressante à exploiter et permet notamment de récupérer les volumes de recherches mensuelles d’une liste de mots-clés. Ce qui permet ensuite d’automatiser son suivi de positionnement et de suivre plus efficacement les tendances de son marché.
Le seul problème lorsque l’on passe par l’API c’est l’accès limité à l’historique, 12 mois seulement. Contrairement aux 48 mois que l’on peut obtenir en passant directement par l’outil depuis l’interface keyword planner.
Exemple de ce que l’API est capable de sortir pour un mot-clé :
Note : on voit bien les 12 mois de données de volume de recherches pour le mots-clé en question
Cependant, l’API mentionne un point très important, sur lequel on va pouvoir se baser afin de recalculer l’historique au-delà de la limite de 12 mois.
En effet, Google Trends historise (à la semaine), les variation de volumes de recherches des mots-clés de sa base. L’idée sera donc d’utiliser l’API de Google Trends comme base de recalcul pour les données historiques de plus de 12 mois.
Présentation de l’API Google Trends
Google Trends est un outil qui permet de visualiser l'intérêt de recherche pour des termes spécifiques au fil du temps, en fournissant des données de tendance normalisées en une base 100. Il permet également de faire des comparaisons d’intérêt selon les zones géographiques mais on laissera cette aspect de côté pour notre sujet.
Illustrations :
Utile :
Ici vous trouverez un petit playground qui permet de simuler facilement des requêtes API et d’obtenir rapidement un json type.
Exemple d’output API pour la même requête “data” :
pythonfrom serpapi import GoogleSearch params = { "engine": "google_trends", "q": "data", "geo": "FR", "data_type": "TIMESERIES", "cat": "0", "date": "today 12-m", "api_key": "secret_api_key" } search = GoogleSearch(params) results = search.get_dict()
⇒ On voit dans le json, la valeur 42 pour la semaine du 20 Août 2023, qui correspond (heureusement d’ailleurs), à ce que l’on observe sur l’interface (pour peu qu’on prenne la même période d’analyse)
Comment lire les données Google Trends
La base 100 telle qu’elle est calculée par Google Trends représente l’intérêt relatif d’une requête précise sur la période sélectionnée.
Google Trends prend la semaine durant laquelle l’intérêt est le plus fort sur la période (à comprendre, là ou le volume de recherches est le plus élevé sur la période) et lui attribue la valeur “100”. Puis, il calcules toutes les autres semaines à partir de ce point haut.
→ Si la semaine A est la semaine de plus fort intérêt (totalisant 500 recherches sur la semaine)
→ Une semaine qui totalise 125 visites aura une valeur de 25
(125/500)*100 étant égal à 25
Autre point important
Dans la théorie, deux semaines sont toujours comparables, peu importe le point haut de la période.
Si je reprends mon exemple précédant mais que la semaine A n’est plus le point haut de la période car la semaine B totalise 600 visites.
600 visites = 100
semaine A = 500 visite = 500/600*100 = 83,3333..
Quid de notre semaine de 125 visites ?
125 = 125/600*100 = 20,83333..
Que l’on peut aussi écrire 83,333/4
On a toujours un rapport de x4 entre une semaine à 500 et une semaine à 125, peut importe le point haut de la période que l’on regarde.
Pourquoi tout ce laïus ?
Parce que c’est le cœur de la méthodologie que je voulais vous présenter aujourd’hui.
→ Le fait d’avoir accès aux volumes de recherches via Google keyword planner ainsi qu’à la base 100 de Google Trends nous permet, en combinant les deux, de recalculer des volumes historiques en utilisant la logique inverse de celle employée par Google Trends.
Exemple de recalcul basé sur un exemple
J’ai choisi volontairement un mot-clé sur lequel la saisonnalité est très marquée et pour lequel il serait potentiellement intéressant de tester la méthodologie → “Fête des mères”
Voici ce que l’on obtient sur Google Trends & Keyword Planner en tapant directement dans les APIs correspondantes :
Note :
J’ai calculé une moyenne mensuelle (sur la base des semaines récupérées sur GTrends) afin que ce soit plus facilement transposable aux données Keyword planner
Google Trends :
mois | base100_moyenne |
2024-07-01 | 0 |
2024-06-01 | 1,2 |
2024-05-01 | 43,25 |
2024-04-01 | 5,5 |
2024-03-01 | 3,2 |
2024-02-01 | 3,25 |
2024-01-01 | 1 |
2023-12-01 | 0 |
2023-11-01 | 0 |
2023-10-01 | 0,2 |
2023-09-01 | 0,25 |
2023-08-01 | 0 |
2024-08-01 | 0 |
2023-07-01 | 0,2 |
2023-06-01 | 5,25 |
2023-05-01 | 30,25 |
2023-04-01 | 5,8 |
2023-03-01 | 3,5 |
2023-02-01 | 3,75 |
2023-01-01 | 1 |
2022-12-01 | 0 |
2022-11-01 | 0 |
2022-10-01 | 0,4 |
2022-09-01 | 0,25 |
2022-08-01 | 0 |
2022-07-01 | 0 |
2022-06-01 | 1,5 |
2022-05-01 | 28,2 |
2022-04-01 | 5 |
2022-03-01 | 3,75 |
2022-02-01 | 4,75 |
2022-01-01 | 0,6 |
2021-12-01 | 0 |
2021-11-01 | 0 |
2021-10-01 | 0,4 |
2021-09-01 | 0,25 |
2021-08-01 | 0 |
2021-07-01 | 0,25 |
2021-06-01 | 1,75 |
2021-05-01 | 49,8 |
2021-04-01 | 6,5 |
2021-03-01 | 4,5 |
2021-02-01 | 6 |
2021-01-01 | 0,6 |
2020-12-01 | 0 |
2020-11-01 | 0 |
2020-10-01 | 0,75 |
2020-09-01 | 0,25 |
2020-08-01 | 0 |
2020-07-01 | 0,25 |
2020-06-01 | 9,5 |
2020-05-01 | 36 |
2020-04-01 | 4,5 |
2020-03-01 | 2 |
2020-02-01 | 3 |
2020-01-01 | 0,25 |
2019-12-01 | 0 |
2019-11-01 | 0 |
2019-10-01 | 0,25 |
2019-09-01 | 0,2 |
2019-08-01 | 0 |
Keyword Planner :
mois | Volume_recherche_KP |
2024-07-01 | 8100 |
2024-06-01 | 40500 |
2024-05-01 | 2240000 |
2024-04-01 | 74000 |
2024-03-01 | 49500 |
2024-02-01 | 18100 |
2024-01-01 | 6600 |
2023-12-01 | 2900 |
2023-11-01 | 2900 |
2023-10-01 | 3600 |
2023-09-01 | 2900 |
2023-08-01 | 2900 |
Pour ceux qui se poseraient la question, voici le SQL que j’utilise pour recalculer
sqlwith trends as ( select * from `trends_data` order by date desc), search_volumes as ( select * from `search_volume` order by mois desc), trends_monthly as ( SELECT DATE_TRUNC('month', date) AS mois, AVG(base100) AS base100_moyenne FROM trends GROUP BY DATE_TRUNC('month', date) order by mois desc), base_joint as ( select trends_monthly.mois, base100_moyenne, Volume_de_recherches_KP as search_volumes from trends_monthly left join search_volume using(mois)), baseline_trends_volume as ( Select base100_moyenne, search_volumes FROM base_joint where base100_moyenne = (select max(base100_moyenne) from base_joint where search_volumes is not null)), int_data as (select mois, base_joint.base100_moyenne, base_joint.search_volumes, baseline_trends_volume.base100_moyenne as baseline_trends, baseline_trends_volume.search_volumes as baseline_volumes from base_joint cross join baseline_trends_volume) select mois, base100_moyenne, baseline_trends, (base100_moyenne/baseline_trends)*100 as recalculated_base100, search_volumes, baseline_volumes, case when search_volumes is not null then search_volumes else ((base100_moyenne/baseline_trends)) * baseline_volumes end as recalculated_volumes from int_data
Voici le résultat que j’obtiens :
mois | base100_moyenne | baseline_trends | recalculated_base100 | search_volumes | baseline_volumes | recalculated_volumes |
2024-07-01 | 0 | 43,25 | 0,0 | 8100 | 2240000 | 8100 |
2024-06-01 | 1,2 | 43,25 | 2,8 | 40500 | 2240000 | 40500 |
2024-05-01 | 43,25 | 43,25 | 100,0 | 2240000 | 2240000 | 2240000 |
2024-04-01 | 5,5 | 43,25 | 12,7 | 74000 | 2240000 | 74000 |
2024-03-01 | 3,2 | 43,25 | 7,4 | 49500 | 2240000 | 49500 |
2024-02-01 | 3,25 | 43,25 | 7,5 | 18100 | 2240000 | 18100 |
2024-01-01 | 1 | 43,25 | 2,3 | 6600 | 2240000 | 6600 |
2023-12-01 | 0 | 43,25 | 0,0 | 2900 | 2240000 | 2900 |
2023-11-01 | 0 | 43,25 | 0,0 | 2900 | 2240000 | 2900 |
2023-10-01 | 0,2 | 43,25 | 0,5 | 3600 | 2240000 | 3600 |
2023-09-01 | 0,25 | 43,25 | 0,6 | 2900 | 2240000 | 2900 |
2023-08-01 | 0 | 43,25 | 0,0 | 2900 | 2240000 | 2900 |
2024-08-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2023-07-01 | 0,2 | 43,25 | 0,5 | 2240000 | 10358 | |
2023-06-01 | 5,25 | 43,25 | 12,1 | 2240000 | 271908 | |
2023-05-01 | 30,25 | 43,25 | 69,9 | 2240000 | 1566705 | |
2023-04-01 | 5,8 | 43,25 | 13,4 | 2240000 | 300393 | |
2023-03-01 | 3,5 | 43,25 | 8,1 | 2240000 | 181272 | |
2023-02-01 | 3,75 | 43,25 | 8,7 | 2240000 | 194220 | |
2023-01-01 | 1 | 43,25 | 2,3 | 2240000 | 51792 | |
2022-12-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2022-11-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2022-10-01 | 0,4 | 43,25 | 0,9 | 2240000 | 20717 | |
2022-09-01 | 0,25 | 43,25 | 0,6 | 2240000 | 12948 | |
2022-08-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2022-07-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2022-06-01 | 1,5 | 43,25 | 3,5 | 2240000 | 77688 | |
2022-05-01 | 28,2 | 43,25 | 65,2 | 2240000 | 1460532 | |
2022-04-01 | 5 | 43,25 | 11,6 | 2240000 | 258960 | |
2022-03-01 | 3,75 | 43,25 | 8,7 | 2240000 | 194220 | |
2022-02-01 | 4,75 | 43,25 | 11,0 | 2240000 | 246012 | |
2022-01-01 | 0,6 | 43,25 | 1,4 | 2240000 | 31075 | |
2021-12-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2021-11-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2021-10-01 | 0,4 | 43,25 | 0,9 | 2240000 | 20717 | |
2021-09-01 | 0,25 | 43,25 | 0,6 | 2240000 | 12948 | |
2021-08-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2021-07-01 | 0,25 | 43,25 | 0,6 | 2240000 | 12948 | |
2021-06-01 | 1,75 | 43,25 | 4,0 | 2240000 | 90636 | |
2021-05-01 | 49,8 | 43,25 | 115,1 | 2240000 | 2579237 | |
2021-04-01 | 6,5 | 43,25 | 15,0 | 2240000 | 336647 | |
2021-03-01 | 4,5 | 43,25 | 10,4 | 2240000 | 233064 | |
2021-02-01 | 6 | 43,25 | 13,9 | 2240000 | 310751 | |
2021-01-01 | 0,6 | 43,25 | 1,4 | 2240000 | 31075 | |
2020-12-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2020-11-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2020-10-01 | 0,75 | 43,25 | 1,7 | 2240000 | 38844 | |
2020-09-01 | 0,25 | 43,25 | 0,6 | 2240000 | 12948 | |
2020-08-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2020-07-01 | 0,25 | 43,25 | 0,6 | 2240000 | 12948 | |
2020-06-01 | 9,5 | 43,25 | 22,0 | 2240000 | 492023 | |
2020-05-01 | 36 | 43,25 | 83,2 | 2240000 | 1864509 | |
2020-04-01 | 4,5 | 43,25 | 10,4 | 2240000 | 233064 | |
2020-03-01 | 2 | 43,25 | 4,6 | 2240000 | 103584 | |
2020-02-01 | 3 | 43,25 | 6,9 | 2240000 | 155376 | |
2020-01-01 | 0,25 | 43,25 | 0,6 | 2240000 | 12948 | |
2019-12-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2019-11-01 | 0 | 43,25 | 0,0 | 2240000 | 0 | |
2019-10-01 | 0,25 | 43,25 | 0,6 | 2240000 | 12948 | |
2019-09-01 | 0,2 | 43,25 | 0,5 | 2240000 | 10358 | |
2019-08-01 | 0 | 43,25 | 0,0 | 2240000 | 0 |
Conclusion
En espérant que cet exemple apporte plus de clarté à la méthodologie.
Ce n’est factuellement pas parfait, on parle d’outils et de données mis à disposition par Google après tout… On voit notamment que les données des deux APIs ne sont pas aussi facilement “rapprochables” dans les faits que le dit Google dans sa doc API. Certainement parce que Google Trends agrège les volumes de recherches de plusieurs termes, ou que Google Trends lisse certaines données, là-dessus, je n’ai pas de réponse définitive.
Cependant, pour avoir une idée des recherches historiques et faire des analyses de tendances, ça me va comme ça !
Note : de toute manière ça revient à faire confiance à Google Trends, vu que cette méthode revient à superposer les courbes, preuve à l’appui (la seule “décorrélation” se fait sur les valeurs que je récupère de l’API Keyword Planner)
Si vous avez des questions, n’hésitez pas à me contacter, je serai ravi d’y répondre.
Également, si vous avez des besoins sur tout ce qui concerne les sujets data x SEO ou sur tous vos sujets data tout court d’ailleurs !
Sur ce, ciao !