Verifique o status das listagens e obtenha links ativos
Por local, veja sincronização por plataforma de publicação, URLs de listagens ativas, cobertura e assistentes de voz. Receba webhooks sem consultas.
Assim que um local existe, uma listagem por plataforma de publicação do seu plano é enviada automaticamente. Este guia mostra como consultar o andamento de cada uma, obter as URLs das listagens publicadas e parar de fazer consultas periódicas depois que os webhooks estiverem configurados.
1. Busque as listagens premium de um local
GET /locations/{locationId}/listings/premium retorna um registro por plataforma de publicação premium do plano. É um array simples, não uma lista paginada. A rota correspondente /listings/additional retorna os diretórios gratuitos com a mesma estrutura; não há parâmetro de consulta listingType.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "listingsForLocation": [ { "site": { "name": "Google Maps", "url": "maps.google.com" }, "syncStatus": "REQUIRING_ACTION", "displayStatus": "Connect your account to sync the listing", "actionRequired": true, "listingUrl": null, "syncIssue": null, "lastUpdate": "2026-07-06T18:33:28Z" }, { "site": { "name": "BeLocalFocussed", "url": "belocalfocussed.com" }, "syncStatus": "SYNCED", "displayStatus": "Synced", "actionRequired": false, "listingUrl": "https://belocalfocussed.com/jenny-home-26x0ffkd0e", "syncIssue": null, "lastUpdate": "2026-07-06T18:33:30Z" } ] }}Cada linha associa um site a um syncStatus legível por máquina e a um displayStatus legível por pessoas. lastUpdate informa quando a linha foi alterada pela última vez, o que é útil para identificar um envio que parou de avançar.
2. Consulte o status de cada plataforma de publicação
syncStatus é o campo a usar para definir os caminhos da lógica condicional. displayStatus é o texto a exibir para uma pessoa, e syncIssue contém o motivo informado pela plataforma de publicação, quando houver.
Google Maps e Facebook permanecem em REQUIRING_ACTION até que a conta da respectiva plataforma de publicação seja conectada: um Google Business Profile para o Google Maps e uma Página do Facebook para o Facebook. Isso é esperado para um novo local, não é uma falha.
O Apple Maps não exige uma conexão. Se o proprietário não tiver conectado uma conta verificada de organização do Apple Business, o ListingsAPI envia o local por meio de sua própria conta do Apple Business Connect, e a Apple verifica o envio antes de publicá-lo. Consulte Conecte o Apple Business Connect.
3. Reúna os links ativos
listingUrl só é definido nas linhas de listagens publicadas. Filtre por SYNCED (e COMPLETED) e guarde a URL junto com o nome do site para que você possa exibir uma lista de links para visualizar as listagens publicadas ou armazenar a URL no seu próprio registro.
curl -s https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '[.data.listingsForLocation[] | select(.listingUrl != null) | {site: .site.name, url: .listingUrl}]'Uma linha SYNCED com listingUrl definido como null pode ocorrer: alguns diretórios não disponibilizam uma URL de página pública. Considere o status como a informação definitiva e o link como opcional.
4. Crie um resumo de cobertura
Contar as linhas por syncStatus fornece um indicador da situação de cada local em uma única linha: quantas plataformas de publicação têm listagens publicadas, quantas ainda estão em andamento e quantas estão bloqueadas. Esse é o número a exibir em um painel.
curl -s https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '.data.listingsForLocation | group_by(.syncStatus) | map({status: .[0].syncStatus, count: length})'Execute esse processo para vários locais percorrendo as páginas de GET /locations e chamando o endpoint premium uma vez por local. Cada chamada conta para o seu limite de requisições, então deixe um intervalo entre elas e respeite Retry-After ao receber 429. Encontre e corrija erros nas listagens mostra esse loop como uma varredura de toda a conta.
5. Verifique os assistentes de voz
Os assistentes de voz (Google Assistant, Alexa, Siri, Cortana, Bixby) têm seu próprio endpoint, GET /locations/{locationId}/voice-assistants, com um conjunto menor de status. O Google Assistant depende da conexão com o Google, portanto, um local sem essa conexão também precisa de atenção aqui. Os resultados da Siri vêm da listagem do local no Apple Maps.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/voice-assistants \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "voiceAssistantsForLocation": [ { "voiceIdentifier": "GOOGLE_ASSISTANT", "name": "Google Assistant", "syncStatus": "REQUIRING_ACTION", "actionRequired": true, "syncIssue": null, "errors": [] }, { "voiceIdentifier": "SIRI", "name": "Siri", "syncStatus": "IN_PROGRESS", "actionRequired": false, "syncIssue": null, "errors": [] } ] }}Não há um link ativo para um assistente de voz; LIVE é o estado final.
6. Receba eventos de webhook em vez de fazer consultas periódicas
Se você tiver uma URL de webhook configurada em /dashboard/webhooks, o evento listing.submission será disparado sempre que um envio de um local para uma plataforma de publicação atingir um estado terminal. Ele contém status (success, incomplete ou canceled), o site e, em caso de sucesso, live_link, que é a mesma URL que você coletou na etapa 3.
import base64 def handle(payload: dict) -> None: if payload["event"] != "listing.submission": return data = payload["data"] # "TG9jYXRpb246Mjc5Mzgx" -> "Location:279381" global_id = base64.b64decode(data["location_id"]).decode() database_id = int(global_id.split(":")[1]) site = data["site"]["name"] status = payload["status"] if status == "success": live_link = payload.get("live_link") save_live_link(database_id, site, live_link) elif status == "incomplete": flag_for_review(database_id, site, payload.get("error_message"))Responda com 200 em até 5 segundos e faça o processamento depois; não há novas tentativas. Para ver a estrutura básica do receptor e a verificação de assinatura, consulte Reaja a eventos com webhooks.
Próximas etapas
- Encontre e corrija erros de listagem: transforme as linhas
REQUIRING_ACTIONeFAILEDem correções. - Conecte o Google e importe locais: conecte o Google Business Profile usado pelo Google Maps e pelo Google Assistant.
- Conecte o Apple Business Connect: publique no Apple Maps por meio da conta verificada do proprietário no Apple Business.
- Encontre e suprima listagens duplicadas: a outra metade da integridade das listagens.
- Referência: Obtenha listagens premium, Obtenha listagens de assistentes de voz, Referência de eventos.