Modifier les informations et horaires d’un établissement
Modifiez coordonnées et horaires hebdomadaires avec exceptions, signalez une fermeture temporaire, fixez les catégories Google et vérifiez les changements.
POST /locations/update effectue une mise à jour partielle. Tous les champs doivent être placés sous input, input.id est le seul champ obligatoire et les champs que vous omettez conservent leurs valeurs actuelles. Chaque section ci-dessous modifie uniquement le corps de la requête JSON.
1. Mettre à jour le téléphone et le site web
Envoyez id ainsi que les champs à modifier. Les plateformes de publication publient bizUrl comme URL du site web. La méthode locations.update() du Python SDK accepte un dict avec des clés camelCase, et la méthode updateLocation() du Node SDK accepte le même objet.
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "phone": "5125550199", "bizUrl": "https://acmekitchen.example.com" }}'{ "data": { "updateLocation": { "success": true, "errors": null, "location": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "databaseId": 1800289, "name": "Jenny Home", "phone": "5125550199", "status": "APPROVED" } } }}Un échec de validation renvoie tout de même le statut HTTP 200, avec success: false et le motif dans data.updateLocation.errors ; vérifiez donc success plutôt que le code de statut. Les deux SDK lèvent ValidationError dans ce cas.
2. Définir les horaires hebdomadaires
businessHours est un tableau contenant une entrée pour chaque jour de la semaine. Envoyez toujours les 7 entrées et indiquez un jour de fermeture avec type: "CLOSED" et un tableau slots vide plutôt que de l'omettre. Les plages horaires d'une même journée ne doivent pas se chevaucher.
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "businessHours": [ { "day": "MONDAY", "type": "OPEN", "slots": [{ "start": "09:00am", "end": "05:00pm" }] }, { "day": "TUESDAY", "type": "OPEN", "slots": [{ "start": "09:00am", "end": "05:00pm" }] }, { "day": "WEDNESDAY", "type": "OPEN", "slots": [{ "start": "09:00am", "end": "05:00pm" }] }, { "day": "THURSDAY", "type": "OPEN", "slots": [{ "start": "09:00am", "end": "05:00pm" }] }, { "day": "FRIDAY", "type": "OPEN", "slots": [{ "start": "09:00am", "end": "05:00pm" }] }, { "day": "SATURDAY", "type": "OPEN", "slots": [{ "start": "10:00am", "end": "02:00pm" }] }, { "day": "SUNDAY", "type": "CLOSED", "slots": [] } ] }}'Pour un jour férié, ajoutez une entrée SPECIAL au même tableau. Elle remplace les horaires pour cette seule date et laisse le planning hebdomadaire inchangé :
{ "day": "SPECIAL", "type": "CLOSED", "specialDate": "2026-12-25", "slots": [] }3. Signaler une fermeture temporaire ou masquer l'adresse
temporarilyClosed: true indique que l'entreprise est fermée et interrompt la publication de ses horaires. Définissez sa valeur sur false pour signaler la réouverture. Pour une entreprise desservant une zone géographique, définissez hideAddress: true : ListingsAPI conserve l'adresse dans les données de l'établissement, mais ne la transmet pas aux plateformes de publication.
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "temporarilyClosed": true } }'4. Définir les catégories Google
Google Business Profile possède sa propre taxonomie de catégories, distincte du subCategoryId numérique. primaryGbpSiteCategoryId accepte un GCID tel que gcid:restaurant, et additionalGbpSiteCategoryIds en accepte d'autres. Les deux sont résolus en fonction de countryIso ; envoyez donc le pays dans le même appel.
curl -X POST https://listingsapi.com/api/v4/locations/update \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "countryIso": "US", "primaryGbpSiteCategoryId": "gcid:restaurant", "additionalGbpSiteCategoryIds": ["gcid:pizza_restaurant", "gcid:italian_restaurant"] }}'Ne les confondez pas avec additionalCategoryIds, qui accepte des valeurs entières de databaseId provenant de l'endpoint des sous-catégories. Consultez Rechercher les pays, les États et les catégories.
5. Relire les données de l'établissement
GET /locations-by-ids renvoie l'enregistrement complet pour un ou plusieurs identifiants encodés en base64, transmis sous forme de tableau JSON dans le paramètre de requête ids. Comparez phone, businessHours et temporarilyClosed avec les valeurs que vous avez envoyées.
curl -G https://listingsapi.com/api/v4/locations-by-ids \--data-urlencode 'ids=["TG9jYXRpb246MTgwMDI4OQ=="]' \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "getLocationsByIds": [ { "id": "TG9jYXRpb246MTgwMDI4OQ==", "databaseId": 1800289, "name": "Jenny Home", "phone": "5125550199", "hideAddress": false, "temporarilyClosed": true } ] }}Les identifiants qui n'existent pas dans votre compte sont exclus du tableau sans erreur ; comparez donc le nombre d'enregistrements renvoyés au nombre demandé.
Si des webhooks sont configurés, un événement profile.updated est déclenché. Les notifications sont limitées à un envoi par établissement toutes les 60 secondes, effectué dès la première modification : les modifications suivantes dans cette fenêtre sont regroupées, et changed_fields décrit uniquement la modification qui a ouvert cette fenêtre. Relisez les données de l'établissement à la réception de l'événement, puis à nouveau après la fin de la fenêtre.
Étapes suivantes
- Importer un logo, une image de couverture et des photos : ajoutez des images à l'enregistrement que vous venez de mettre à jour.
- Rechercher des établissements et archiver ceux que vous ne gérez plus : effectuez une recherche par code de magasin et archivez les établissements fermés.
- Mettre à jour un établissement et Récupérer des établissements par leurs identifiants : les pages de référence, qui couvrent notamment les liens d'action associés au lieu et tous les champs modifiables.