Comment générer des prospects locaux avec Google Maps ?
PREsenTatIon
Alimenter votre CRM avec l’API Google Map !

Que l’on soit développeur débutant, marketeux curieux, freelance pressé ou jeune entrepreneur, on a tous une bonne raison de vouloir structurer un peu mieux notre prospection. Lorsqu’il s’agit de générer de nouveaux prospects et de gérer efficacement ses contacts, on se retrouve vite perdu dans des fichiers Excel sans fin. On comprend alors qu’un CRM n’est pas juste un gadget, mais un véritable outil pour y voir plus clair et gagner du temps.
On commence donc à y renseigner nos quelques contacts… puis vient le moment où le besoin d’en découvrir de nouveaux se fait sentir. Armé de patience et d’un bon café (eh oui, faut bien garder les yeux ouverts), on scrute les potentiels prospects autour de chez nous avec une recherche Google. La caféine fait effet pour les 8 premiers clients… puis s’estompe. Et au bout du 15ᵉ copier-coller d’infos d’un contact qualifié, on se demande franchement : y aurait pas une méthode un peu plus simple pour faire ça ?
Et si on vous disait qu’avec un peu de code bien ficelé et l’API Google Maps, vous pouvez automatiser une bonne partie de cette corvée ? Chez LYMA Conseil, on aime quand les choses roulent toutes seules (ou presque). C’est pourquoi, dans cet article, on vous montre pas à pas comment récupérer des infos depuis Google Maps (oui, légalement) et les intégrer automatiquement dans votre CRM (ici, HubSpot).
Et si rien que le mot « code » vous file de l’urticaire, pas de panique : vous pouvez aussi nous contacter directement, et on s’en occupera pour vous. 😉
Contenu dU Tutoriel
Générez des leads localisés avec Google Maps
Pourquoi l’API Google Maps, c’est pas juste pour afficher un itinéraire ?
→ On t’explique en quoi les APIs de Google sont de vraies mines d’or pour trouver des prospects.
Créer ta clé API en toute simplicité
→ Étapes pas à pas pour créer ton compte google cloud et générer ta clé et activer les bons services.
Structurer ton mini-projet
→ Parce qu’un projet bien rangé, c’est un projet qu’on n’a pas honte de rouvrir dans 6 mois.
Faire parler l’API avec Python
→ On t’apprend à communiquer avec l’API pour récupérer les données dont t’as besoin.
Exporter les infos dans un CSV grâce à Pandas
→ Un fichier propre, trié, prêt à être utilisé comme une liste de prospects sur un plateau d’argent.
Injecter les contacts dans ton CRM
→ On t’aide à injecter tes contacts tout beaux tout frais directement dans ton CRM.
PREsenTatIon
🗺️ Pourquoi l’API Google Maps ne sert pas qu’à afficher un itinéraire

