Controlla lo stato delle schede e ottieni i link attivi
Sincronizzazione e URL attivi delle schede per sede e piattaforma di pubblicazione, copertura e assistenti vocali. Ricevi webhook anziché polling.
Una volta creata una sede, viene inviata automaticamente una scheda per ogni piattaforma di pubblicazione inclusa nel tuo piano. Questa guida mostra come leggere lo stato di ciascuna scheda, recuperare gli URL delle schede pubblicate e interrompere il polling una volta configurati i webhook.
1. Recupera le schede premium di una sede
GET /locations/{locationId}/listings/premium restituisce un record per ogni piattaforma di pubblicazione premium inclusa nel piano. È un semplice array, non un elenco paginato. La route analoga /listings/additional restituisce le directory gratuite con la stessa struttura; non esiste un parametro di query 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" } ] }}Ogni riga associa un valore site a un valore syncStatus leggibile dalle macchine e a un valore displayStatus leggibile dalle persone. lastUpdate indica quando la riga è stata modificata l'ultima volta, il che è utile per individuare un invio che non avanza più.
2. Leggi lo stato di ogni piattaforma di pubblicazione
syncStatus è il campo su cui basare le condizioni del codice. displayStatus è il testo da mostrare a una persona e syncIssue contiene la motivazione della piattaforma di pubblicazione, quando presente.
Google Maps e Facebook rimangono nello stato REQUIRING_ACTION finché non viene collegato l'account della rispettiva piattaforma di pubblicazione: un Google Business Profile per Google Maps e una Pagina Facebook per Facebook. È una situazione prevista per una nuova sede, non un errore.
Apple Maps non richiede un collegamento. Se il proprietario non ha collegato un account aziendale verificato di Apple Business, ListingsAPI invia la sede tramite il proprio account Apple Business Connect e Apple verifica l'invio prima di pubblicare la scheda. Consulta Collega Apple Business Connect.
3. Raccogli i link alle schede pubblicate
listingUrl è valorizzato solo nelle righe delle schede pubblicate. Filtra per SYNCED (e COMPLETED) e conserva l'URL insieme al nome del sito, così puoi visualizzare un elenco con link «vedi la scheda pubblicata» o salvarlo nel tuo record.
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}]'Può capitare che una riga SYNCED abbia listingUrl impostato su null: alcune directory non espongono l'URL di una pagina pubblica. Considera lo stato come fonte autorevole e il link come facoltativo.
4. Crea un riepilogo della copertura
Contare le righe per syncStatus fornisce un indicatore sintetico dello stato di ogni sede: quante piattaforme di pubblicazione hanno una scheda pubblicata, quante sono ancora in fase di elaborazione e quante sono bloccate. Questo è il numero da mostrare in una dashboard.
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})'Esegui questa operazione su più sedi scorrendo le pagine di GET /locations e chiamando l'endpoint premium una volta per sede. Ogni chiamata viene conteggiata ai fini del tuo limite di frequenza, quindi lascia un intervallo tra una chiamata e l'altra e rispetta Retry-After quando ricevi 429. Individua e correggi gli errori delle schede mostra il ciclo come una scansione dell'intero account.
5. Controlla gli assistenti vocali
Gli assistenti vocali (Google Assistant, Alexa, Siri, Cortana, Bixby) hanno un proprio endpoint, GET /locations/{locationId}/voice-assistants, con un insieme di stati più ridotto. Google Assistant dipende dalla connessione a Google, quindi una sede che ne è priva richiede attenzione anche qui. I risultati di Siri provengono dalla scheda della sede su 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": [] } ] }}Non esiste un link pubblico per un assistente vocale; LIVE è lo stato finale.
6. Ricevi eventi webhook invece di effettuare il polling
Se hai configurato un URL webhook in /dashboard/webhooks, l'evento listing.submission viene generato ogni volta che un invio a una piattaforma di pubblicazione per una singola sede raggiunge uno stato terminale. Contiene status (success, incomplete o canceled), il sito e, in caso di successo, live_link, che è lo stesso URL che hai raccolto al passaggio 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"))Rispondi con 200 entro 5 secondi ed esegui il lavoro in seguito; non sono previsti nuovi tentativi. Per la struttura di base del ricevitore e la verifica della firma, consulta Reagisci agli eventi con i webhook.
Passaggi successivi
- Trova e correggi gli errori delle schede: trasforma le righe
REQUIRING_ACTIONeFAILEDin interventi correttivi. - Collega Google e importa le sedi: collega il profilo Google Business Profile utilizzato da Google Maps e Google Assistant.
- Collega Apple Business Connect: pubblica su Apple Maps tramite l'account Apple Business verificato del proprietario.
- Trova e sopprimi le schede duplicate: l'altra metà della gestione dello stato delle schede.
- Riferimenti: Ottieni le schede premium, Ottieni le schede degli assistenti vocali, Riferimento degli eventi.