Créer le premier Google Business Profile d’un établissement
Soumettez un nouveau Google Business Profile via un compte Google connecté, puis suivez la vérification via l’établissement, ses fiches et les webhooks.
La mise en correspondance et l’association ne fonctionnent que lorsqu’une fiche Google existe déjà. Un nouveau point de vente n’en possède pas, vous demandez donc à l’API d’en créer une sous un compte Google connecté. La création est asynchrone et Google vérifie le profil selon son propre calendrier ; ce guide porte donc principalement sur le suivi du résultat.
1. Confirmer que l’établissement n’a pas de fiche Google
Consultez les fiches premium de l’établissement et recherchez la ligne dont le site.name est Google Maps. Un établissement sans présence sur Google affiche REQUIRING_ACTION avec un connectedAccountId à null.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY"{ "site": { "name": "Google Maps", "url": "maps.google.com" }, "syncStatus": "REQUIRING_ACTION", "displayStatus": "Connect your account to sync the listing", "listingUrl": null, "connectedAccountId": null, "verified": false}Si la ligne est déjà SYNCED, ou si connectedAccountId est renseigné, l’établissement possède une fiche Google et ce guide ne s’applique pas. Associez-la ou mettez-la à jour à la place.
2. Choisir un dossier (facultatif)
Google organise les fiches d’un compte en dossiers, également appelés groupes de comptes. Listez les dossiers du compte connecté et transmettez-en un dans folderId si le propriétaire souhaite placer le nouveau profil dans un groupe précis. Ignorez cette étape pour le créer à la racine du compte.
curl https://listingsapi.com/api/v4/connected-accounts/4f712c17-4f95-42dd-90f4-97171a2e67b5/folders \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "getFoldersUnderGoogleAccount": [ { "folderId": "accounts/104890024806530350198", "folderName": "Bright Smile Dental", "locationCount": null } ] }}Utilisez folderId tel quel ; il s’agit de la chaîne accounts/{id}, pas d’un nombre. locationCount peut être null lorsque Google ne le communique pas. Le point de terminaison n’est valide que pour les connexions GoogleAccount.
3. Créer la fiche
Envoyez le id de l’établissement encodé en base64 et le compte, ainsi que le dossier si vous en avez choisi un. La réponse indique uniquement que la demande a été acceptée.
curl -X POST https://listingsapi.com/api/v4/locations/create/gmb-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "locationId": "TG9jYXRpb246MTgwMDI4OQ==", "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5", "folderId": "accounts/104890024806530350198" }}'{ "data": { "createGmbListingForLocation": { "clientMutationId": null, "success": true, "errors": null } }}success: true signifie que la création a été lancée, pas qu’un profil est en ligne. Google examine chaque nouveau profil avant de le publier, ce qui peut prendre plusieurs jours. Lorsque success est false, errors en indique la raison : des champs obligatoires manquent pour l’établissement, celui-ci possède déjà une fiche Google, il est archivé ou le compte connecté n’est plus actif.
4. Suivre le statut de vérification de l’établissement
Chaque lecture d’un établissement renvoie googleVerificationStatus avec un status et un message. Consultez à nouveau l’établissement pour voir où en est Google dans le processus.
curl -G https://listingsapi.com/api/v4/locations-by-ids \--data-urlencode 'ids=["TG9jYXRpb246MTgwMDI4OQ=="]' \-H "Authorization: API $LISTINGSAPI_KEY"{ "id": "TG9jYXRpb246MTgwMDI4OQ==", "databaseId": 1800289, "googleVerificationStatus": { "status": "PENDING_VERIFICATION", "message": null }}Une lecture quotidienne suffit pour un processus qui se mesure en jours. Respectez Retry-After lors d’une réponse 429 si vous vérifiez de nombreux établissements à la fois.
5. Suivre la ligne Google dans les fiches
La ligne des fiches premium de l’étape 1 suit la même progression du côté de la fiche. Exécutez à nouveau l’appel de l’étape 1 et consultez syncStatus, verified et listingUrl.
6. Écoutez les webhooks de vérification
Si une URL de webhook est définie dans le tableau de bord, deux événements couvrent les états finaux, ce qui vous évite d'effectuer des interrogations périodiques. Tous deux contiennent location_id et ont toujours data.connected_account_id: null.
{ "event": "connection.google_verification_failed", "timestamp": "2026-08-25T14:52:31Z", "account_id": 11073, "location_id": "279381", "data": { "platform": "google", "connected_account_id": null, "failure_type": "rejected", "reason": "This profile is suspended." }}Seuls les échecs transient justifient une nouvelle tentative. Les états en cours n'émettent aucun événement ; le silence ne constitue donc pas un signal : tant qu'une vérification est en cours, consultez googleVerificationStatus comme à l'étape 4.
Étapes suivantes
- Connecter Google et importer des établissements : connectez le compte dont dépend ce guide.
- Vérifier l'état des fiches et les liens en ligne : une vue plus complète de chaque ligne correspondant à une plateforme de publication.
- Réagir aux événements avec des webhooks : recevez les événements de vérification au lieu d'effectuer des interrogations périodiques.
- Référence : Créer une fiche GMB pour un établissement, Répertorier les dossiers GMB, Obtenir les fiches premium, Répertorier les établissements.