Demandez à un gérant d’entreprise locale à quel rang il se classe pour “plombier urgence” et il vous donnera généralement un seul chiffre, souvent celui qu’il a vu en recherchant depuis son propre bureau. Ce chiffre est réel, mais il décrit un seul point sur la carte. Google classe les résultats locaux en partie selon la distance par rapport à la personne qui effectue la recherche, de sorte qu’une même entreprise peut être première dans sa propre rue, huitième un kilomètre plus loin, et totalement absente de l’autre côté de la ville.
Une geo-grid corrige cela en mesurant le classement depuis de nombreux points à la fois. On place une grille de coordonnées sur la zone desservie par une entreprise, on exécute la même recherche Maps depuis chaque point, et on enregistre où l’entreprise apparaît. Le résultat est une carte des classements plutôt qu’un classement unique, et elle montre exactement où une entreprise l’emporte et où elle disparaît.
Ce guide couvre la conception de la grille, le code pour l’exécuter, la lecture des trois indicateurs que les équipes en tirent, et les erreurs qui rendent les grilles trompeuses.
Pourquoi un seul classement ne suffit pas
Les propres directives de Google citent trois facteurs derrière les résultats locaux : la pertinence (à quel point la fiche correspond à la recherche), la distance (à quelle distance se trouve le résultat par rapport à la personne qui recherche ou au lieu indiqué dans la recherche) et la notoriété (à quel point l’entreprise est connue, à partir des avis, des liens et d’autres signaux). La pertinence et la notoriété changent à peine d’un pâté de maisons à l’autre. La distance change à chaque pas.
Cela fait du classement local une surface, pas un chiffre. Un dentiste avec un profil solide peut occuper les trois premières places sur tout un quartier, tandis qu’un concurrent plus récent ne se classe bien que près de sa propre porte. Une vérification unique depuis le bureau cache ces deux réalités. C’est aussi le cas d’une vérification au niveau de la ville : demander les résultats “à Chicago” lisse exactement la variation qui intéresse une entreprise locale.
Si vous découvrez comment la localisation façonne plus largement les résultats de recherche, notre guide sur les API SERP géociblées pour le SEO local couvre l’échelle de granularité du pays jusqu’aux coordonnées. Une geo-grid se situe au dernier échelon.
Concevoir la grille
Une grille comporte trois paramètres, et chacun change ce que la carte peut révéler.
| Paramètre | Ce qu’il contrôle | Un point de départ raisonnable |
|---|---|---|
| Taille | Nombre de points par côté (7 signifie 7 x 7 = 49 points) | 7 pour une entreprise de quartier, 9 à 13 pour une zone de service |
| Espacement | Distance entre points voisins | 0,5 à 1 km dans les villes denses, 2 à 5 km en banlieue et en zone rurale |
| Zoom | Le niveau de zoom de la carte auquel la recherche est effectuée | 15 pour le niveau rue, 13 pour une zone plus large |
Trois règles gardent une grille honnête :
- Utilisez une taille impaire et centrez-la sur l’entreprise. Le point central se trouve alors sur l’adresse, de sorte que la carte montre toujours le meilleur cas aux côtés de tout ce qui l’entoure.
- Adaptez l’espacement à la façon dont les gens recherchent réellement. Un café est en concurrence à distance de marche ; une entreprise de couverture est en concurrence à l’échelle d’un comté. Une grille trop serrée ne montre que du vert, et une grille trop large ne montre que des cellules vides.
- Gardez chaque paramètre fixe entre les exécutions. La taille, l’espacement, le zoom, le mot-clé, la langue et l’appareil doivent rester identiques, sinon deux cartes ne peuvent pas être comparées.
Le code
Le module ci-dessous construit la grille, prépare une recherche Maps par point, trouve l’entreprise dans chaque réponse et résume le résultat. Il n’utilise que la bibliothèque standard.
import math
EARTH_RADIUS_KM = 6371.0088
NOT_FOUND = 21 # one past the 20 places a Maps search returns
def grid_points(lat, lng, size=7, spacing_km=1.0):
"""A size x size grid centred on (lat, lng), points spacing_km apart."""
if size % 2 == 0:
raise ValueError("size must be odd so the business sits on the centre point")
half = size // 2
points = []
for row in range(size):
for col in range(size):
north_km = (half - row) * spacing_km
east_km = (col - half) * spacing_km
p_lat = lat + math.degrees(north_km / EARTH_RADIUS_KM)
p_lng = lng + math.degrees(east_km / (EARTH_RADIUS_KM * math.cos(math.radians(p_lat))))
points.append({"row": row, "col": col, "lat": round(p_lat, 6), "lng": round(p_lng, 6)})
return points
def maps_params(keyword, lat, lng, zoom=15, api_key="YOUR_API_KEY"):
"""Query parameters for one Google Maps search seen from (lat, lng)."""
return {
"engine": "google_maps",
"api_key": api_key,
"q": keyword,
"type": "search",
"ll": f"@{lat},{lng},{zoom}z",
"hl": "en",
}
def rank_of(response, place_id):
"""Position of the business in one response, or None when it is not listed."""
for place in response.get("places_results", []):
if place.get("place_id") == place_id:
return place.get("position")
return None
def summarise(ranks, top=3):
"""ranks: one rank (or None) per grid point."""
found = [r for r in ranks if r is not None]
return {
"points": len(ranks),
"found": len(found),
"arp": round(sum(found) / len(found), 2) if found else None,
"atrp": round(sum(r if r is not None else NOT_FOUND for r in ranks) / len(ranks), 2),
"solv": round(sum(1 for r in found if r <= top) / len(ranks), 3),
}
def render(points, ranks, size):
"""The grid as text, north at the top: rank per point, '--' when not found."""
cells = {(p["row"], p["col"]): r for p, r in zip(points, ranks)}
return "\n".join(
" ".join(f"{cells[(row, col)]:>2}" if cells[(row, col)] is not None else "--" for col in range(size))
for row in range(size)
)
grid_points convertit les kilomètres en degrés sur une sphère, de sorte que l’espacement reste constant à toute latitude plutôt que de s’étirer à mesure qu’on s’éloigne de l’équateur. Le point 0 est le coin nord-ouest, et les lignes vont du nord au sud.
L’exécuter pour une entreprise et un mot-clé donnés est une courte boucle. Chaque point devient une recherche Google Maps via le SERP API de Shifter, les coordonnées étant passées dans le paramètre ll afin que la recherche soit effectuée depuis ce point :
import json
import os
import time
import requests
from geogrid import grid_points, maps_params, rank_of, render, summarise
API = "https://serp.shifter.io/v1"
KEYWORD = "emergency plumber"
PLACE_ID = "ChIJ_YOUR_PLACE_ID" # the business you are tracking
CENTER = (41.8781, -87.6298) # its address
SIZE, SPACING_KM = 7, 1.0
points = grid_points(*CENTER, size=SIZE, spacing_km=SPACING_KM)
ranks = []
for p in points:
params = maps_params(KEYWORD, p["lat"], p["lng"], api_key=os.environ["SERP_API_KEY"])
response = requests.get(API, params=params, timeout=60).json()
ranks.append(rank_of(response, PLACE_ID))
time.sleep(0.2)
print(render(points, ranks, SIZE))
print(json.dumps(summarise(ranks)))
Pour faire correspondre la bonne fiche, utilisez le place_id de l’entreprise plutôt que son nom : les noms se répètent, et les franchises les partagent. Vous pouvez trouver le place_id dans n’importe quelle réponse Maps contenant l’entreprise.
Nous avons testé le module face à un répondeur synthétique qui classe une entreprise selon sa distance au point central, avec un côté est légèrement plus faible. Le résultat ressemble à ceci (les chiffres proviennent du test synthétique, pas d’une entreprise réelle) :
12 10 9 8 11 12 14
10 8 6 6 8 10 12
9 6 4 3 6 8 11
8 6 3 1 5 8 10
9 6 4 3 6 8 11
10 8 6 6 8 10 12
12 10 9 8 11 12 14
{"points": 49, "found": 49, "arp": 8.31, "atrp": 8.31, "solv": 0.082}
Le motif est celui que montrent les grilles réelles : fort à l’adresse, s’estompant avec la distance, et inégal selon la direction.
Lire la carte : trois indicateurs
Les équipes résument une grille avec trois chiffres, et chacun répond à une question différente.
| Indicateur | Mode de calcul | Ce qu’il révèle |
|---|---|---|
| ARP, average rank position | Classement moyen sur les points où l’entreprise apparaît | Sa qualité de classement là où elle se classe effectivement |
| ATRP, average total rank position | Classement moyen sur tous les points, en comptant “introuvable” comme 21 | Visibilité globale sur toute la zone |
| SoLV, share of local voice | Part des points où l’entreprise figure dans le top 3 | Quelle part de la carte elle possède dans le pack local |
Ils doivent être lus ensemble. Une entreprise trouvée seulement à cinq points, tous dans le top 3, a un excellent ARP et un mauvais ATRP. La carte montre pourquoi : elle domine une petite zone et est invisible partout ailleurs. Cela pointe vers un problème de distance, pas de pertinence, et un meilleur travail on-page ne le résoudra pas.
Le SoLV compte surtout pour les entreprises qui dépendent du pack local, les trois résultats locaux que Google affiche au-dessus des listes classiques. Les positions quatre à vingt existent sur la liste Maps complète, mais beaucoup moins de personnes qui recherchent font défiler jusque là.
Utiliser une grille pour décider
Une grille ponctuelle est un diagnostic. Les grilles répétées sont là où se trouve la valeur.
- Comparez avec les concurrents sur la même grille. Exécutez les mêmes points pour les deux ou trois entreprises qui vous devancent au centre. Leurs cartes montrent souvent qu’un concurrent gagne sur la notoriété (une zone large et uniforme) tandis que vous gagnez sur la proximité.
- Mesurez le changement après une action. De nouveaux avis, une catégorie corrigée ou une adresse rectifiée devraient se traduire par une zone verte plus large quelques semaines plus tard. Sans grille fixe, impossible de distinguer une amélioration d’un simple bruit.
- Surveillez les bords. Les cellules en bordure de la zone forte d’une entreprise bougent en premier, dans les deux sens. Les observer donne un avertissement plus précoce que le centre.
- Vérifiez attentivement les entreprises à zone de service. Les entreprises qui masquent leur adresse et servent les clients sur site se classent souvent très différemment des commerces physiques. Une grille plus large montre si elles apparaissent là où se trouvent leurs clients.
Des exécutions hebdomadaires suffisent pour la plupart des entreprises. Les classements locaux bougent effectivement au quotidien, mais une cadence hebdomadaire avec des paramètres fixes montre les tendances sans payer pour chaque fluctuation. Si vous suivez aussi les classements organiques classiques, notre guide sur la détection de la volatilité des SERP explique comment distinguer un vrai mouvement du bruit quotidien.
Les erreurs qui rendent les grilles trompeuses
- Rechercher avec un nom de ville dans le mot-clé. “Plombier Chicago” indique à Google où chercher et annule la localisation du point. Utilisez le terme de service brut, comme le ferait une personne recherchant à proximité.
- Mélanger appareils ou langues entre les exécutions. Les résultats Maps mobiles et de bureau diffèrent. Choisissez-en un et conservez-le.
- Traiter “introuvable” comme un classement de 20. Une entreprise absente est pire qu’une entreprise classée vingtième. Comptez-la séparément, comme le fait l’ATRP avec 21, et indiquez le nombre de points où elle a été trouvée.
- Faire tourner des grilles sur de l’eau ou des terrains vides. Les points sur un lac ou dans une forêt ajoutent des cellules depuis lesquelles aucun client ne recherchera jamais. Déplacez le centre ou retirez ces cellules avant de faire la moyenne.
- Lire une seule exécution comme la vérité. Les résultats varient légèrement entre des recherches identiques. Agissez sur des motifs qui se maintiennent sur plusieurs exécutions, pas sur une seule cellule qui change de couleur.
Pour une vue plus large sur la mesure propre et cohérente des classements (personnalisation, appareil et temps), consultez comment mesurer des classements de mots-clés précis.
Coût et échelle
Le coût d’une grille est simplement points multiplié par mots-clés multiplié par exécutions. Une grille 7 x 7 représente 49 recherches par mot-clé. Dix mots-clés suivis chaque semaine, c’est 490 recherches par semaine, soit environ 2 100 par mois. Une grille 13 x 13 pour les mêmes dix mots-clés représente 1 690 recherches par semaine.
Ce calcul est la principale raison de choisir délibérément la taille de la grille. Commencez par une grille 7 x 7 sur les mots-clés qui apportent des clients, et n’élargissez que ceux pour lesquels les bords de la carte changent encore.
FAQ
Combien de points une geo-grid doit-elle avoir ?
Pour une entreprise desservant un quartier, une grille 7 x 7 (49 points) suffit généralement. Les entreprises desservant toute une ville ou un comté ont besoin d’un espacement plus large, et parfois d’une grille de 9 x 9 à 13 x 13, pour voir où s’arrête leur visibilité.
Une geo-grid est-elle la même chose que vérifier les classements par code postal ?
Non. Une vérification par code postal exécute une seule recherche pour une zone et renvoie un seul classement. Une geo-grid exécute une recherche depuis chaque coordonnée, elle montre donc comment le classement varie à l’intérieur d’une zone, ce qui est exactement ce dont dépendent les résultats locaux basés sur la distance.
Pourquoi mon entreprise se classe-t-elle première au bureau mais pas de l’autre côté de la ville ?
La distance est l’un des principaux facteurs des résultats locaux de Google. Près de l’adresse, la distance joue en votre faveur. Plus loin, des concurrents plus proches de la personne qui recherche, ou plus connus, prennent les premières places.
À quelle fréquence dois-je exécuter une geo-grid ?
Une fois par semaine suffit pour la plupart des entreprises. Exécutez une grille supplémentaire quelques semaines après un changement significatif, comme de nouveaux avis ou une catégorie d’entreprise corrigée, pour voir si la zone forte s’est élargie.
L’essentiel
Les classements locaux sont une carte, pas un chiffre. Une geo-grid mesure cette carte avec la même recherche depuis de nombreux points, et trois indicateurs (ARP, ATRP et share of local voice) la résument. Gardez la grille centrée sur l’entreprise, dimensionnée selon son marché réel et fixe entre les exécutions, et elle devient le moyen le plus direct de voir où une entreprise locale est visible, où elle ne l’est pas, et si cela évolue.