Lorsqu’on pense à Google Maps, on l’associe spontanément à la navigation ou à la recherche du meilleur restaurant pour le dîner. Pourtant, cette interface grand public cache un potentiel bien plus vaste, notamment pour les professionnels de la prospection locale.
Pour comprendre comment exploiter tout cela efficacement, il est essentiel de s’intéresser à une notion clé : l’API, et plus précisément aux APIs proposées par Google.
🤖 Petit point technique (mais promis, ça ne pique pas trop) : qu’est-ce qu’une API ?
Le terme API (pour Application Programming Interface) peut sembler intimidant, mais son rôle est simple : c’est une passerelle qui permet à deux applications de communiquer entre elles.
Voici une analogie pour mieux comprendre :
Imaginez que tous les restaurants de votre ville sont des applications, dont la fonctionnalité principale est de fournir de la nourriture. De l’autre côté, votre corps humain est une autre application, dont la mission est de se nourrir régulièrement.
Lorsque vous avez faim, vous vous rendez dans un restaurant. À ce moment précis, le serveur entre en jeu : il prend votre commande, la transmet à la cuisine, puis vous apporte le plat. Ce serveur, c’est l’API.
En résumé :
- Vous = l’utilisateur
- La cuisine = la base de données (Google Maps, HubSpot…)
- L’API = l’interface qui prend la commande et livre les données
Ainsi, quand vous interrogez l’API Google Maps Places, vous lui demandez par exemple :
« Donne-moi la liste des coiffeurs à Lyon avec leurs adresses et numéros de téléphone. »
Et elle vous répond avec toutes ces informations, proprement structurées, sans que vous ayez à les chercher manuellement sur Google.
📊 À quoi servent les APIs Google, concrètement ?
Google propose une large gamme d’APIs, couvrant des domaines variés : cartographie, analyse de données, publicité, traduction, traitement du langage naturel… Bien exploitées, ces APIs peuvent grandement contribuer à identifier de nouvelles opportunités commerciales, trouver des prospects, enrichir un CRM, ou encore personnaliser l’expérience client. Voici quelques cas d’usage concrets :
1. Collecte et analyse de données pour identifier des prospects
- Google Maps Platform APIs (Places, Geocoding) : permettent de récupérer des données géolocalisées pour cibler des clients potentiels dans une zone géographique précise.
- Recherche locale : une entreprise peut par exemple utiliser l’API Google Places pour repérer des commerces ou établissements dans une région donnée, puis leur proposer ses services (B2B, partenariats, etc.).
- Analyse démographique : en croisant les données de localisation avec d’autres sources (Google Trends, bases de données externes), on peut mieux cerner les besoins spécifiques d’une zone.
- Cas concret : une société de livraison peut identifier les restaurants qui n’offrent pas encore de service de livraison et leur proposer une collaboration.
2. Automatisation et personnalisation des campagnes marketing
- Google Ads API : permet de gérer automatiquement des campagnes publicitaires sur Google Ads. Vous pouvez :
- Créer des annonces ciblées selon des mots-clés, zones géographiques ou intentions de recherche.
- Analyser les performances pour ajuster votre stratégie et améliorer votre retour sur investissement (ROI).
- Segmenter vos audiences pour atteindre les prospects les plus pertinents.
- Créer des annonces ciblées selon des mots-clés, zones géographiques ou intentions de recherche.
- Google Analytics API : utile pour collecter et analyser les données de navigation de votre site web, identifier les pages les plus consultées, les sources de trafic, ou encore les comportements clés des visiteurs. Ces informations permettent d’ajuster les actions marketing avec précision.
3. Amélioration de l’expérience client
- Google Cloud Natural Language API : cette API permet d’analyser les avis clients ou les publications sur les réseaux sociaux afin d’en extraire des émotions, des thèmes ou des intentions.
- Google Translate API : particulièrement utile pour les entreprises qui souhaitent s’adresser à des clients internationaux. Elle permet de traduire automatiquement vos contenus (site web, emails, publicités…), et ainsi faciliter l’expansion sur de nouveaux marchés.
4. Optimisation de la recherche et de la prospection
- Custom Search API : permet de créer un moteur de recherche personnalisé qui cible des sources spécifiques du web (blogs, forums, sites professionnels…). Idéal pour repérer des communautés ou influenceurs dans votre secteur.
- Google Trends API (via des intégrations tierces) : utile pour suivre les tendances de recherche dans votre domaine. Cela peut révéler des niches émergentes, ou mettre en lumière des besoins non encore couverts.

En résumé, les APIs proposées par Google et notamment « Google Maps Places » sont bien plus que de simples outils techniques : ce sont de véritables leviers pour enrichir vos bases de données, mieux cibler vos actions commerciales, et automatiser intelligemment votre prospection.
PREsenTatIon
Créer ta clé API en toute simplicité

