Atualize os detalhes e horários de um local
Altere contatos, publique horários semanais completos com exceções, marque fechamento temporário, defina categorias do Google e confira as alterações.
POST /locations/update realiza uma atualização parcial. Todos os campos ficam em input, input.id é o único campo obrigatório, e os campos que você omitir mantêm seus valores atuais. Cada seção abaixo altera apenas o corpo JSON da requisição.
1. Atualize o telefone e o site
Envie id junto com os campos que deseja alterar. As plataformas de publicação publicam bizUrl como a URL do site. O locations.update() do Python SDK recebe um dict com chaves camelCase, e o updateLocation() do Node SDK recebe o mesmo objeto.
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" } } }}Uma falha de validação ainda retorna HTTP 200, com success: false e o motivo em data.updateLocation.errors, portanto verifique success em vez do código de status. Ambos os SDKs lançam ValidationError nesse caso.
2. Defina os horários semanais
businessHours é um array com uma entrada para cada dia da semana. Sempre envie as sete entradas e marque um dia sem funcionamento com type: "CLOSED" e um array slots vazio em vez de omiti-lo. Os intervalos de um mesmo dia não devem se sobrepor.
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": [] } ] }}'Para um feriado, acrescente uma entrada SPECIAL ao mesmo array. Ela substitui os horários apenas daquela data e mantém o padrão semanal:
{ "day": "SPECIAL", "type": "CLOSED", "specialDate": "2026-12-25", "slots": [] }3. Marque um fechamento temporário ou oculte o endereço
temporarilyClosed: true marca a empresa como fechada e interrompe a publicação dos horários dela. Defina esse campo como false para reabrir. Para uma empresa com área de atendimento, defina hideAddress: true: ListingsAPI mantém o endereço no local, mas não o envia às plataformas de publicação.
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. Defina as categorias do Google
O Google Business Profile tem sua própria taxonomia de categorias, separada do subCategoryId numérico. primaryGbpSiteCategoryId recebe um GCID, como gcid:restaurant, e additionalGbpSiteCategoryIds recebe mais deles. Ambos são resolvidos com base em countryIso, portanto envie o país na mesma chamada.
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"] }}'Não confunda esses campos com additionalCategoryIds, que recebe valores inteiros de databaseId do endpoint de subcategorias. Consulte Consulte países, estados e categorias.
5. Consulte o local novamente
GET /locations-by-ids retorna o registro completo de um ou mais IDs em base64, passados como um array JSON no parâmetro de consulta ids. Compare phone, businessHours e temporarilyClosed com o que você enviou.
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 } ] }}Os IDs que não existem na sua conta são removidos do array sem gerar erro, portanto compare a quantidade retornada com a que você solicitou.
Se os webhooks estiverem configurados, um evento profile.updated será disparado. A entrega é limitada a uma por local a cada 60 segundos, no início da janela: as edições posteriores nessa janela são agrupadas, e changed_fields descreve apenas a edição que a iniciou. Consulte o local novamente quando o evento chegar e mais uma vez após o encerramento da janela.
Próximos passos
- Envie um logotipo, uma capa e fotos: adicione imagens ao registro que você acabou de atualizar.
- Encontre locais e arquive aqueles que você não gerencia mais: pesquise pelo código da loja e desative filiais fechadas.
- Atualize um local e Obtenha locais por IDs: as páginas de referência, incluindo links de ações do local e todos os campos que podem ser alterados.