Extraire les Fiches d'Entreprises Google Maps en JSON avec le Plugin Google Local
Google Maps est l’une des sources de donnees d’entreprises locales les plus riches du web : noms, notes, nombre d’avis, categories, adresses, horaires et niveaux de prix pour presque chaque commerce de chaque ville. Le probleme est d’extraire ces donnees sous une forme exploitable. L’API Places officielle est facturee a l’usage, limitee par des quotas et n’expose pas tout ce que vous voyez sur la carte. Et scraper la carte vous-meme signifie lutter contre une application JavaScript lourde, faire tourner des IP et ecrire des selecteurs fragiles qui cassent au prochain changement de mise en page.
Le nouveau plugin Google Local supprime toute cette couche. Vous envoyez un mot-cle de recherche et vous recevez en retour des fiches d’entreprises structurees en JSON. Cet article explique ce que renvoie le plugin, comment l’appeler et comment construire quelque chose d’utile avec.
Ce que Fait le Plugin Google Local
Le plugin Google Local prend une phrase de recherche simple - la meme que vous taperiez dans Google Maps, comme coffee shops in chicago ou dentists in berlin - et renvoie les resultats d’entreprises locales sous forme de tableau JSON. Vous n’avez pas besoin de cle d’API Google Places et vous n’analysez aucun HTML.
Pour chaque entreprise dans les resultats, vous obtenez des champs comme :
position- rang dans les resultats locauxname- nom de l’entrepriserating- note moyenne en etoilesreviews- nombre d’avisprice- niveau de prix (quand Google en affiche un)category- type d’entreprise, par exemple “Coffee shop”address- adressehours- texte des horaires d’ouverturereview_snippet- une courte citation d’un avis en vedette
Un seul appel renvoie jusqu’a environ 20 entreprises par mot-cle, ce qui correspond a ce que Google affiche dans un bloc local pour une recherche donnee.
La Requete
Le point de terminaison est un unique appel POST. Le seul parametre obligatoire est keyword. Quelques parametres optionnels vous permettent de controler le lieu et la langue :
keyword(obligatoire) - la phrase de recherche, par exemplecoffee shops in chicagoproxy_country- le pays de l’IP de sortie sous forme de code ISO-2 (US,GB,DE)gl- le pays de recherche Google, ISO-2 en minuscules (us,de,fr)hl- la langue de l’interface Google, par defauten
Voici l’appel le plus simple possible avec curl :
curl -X POST "https://api.scrapeunblocker.com/maps/google-local?keyword=coffee%20shops%20in%20chicago&proxy_country=US&gl=us" \
-H "x-scrapeunblocker-key: YOUR_API_KEY"
Les parametres proxy_country et gl comptent plus qu’il n’y parait. Les resultats locaux sont personnalises selon la localisation, donc une recherche de “plumbers near me” executee depuis une IP americaine avec gl=us renvoie des entreprises tres differentes de la meme recherche executee depuis une IP allemande. Si vous cartographiez une ville ou un pays precis, definissez les deux explicitement plutot que de vous fier aux valeurs par defaut.
La Reponse
La reponse est un unique objet JSON. Le niveau superieur vous indique ce qui a ete recherche et combien de fiches sont revenues, et le tableau results contient les entreprises :
{
"keyword": "coffee shops in chicago",
"proxyCountry": "US",
"resultsCollected": 18,
"results": [
{
"position": 1,
"name": "Example Coffee Roasters",
"rating": 4.7,
"reviews": 1284,
"price": "$$",
"category": "Coffee shop",
"address": "123 W Example St, Chicago, IL",
"hours": "Open - Closes 8 PM",
"review_snippet": "Great espresso and friendly staff."
}
]
}
Comme la structure est stable, vous pouvez la mapper directement vers une ligne de base de donnees, un tableur ou un dataframe sans aucun nettoyage HTML.
L’Appeler Depuis Python
Vous n’avez pas besoin du SDK pour utiliser le plugin : n’importe quel client HTTP convient. Voici un petit exemple avec requests qui execute une recherche et affiche un tableau propre :
import requests
API_KEY = "YOUR_API_KEY"
URL = "https://api.scrapeunblocker.com/maps/google-local"
params = {
"keyword": "coffee shops in chicago",
"proxy_country": "US",
"gl": "us",
}
resp = requests.post(URL, params=params, headers={"x-scrapeunblocker-key": API_KEY})
resp.raise_for_status()
data = resp.json()
for biz in data["results"]:
print(f"{biz['position']:>2}. {biz['name']:<30} "
f"{biz.get('rating', '-')}* ({biz.get('reviews', 0)} reviews) "
f"- {biz.get('category', '')}")
Si vous preferez l’outillage officiel, ScrapeUnblocker fournit des SDK pour Python, Node.js, Ruby et PHP, et le plugin est aussi disponible via le tableau de bord et la reference d’API. Le paquet Python s’installe avec pip install scrapeunblocker et lit votre cle depuis la variable d’environnement SCRAPEUNBLOCKER_KEY, ce qui vous evite de passer l’en-tete a la main.
Collecter Toute une Categorie a Travers Plusieurs Villes
Le plugin est le plus utile quand vous le passez en boucle. Disons que vous voulez un jeu de donnees de cafes a travers plusieurs villes americaines. Vous executez une recherche par ville et collectez les lignes :
import csv
import requests
API_KEY = "YOUR_API_KEY"
URL = "https://api.scrapeunblocker.com/maps/google-local"
cities = ["chicago", "seattle", "austin", "denver"]
rows = []
for city in cities:
params = {"keyword": f"coffee shops in {city}", "proxy_country": "US", "gl": "us"}
r = requests.post(URL, params=params, headers={"x-scrapeunblocker-key": API_KEY})
r.raise_for_status()
for biz in r.json()["results"]:
rows.append({"city": city, **biz})
with open("coffee_shops.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["city", "position", "name", "rating",
"reviews", "price", "category", "address"])
writer.writeheader()
for row in rows:
writer.writerow({k: row.get(k, "") for k in writer.fieldnames})
Cela vous donne un seul CSV avec des entreprises de chaque ville, pret a analyser. Le meme schema fonctionne pour toute categorie - restaurants, salles de sport, cabinets d’avocats, magasins de bricolage - et tout ensemble de lieux.
Ce que Vous Pouvez Construire Avec
Les donnees d’entreprises locales ont de nombreux usages pratiques :
- Generation de prospects. Extrayez chaque entreprise d’une categorie et d’une ville, puis enrichissez avec une recherche de site ou d’e-mail. Les champs
category,addressetnamesuffisent en general a amorcer une liste de prospection. - Suivi de la concurrence et du marche. Suivez la note et le nombre d’avis d’un ensemble d’entreprises dans le temps pour voir qui gagne du terrain sur un marche.
- Recherche de SEO local. Voyez qui se classe dans le bloc local pour un mot-cle dans une ville donnee et comment leurs notes se comparent aux votres.
- Cartographie de marche. Comptez combien d’entreprises d’un type existent selon les regions pour reperer les zones mal desservies.
Comme chaque resultat inclut rating et reviews, vous pouvez trier un marche par popularite ou filtrer les entreprises sous un seuil d’avis en une seule ligne de code.
Conseils Pratiques
Quelques points a garder en tete :
- Soyez precis avec les mots-cles. “Coffee” renvoie du bruit ; “specialty coffee shops in chicago” renvoie une liste compacte et pertinente. Le mot-cle est la requete entiere, alors traitez-le comme une vraie recherche Google Maps.
- Definissez le lieu deliberement. Utilisez
proxy_countryetglensemble quand la region des resultats compte. Les laisser aux valeurs par defaut convient pour des tests rapides, mais pas pour des jeux de donnees reproductibles. - Gerez les champs manquants. Toutes les fiches n’ont pas de valeur
priceouhours, alors utilisez.get()avec une valeur par defaut plutot qu’un acces direct par cle. - Respectez les donnees. Les donnees de fiches d’entreprises sont publiques, mais la maniere dont vous les stockez et les utilisez reste soumise aux regles de confidentialite et de plateforme. Gardez des cas d’usage legitimes - etude de marche, generation de prospects, analytique - et respectez la loi applicable.
FAQ
Ai-je besoin d’une cle d’API Google Places ? Non. Le plugin renvoie les donnees des fiches Google Maps directement en JSON, sans cle d’API Google et sans quota Google par requete a gerer.
Combien de resultats renvoie un appel ? Jusqu’a environ 20 entreprises par mot-cle, ce qui correspond a la taille d’un ensemble de resultats locaux typique sur Google.
Puis-je obtenir des resultats pour un pays ou une langue precis ?
Oui. Utilisez proxy_country pour l’IP de sortie, gl pour le pays de recherche Google et hl pour la langue de l’interface. Definissez-les explicitement pour des resultats coherents et precis selon le lieu.
Et si je dois analyser une page que Google Local ne couvre pas ? Pour des pages arbitraires, utilisez le point de terminaison de scraping standard pour recuperer et analyser le contenu, et reservez le plugin Google Local aux recherches d’entreprises de type carte.
Pour Conclure
Le plugin Google Local transforme une tache de scraping penible - une carte lourde en JavaScript, des resultats personnalises et un HTML changeant - en un unique appel d’API qui renvoie du JSON propre. Vous envoyez un mot-cle, fixez eventuellement le lieu et recevez des fiches d’entreprises structurees que vous pouvez verser directement dans une base de donnees ou un tableur.
Si vous voulez l’essayer, le plugin est actif dans le tableau de bord ScrapeUnblocker et documente aux cotes des autres plugins dans la documentation developpeur. Pointez-le sur une categorie et une ville, et voyez a quoi ressemble le bloc local sous forme de donnees.
Essayez ScrapeUnblocker gratuitement
Taux de réussite de plus de 95 % · à partir de 0,55 € pour 1 000 appels · 500 requêtes gratuites à l'inscription.