Avant de pouvoir interroger Google Maps pour récupérer des données sur des entreprises locales, vous devez passer par une étape incontournable : la création d’une clé API. Elle agit comme un identifiant personnel qui vous permet d’utiliser les services Google de manière sécurisée et mesurée.
Voici comment procéder, étape par étape, tout en gardant un œil sur les limites gratuites et les éventuels coûts associés.
1. ☁ Créer un compte Google Cloud
- Pour commencer, créez un compte sur la Google Cloud Console :
- Cliquez sur « S’inscrire » ou « Créer un compte » si ce n’est pas déjà fait. Si vous avez déjà un compte Google (Gmail, YouTube, etc.), vous pouvez l’utiliser.
- Il vous sera demandé une adresse e-mail et une carte bancaire pour vérification. Rassurez-vous : aucun prélèvement ne sera effectué tant que vous n’avez pas dépassé les crédits gratuits.
- Cliquez sur « S’inscrire » ou « Créer un compte » si ce n’est pas déjà fait. Si vous avez déjà un compte Google (Gmail, YouTube, etc.), vous pouvez l’utiliser.
2. 🎁Crédits gratuits et seuils d’utilisation
- A la lecture du mot carte de crédit vous avez du frémir, mais pas de panique, nous avons 2 bonnes nouvelles pour vous :
- En créant un compte Google Cloud, vous recevez 300 $ de crédits gratuits, valables pendant 90 jours.
- L’API Google Maps Places propose jusqu’à 10 000 appels gratuits par mois pour les recherches textuelles (fonction searchText), ce qui est suffisant pour beaucoup de projets de prospection.
- En créant un compte Google Cloud, vous recevez 300 $ de crédits gratuits, valables pendant 90 jours.
- Et si vous dépassez ces 10 000 appels ?
- Le service devient payant, avec des tarifs dégressifs à partir de 0,01 $ par tranche de 1 000 appels, et des réductions appliquées selon les volumes. (Voir tableau plus bas.)
Volume mensuel d’appels | Tarif par 1 000 appels (USD) |
|---|---|
0 – 10 000 | 0,00 (gratuit) |
10 001 – 100 000 | 0,01$ |
100 001 – 500 000 | 0,009 $ |
500 001 – 1 000 000 | 0,008 $ |
1 000 001 – 5 000 000 | 0,007 $ |
5 000 001 – 10 000 000 | 0,006 $ |
3. Créer un projet
- Lors de la première connexion, Google vous demandera de créer un projet : donnez lui un nom explicite, par exemple « hubspot_scraping_maps » :
- Si vous aviez déjà un compte , une fois connecté, cliquez en haut à gauche sur le sélecteur de projet, puis sur « Nouveau projet ».

💡 Un projet = un environnement dans lequel vous allez regrouper tous les services liés à une même application..
4. Activer l’API Google Maps Places
- Dans le menu de gauche, allez dans « APIs et services » > « Bibliothèque ». :
- Recherchez « Places API (New) », cliquez dessus, puis sur « Activer ».
- Selon vos besoins, vous pouvez aussi activer d’autres APIs qui vous sont utiles , exemple :
- Geocoding API (conversion adresse ↔ coordonnées GPS)
- Maps JavaScript API (si vous comptez afficher une carte dans une interface)

5. 🔑Créer une clé API
- Retournez dans « APIs et services » > « Identifiants »:
- Cliquez sur « Créer des identifiants » > « Clé API ».
- Une clé sera générée instantanément. Copiez-la et conservez-la en lieu sûr, elle nous sera utile juste après.

5. Bonnes pratiques à retenir
- Ne partagez jamais votre clé API en clair, surtout dans un dépôt public sur GitHub.
- Stockez-la dans un fichier .env (on verra comment faire dans la prochaine partie).
- Gardez un œil sur la console Google Cloud pour suivre votre consommation (les API sont gratuites jusqu’à un certain seuil, ensuite c’est payant).
Vous voilà prêt(e) à interroger Google Maps en toute légalité et sécurité. 🎯
Dans la suite, on va créer une petite structure de projet propre et poser les bases pour interagir avec cette clé sans la mettre en danger.
PREsenTatIon
Mis en place de la structure du projet

Maintenant que votre clé API est prête, il est temps de poser les bases de votre projet Python. L’objectif est simple : créer une structure propre, sécurisée et évolutive pour interagir avec l’API Google Maps Places, sans exposer vos identifiants sensibles ni polluer votre environnement global.
1. Structure de base du projet

Pour générer cette arborescence nous allons dans un premier temps créer un un environnement virtuel pour isoler vos bibliothèques et éviter les conflits entre projets.
Dans votre terminal, depuis le dossier du projet :
# Crée l’environnement
python -m venv venv
# Active l’environnement sur Windows
venv\Scripts\activate
# Sur macOS / Linux ou Windows avec WSL2 :
source venv/bin/activate2. Créer un fichier .env pour stocker la clé API
Créez un fichier .env à la racine du projet, avec le contenu suivant :
GOOGLE_MAPS_API_KEY = your-api-key-ici🔒 Attention : ce fichier ne doit jamais être versionné. Ajoutez-le au fichier .gitignore :
#VARIABLE D ENVIRONNEMENT
.env
#Cache
__pycache__/
#Environnement virtuel
venv/3. Installer les dépendances
On installe les bibliothèques nécessaires (ainsi que pandas , pour plus tard) :
pip install python-dotenv requests pandassuite à cela, on les sauvegarde dans le fichier « requirements.txt »
pip freeze > requirements.txt4. Charger la clé API dans votre script Python
Dans « main.py », pour s’assurer que notre clé API se charge correctement vous pouvez ajouter :
from dotenv import load_dotenv
import os
def get_api_key():
# Charger les variables d’environnement depuis le fichier .env
load_dotenv()
API_KEY = os.getenv("GOOGLE_MAPS_API_KEY")
if not API_KEY:
raise ValueError("Clé API non trouvée. Vérifiez le fichier .env.")
return API_KEY
if __name__ == "__main__":
api_key = get_api_key()
print("Clé API chargée avec succès :", api_key[:8] + "...")
PREsenTatIon
Interroger l’API Google Maps Places avec Python

