Periksa status profil bisnis dan dapatkan tautan aktif
Cek sinkronisasi platform publikasi per lokasi dan asisten suara, ambil URL profil bisnis aktif, rangkum cakupan; terima webhook tanpa polling.
Setelah lokasi tersedia, satu profil bisnis untuk setiap platform publikasi dalam paket Anda akan diajukan secara otomatis. Panduan ini menunjukkan cara membaca status terkini masing-masing profil bisnis, mengambil URL profil bisnis yang sudah tayang, dan menghentikan polling setelah webhook disiapkan.
1. Ambil profil bisnis premium untuk suatu lokasi
GET /locations/{locationId}/listings/premium mengembalikan satu record untuk setiap platform publikasi premium dalam paket. Hasilnya berupa array biasa, bukan daftar dengan paginasi. Rute pasangannya, /listings/additional, mengembalikan direktori gratis dengan struktur yang sama; tidak ada parameter kueri 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" } ] }}Setiap baris memasangkan site dengan syncStatus yang dapat dibaca mesin dan displayStatus yang dapat dibaca manusia. lastUpdate memberi tahu Anda kapan baris tersebut terakhir berubah, yang berguna untuk mendeteksi pengajuan yang terhenti.
2. Baca status setiap platform publikasi
syncStatus adalah field yang digunakan untuk menentukan percabangan logika. displayStatus adalah teks yang ditampilkan kepada pengguna, dan syncIssue memuat alasan dari platform publikasi jika tersedia.
Google Maps dan Facebook tetap berstatus REQUIRING_ACTION hingga akun pada platform publikasi tersebut terhubung: Google Business Profile untuk Google Maps dan Facebook Page untuk Facebook. Ini merupakan kondisi yang wajar untuk lokasi baru, bukan kesalahan.
Apple Maps tidak memerlukan koneksi. Jika pemilik belum menghubungkan akun organisasi Apple Business yang terverifikasi, ListingsAPI mengajukan lokasi melalui akun Apple Business Connect miliknya sendiri, dan Apple memverifikasi pengajuan tersebut sebelum memublikasikannya. Lihat Hubungkan Apple Business Connect.
3. Kumpulkan tautan profil bisnis yang sudah tayang
listingUrl hanya diisi pada baris profil bisnis yang sudah tayang. Filter baris berstatus SYNCED (dan COMPLETED), lalu simpan URL beserta nama situsnya agar Anda dapat menampilkan daftar "lihat profil bisnis yang sudah tayang" atau menyimpannya pada record Anda sendiri.
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}]'Baris SYNCED dengan listingUrl bernilai null memang dapat ditemukan: beberapa direktori tidak menyediakan URL halaman publik. Jadikan status sebagai acuan utama dan anggap tautan sebagai opsional.
4. Buat ringkasan cakupan
Menghitung baris berdasarkan syncStatus menghasilkan ringkasan kondisi dalam satu baris untuk setiap lokasi: berapa banyak platform publikasi yang profil bisnisnya sudah tayang, berapa banyak yang masih dalam proses, dan berapa banyak yang terhambat. Angka inilah yang perlu ditampilkan di dasbor.
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})'Jalankan proses ini untuk banyak lokasi dengan menelusuri halaman hasil GET /locations dan memanggil endpoint premium satu kali untuk setiap lokasi. Setiap panggilan diperhitungkan dalam batas laju permintaan Anda, jadi beri jeda antarpanggilan dan patuhi Retry-After saat menerima 429. Temukan dan perbaiki kesalahan profil bisnis menunjukkan perulangan ini sebagai pemeriksaan menyeluruh dalam satu akun.
5. Periksa asisten suara
Asisten suara (Google Assistant, Alexa, Siri, Cortana, Bixby) memiliki endpoint sendiri, GET /locations/{locationId}/voice-assistants, dengan pilihan status yang lebih sedikit. Google Assistant bergantung pada koneksi Google, sehingga lokasi yang belum memiliki koneksi tersebut juga perlu diperhatikan di sini. Hasil Siri berasal dari profil bisnis lokasi tersebut di 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": [] } ] }}Tidak ada tautan aktif untuk asisten suara; LIVE adalah status akhir.
6. Terima peristiwa webhook alih-alih melakukan polling
Jika Anda telah mengonfigurasi URL webhook di /dashboard/webhooks, peristiwa listing.submission dipicu setiap kali pengiriman ke platform publikasi untuk satu lokasi mencapai status akhir. Peristiwa ini memuat status (success, incomplete, atau canceled), situs, serta live_link jika berhasil, yaitu URL yang sama dengan yang Anda kumpulkan pada langkah 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"))Berikan respons berupa 200 dalam waktu 5 detik dan lakukan pemrosesan setelahnya; tidak ada percobaan ulang. Untuk kerangka kode penerima dan pemeriksaan tanda tangan, lihat Tanggapi peristiwa dengan webhook.
Langkah berikutnya
- Temukan dan perbaiki kesalahan profil bisnis: tindak lanjuti baris
REQUIRING_ACTIONdanFAILEDdengan perbaikan. - Hubungkan Google dan impor lokasi: hubungkan Google Business Profile yang digunakan oleh Google Maps dan Google Assistant.
- Hubungkan Apple Business Connect: publikasikan profil bisnis di Apple Maps melalui akun Apple Business milik pemilik yang telah diverifikasi.
- Temukan dan sembunyikan profil bisnis duplikat: bagian lain dari upaya menjaga kondisi profil bisnis.
- Referensi: Dapatkan profil bisnis premium, Dapatkan profil bisnis asisten suara, Referensi peristiwa.