A présent que votre projet est prêt, et que vous avez pu tester l’accès à votre clé API, vous allez pouvoir envoyer vos premières requêtes à l’API Google Maps Places (version New) via le point d’entrée searchText.
L’objectif est de récupérer des informations structurées sur des lieux professionnels en fonction d’un mot-clé, d’une zone géographique, et d’en extraire les champs les plus pertinents pour votre CRM.
1. Quels champs peut-on récupérer avec l’API Places ?
L’API renvoie une grande variété d’informations. En voici une sélection utile (et disponible via le champ places dans la réponse JSON) :
Champs | Description |
|---|---|
displayName.text | Nom de l’établissement |
formattedAddress | Adresse complète |
location.latitude / location.longitude | Coordonnées GPS |
primaryType | Catégorie principale (ex. : « hair_salon ») |
websiteUri | URL du site web |
nationalPhoneNumber | Numéro de téléphone |
businessStatus | Statut de l’établissement (OPERATIONAL, CLOSED) |
rating / userRatingCount | Note Google & nombre d’avis |
regularOpeningHours | Jours et horaires d’ouverture |
💡 Par défaut, vous ne recevez pas tous ces champs. Il faut les spécifier avec précision dans l’en-tête « X-Goog-FieldMask » . Pour connaître les champs disponnibles exactes n’hésitez pas à consulter la documentation offcielle .
2. Exemple de requête searchText avec l’API Places (New)
L’endpoint searchText , comme son nom l’indique , permet d’effectuer une recherche textuel en limitant les réponses sur une zone géographique donnée. Ainsi en modifiant le fichier main.py on pourra par exemple avoir :
from dotenv import load_dotenv
import os
import requests
# Charger la clé API
load_dotenv()
API_KEY = os.getenv("GOOGLE_MAPS_API_KEY")
# Liste des champs à récupérer
FIELDS = [
"places.displayName.text",
"places.formattedAddress",
"places.location.latitude",
"places.location.longitude",
"places.primaryType",
"places.websiteUri",
"places.nationalPhoneNumber",
"places.businessStatus",
"places.googleMapsUri"
]
# Fonction pour effectuer une requête
def search_places(query, location_bias=None):
url = "https://places.googleapis.com/v1/places:searchText"
headers = {
"Content-Type": "application/json",
"X-Goog-Api-Key": API_KEY,
"X-Goog-FieldMask": ",".join(FIELDS)
}
data = {
"textQuery": query,
}
if location_bias:
data["locationBias"] = {
"circle": {
"center": {
"latitude": location_bias["lat"],
"longitude": location_bias["lng"]
},
"radius": location_bias["radius"]
}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
results = response.json().get("places", [])
return results
else:
print("Erreur lors de l’appel API :", response.status_code, response.text)
return []
# Exemple d’utilisation
if __name__ == "__main__":
query = "coiffeur"
location = {"lat": 45.75, "lng": 4.85, "radius": 5000} # 5 km autour de Lyon
results = search_places(query, location)
for place in results:
print("-" * 40)
print("Nom :", place.get("displayName", {}).get("text"))
print("Adresse :", place.get("formattedAddress"))
print("Téléphone :", place.get("nationalPhoneNumber"))
print("Site web :", place.get("websiteUri"))
📝 Ce que fait ce code :
- Charge la clé API depuis le fichier .env
- Envoie une requête POST à l’API searchText avec un mot-clé (ex. : “coiffeur”)
- Applique un filtre géographique (ici : 5 km autour de Lyon).
- Affiche les informations essentielles pour chaque lieu trouvé
Cependant on se rend compte de quelques limites de celle ci. En effet :
- Les requêtes utilisant searchText ne renvoient au maximum que 20 lieux par requêtes
- Pour élargir la recherche , il ne faut pas interroger des zones trop large en une seule requête mais multiplier les requêtes sur des zones géographiques plus fines ou différentes
- Les données trouvées ne sont pour l’instant pas stockées
3. Stratégie pour couvrir toute l’Île-de-France
A présent que nous avons mis en avant les limites de cette première version, je vous propose de rentrer dans le vif du sujet en prenant le cas concret de la région Ile-de-France. L’idée sera donc de segmenter la recherche par département et pour se faire, deux petites notions s’imposent :
- Pour segmenter les zones avec google Maps Places , vous avez le choix entre 2 propriétés : « locationBias » et « locationRestriction »
- locationBias (biais de zone autour d’un point GPS) est idéal Idéal pour des recherches localisées autour d’un point, par exemple dans un rayon de 5 km
- locationBias (biais de zone autour d’un point GPS) est idéal Idéal pour des recherches localisées autour d’un point, par exemple dans un rayon de 5 km
"locationBias": {
"circle": {
"center": {"latitude": 48.8566, "longitude": 2.3522},
"radius": 5000
}
}- locationRestriction (zone stricte, recommandée pour découper une région) utile si vous voulez segmenter l’Île-de-France en plusieurs zones précises.
- locationRestriction (zone stricte, recommandée pour découper une région) utile si vous voulez segmenter l’Île-de-France en plusieurs zones précises.
"locationRestriction": {
"rectangle": {
"low": {"latitude": 48.6, "longitude": 2.1},
"high": {"latitude": 48.9, "longitude": 2.45}
}
}- Le deuxième point n’est pas strictement documenté pour Places API (New) via searchText mais Google applique des quotas par minute et par seconde par projet et par IP du nombre de requête qu’un utilisateur peut envoyer. Plus loin ils se réservent le droit de rejeter ou ralentir les requêtes si tu les envoies trop vite ou en rafale.
On peut ainsi écrire le code suivant :
from dotenv import load_dotenv
import os
import requests
# Charger la clé API
load_dotenv()
API_KEY = os.getenv("GOOGLE_MAPS_API_KEY")
# Liste des champs à récupérer dans la réponse
FIELDS = [
"places.displayName.text",
"places.formattedAddress",
"places.location.latitude",
"places.location.longitude",
"places.primaryType",
"places.websiteUri",
"places.nationalPhoneNumber",
"places.businessStatus",
"places.googleMapsUri"
]
# Coordonnées rectangulaires approximatives des départements d’Île-de-France
departements_idf = [
{
"name": "75 - Paris",
"low": {"lat": 48.82, "lng": 2.25},
"high": {"lat": 48.90, "lng": 2.42}
},
{
"name": "92 - Hauts-de-Seine",
"low": {"lat": 48.77, "lng": 2.15},
"high": {"lat": 48.95, "lng": 2.33}
},
{
"name": "93 - Seine-Saint-Denis",
"low": {"lat": 48.88, "lng": 2.35},
"high": {"lat": 48.97, "lng": 2.52}
},
{
"name": "94 - Val-de-Marne",
"low": {"lat": 48.73, "lng": 2.39},
"high": {"lat": 48.82, "lng": 2.53}
},
{
"name": "91 - Essonne",
"low": {"lat": 48.35, "lng": 2.00},
"high": {"lat": 48.62, "lng": 2.45}
},
{
"name": "95 - Val-d’Oise",
"low": {"lat": 48.95, "lng": 1.90},
"high": {"lat": 49.20, "lng": 2.45}
},
{
"name": "77 - Seine-et-Marne",
"low": {"lat": 48.40, "lng": 2.45},
"high": {"lat": 48.90, "lng": 3.40}
},
{
"name": "78 - Yvelines",
"low": {"lat": 48.65, "lng": 1.50},
"high": {"lat": 48.90, "lng": 2.10}
}
]
# Fonction pour interroger l’API Google Places
def search_places(query, rectangle):
url = "https://places.googleapis.com/v1/places:searchText"
headers = {
"Content-Type": "application/json",
"X-Goog-Api-Key": API_KEY,
"X-Goog-FieldMask": ",".join(FIELDS)
}
data = {
"textQuery": query,
"locationRestriction": {
"rectangle": {
"low": {
"latitude": rectangle["low"]["lat"],
"longitude": rectangle["low"]["lng"]
},
"high": {
"latitude": rectangle["high"]["lat"],
"longitude": rectangle["high"]["lng"]
}
}
}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
results = response.json().get("places", [])
return results
else:
print(f"Erreur lors de l’appel API : {response.status_code} - {response.text}")
return []
# Collecter les résultats pour chaque département d’Île-de-France
def collect_places_by_region(query):
all_results = []
for dep in departements_idf:
print(f"📍 Recherche dans {dep['name']}...")
results = search_places(query, dep)
for place in results:
all_results.append({
"departement": dep["name"],
"name": place.get("displayName", {}).get("text"),
"address": place.get("formattedAddress"),
"latitude": place.get("location", {}).get("latitude"),
"longitude": place.get("location", {}).get("longitude"),
"industry": place.get("primaryType"),
"website": place.get("websiteUri"),
"phone": place.get("nationalPhoneNumber"),
"lifecycle_stage": place.get("businessStatus"),
"googleMapsUri": place.get("googleMapsUri")
})
time.sleep(1) # Respect du quota API
return all_results
# Exemple d’utilisation
if __name__ == "__main__":
mot_cle = "coiffeur"
donnees = collect_places_by_region(mot_cle)
print(f"\n✅ Total d'établissements trouvés : {len(donnees)}")
for d in donnees[:3]: # aperçu rapide
print(d)
Dans cette version améliorée du script, nous avons mis en place une structure modulaire avec deux fonctions principales pour interagir proprement avec l’API Google Maps Places :
- La première , la fonction « search_places() » est dédiée à l’interrogation de l’API :
- Elle utilise le paramètre locationRestriction, qui permet de définir une zone géographique précise sous forme de rectangle (délimité par une latitude/longitude basse et haute). Cela permet de cibler précisément chaque département d’Île-de-France sans risque de débordement hors zone, contrairement à l’approche précédente avec un simple cercle (locationBias).
- Elle gère également les en-têtes et le formatage des champs à récupérer, avec X-Goog-FieldMask, pour ne renvoyer que les données utiles (nom, adresse, téléphone, etc.).
- Elle utilise le paramètre locationRestriction, qui permet de définir une zone géographique précise sous forme de rectangle (délimité par une latitude/longitude basse et haute). Cela permet de cibler précisément chaque département d’Île-de-France sans risque de débordement hors zone, contrairement à l’approche précédente avec un simple cercle (locationBias).
- La seconde, la fonction « collect_places_by_region() » parcourt les différents départements de la région parisienne.
- Pour chacun, elle appelle search_places() avec les coordonnées géographiques de la zone concernée, puis stocke les données récupérées dans une liste de dictionnaires Python bien structurée.
- Chaque entrée peut être enrichie avec des champs standardisés (comme name, address, phone, etc.) du CRM utilisé (ici HubSpot) , ce qui facilitera leur intégration.
- Pour chacun, elle appelle search_places() avec les coordonnées géographiques de la zone concernée, puis stocke les données récupérées dans une liste de dictionnaires Python bien structurée.
PREsenTatIon
Exporter les données en CSV

Maintenant que vous avez collecté des données locales depuis l’API Google Maps Places, il est temps de les formater proprement dans un fichier .csv à l’aide de Pandas. Ce fichier pourra ensuite être importé dans HubSpot (ou tout autre CRM).
1. Pourquoi pandas ?
pandas est LA bibliothèque de référence en Python pour manipuler des tableaux de données. Elle vous permet en quelques lignes de :
- structurer les résultats
- exporter proprement vos colonnes
- trier, nettoyer ou enrichir les données si nécessaire.
2. Création du fichier CSV :
Pour se faire , nous allons enrichir le fichier main.py avec une nouvelle fonction :
import pandas as pd
def exporter_csv(data, nom_fichier="export_hubspot.csv"):
if not data:
print("❌ Aucune donnée à exporter.")
return
# Création du DataFrame à partir de la liste de dictionnaires
df = pd.DataFrame(data)
# Export en CSV
df.to_csv(nom_fichier, index=False, encoding="utf-8")
print(f"✅ Fichier CSV exporté avec succès : {nom_fichier}")Et au final , on ajuste l’exécution :
if __name__ == "__main__":
mot_cle = "coiffeur"
donnees = collect_places_by_region(mot_cle)
print(f"\n✅ Total d'établissements trouvés : {len(donnees)}")
for d in donnees[:3]: # aperçu rapide
print(d)
# Export CSV
exporter_csv(donnees)
3. Pour aller plus loin :
Quand on récupère des données depuis une API comme Google Maps, il arrive que certaines informations ne soient pas directement présentées sous la forme attendue. C’est le cas par exemple de l’adresse : plutôt que d’avoir un champ distinct pour la ville ou le pays, tout est souvent rassemblé dans une seule chaîne de caractères (formattedAddress).
Résultat ? Si vous voulez utiliser ces éléments séparément dans votre CRM (comme HubSpot), vous devez passer par une phase d’extraction ou de nettoyage.
import pandas as pd
def extract_ville(adresse):
"""Retourne l’avant-dernière partie de l’adresse (souvent la ville)."""
if not isinstance(adresse, str) or "," not in adresse:
return ""
parties = [p.strip() for p in adresse.split(",")]
if len(parties) >= 2:
return parties[-2]
return ""
def extract_pays_region(adresse):
"""Retourne la dernière partie de l’adresse (souvent le pays ou la région)."""
if not isinstance(adresse, str) or "," not in adresse:
return ""
parties = [p.strip() for p in adresse.split(",")]
return parties[-1]
def exporter_csv(data, nom_fichier="export_hubspot.csv"):
if not data:
print("❌ Aucune donnée à exporter.")
return
df = pd.DataFrame(data)
# Extraction de la ville et du pays/région
df["ville"] = df["address"].apply(extract_ville)
df["pays_region"] = df["address"].apply(extract_pays_region)
# Export CSV
df.to_csv(nom_fichier, index=False, encoding="utf-8")
print(f"✅ Fichier exporté avec succès : {nom_fichier}")
Dans cet exemple, on récupère la ville et le pays/région à partir du champ formattedAddress.
Pour cela, on utilise de simples fonctions de manipulation sur les chaînes de caractères : on découpe l’adresse en morceaux (en se basant sur les virgules) puis on extrait les parties utiles.
Ensuite, on applique ces fonctions à l’ensemble des données contenues dans la DataFrame avec la méthode .apply() de pandas.
Cela permet de créer deux nouvelles colonnes : ville et pays_region, qui seront bien pratiques pour filtrer, trier ou segmenter vos contacts une fois importés dans votre CRM (comme HubSpot).
PREsenTatIon
Ajouter les contacts dans HubSpot

A présent que vous avez un beau fichier .csv contenant vos prospects locaux, bien formaté et enrichi grâce à Google Maps, il est temps de les intégrer dans votre CRM préféré (ici Hubspot).
Import manuel via l’interface HubSpot
Dans la plupart des CRM , les étapes à suivre seront sensiblement similaire :
- Connectez-vous à votre compte HubSpot.
- Allez dans Entreprise > Cliquez sur le bouton Importer en haut à droite

- Choisissez le type d’éléments que vous voulez importer (ici des entreprises)
- Sélectionnez Fichier à partir de votre ordinateur

Nous arrivons alors à l’étape du mapping , où Hubspot (ou votre CRM) va vous va vous demander d’associer les colonnes à ses propriétés :

💡 Si certains champs ne correspondent à aucune propriété existante, vous pouvez en créer de nouvelles lors de l’import, ou mieux encore : les préparer à l’avance dans vos paramètres > Propriétés.
Conclusion :
En quelques étapes bien structurées, vous venez de transformer une corvée chronophage (chercher et saisir manuellement des prospects )en un process efficace, automatisé et connecté à votre CRM.
Vous savez à présent trouver des prospects avec Google Maps , mais pourquoi s’arrêter là ?
Ce que vous avez réalisé ici, c’est la première brique d’un système plus vaste . Imaginez maintenant automatiser l’enrichissement, la création et la mise à jour de vos contacts en temps réel, sans jamais ouvrir un fichier CSV. C’est là qu’interviennent les API de certains CRM comme Hubspot.
Et aujourd’hui, l’intelligence artificielle permet d’aller encore plus loin : qualification automatique des entreprises, enrichissement des données ou encore personnalisation des actions commerciales. Mais chaque chose en son temps.
Vous avez suffisamment travaillé pour aujourd’hui. Il est maintenant temps de récolter les fruits de votre dur labeur 😎
