Buat Google Business Profile untuk lokasi tanpa profil

Ajukan Google Business Profile baru untuk lokasi dengan akun Google terhubung, lalu pantau verifikasi melalui lokasi, profil bisnis, dan webhook.

Pencocokan dan penautan hanya berfungsi jika profil bisnis Google sudah ada. Toko baru belum memilikinya, jadi Anda meminta API untuk membuatnya di bawah akun Google yang terhubung. Pembuatan berlangsung secara asinkron dan Google memverifikasi profil sesuai jadwalnya sendiri, sehingga sebagian besar panduan ini membahas cara memantau hasilnya.

1. Pastikan lokasi belum memiliki profil bisnis Google

Baca profil bisnis premium lokasi tersebut dan temukan baris yang memiliki site.name bernilai Google Maps. Lokasi yang belum memiliki profil bisnis di Google menampilkan REQUIRING_ACTION dengan connectedAccountId bernilai null.

Google row
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/premium \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "site": { "name": "Google Maps", "url": "maps.google.com" },  "syncStatus": "REQUIRING_ACTION",  "displayStatus": "Connect your account to sync the listing",  "listingUrl": null,  "connectedAccountId": null,  "verified": false}

Jika baris tersebut sudah berstatus SYNCED, atau connectedAccountId sudah ditetapkan, lokasi tersebut memiliki profil bisnis Google dan panduan ini tidak berlaku. Tautkan atau perbarui profil bisnis tersebut.

2. Pilih folder (opsional)

Google mengatur profil bisnis di bawah suatu akun ke dalam folder, yang juga disebut grup akun. Ambil daftar folder akun yang terhubung dan sertakan salah satunya sebagai folderId jika pemilik menginginkan profil baru berada di dalam grup tertentu. Lewati langkah ini untuk membuatnya di tingkat akar akun.

Folders
curl https://listingsapi.com/api/v4/connected-accounts/4f712c17-4f95-42dd-90f4-97171a2e67b5/folders \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "getFoldersUnderGoogleAccount": [      { "folderId": "accounts/104890024806530350198", "folderName": "Bright Smile Dental", "locationCount": null }    ]  }}

Gunakan folderId tanpa perubahan; nilainya adalah string accounts/{id}, bukan angka. locationCount dapat bernilai null jika Google tidak melaporkannya. Endpoint ini hanya berlaku untuk koneksi GoogleAccount.

3. Buat profil bisnis

Kirim id lokasi dalam format base64 dan akun, beserta folder jika Anda memilihnya. Respons hanya menyatakan bahwa permintaan telah diterima.

Create listing
curl -X POST https://listingsapi.com/api/v4/locations/create/gmb-listing \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{  "input": {    "locationId": "TG9jYXRpb246MTgwMDI4OQ==",    "connectedAccountId": "4f712c17-4f95-42dd-90f4-97171a2e67b5",    "folderId": "accounts/104890024806530350198"  }}'
JSON
{  "data": {    "createGmbListingForLocation": { "clientMutationId": null, "success": true, "errors": null }  }}

success: true berarti proses pembuatan telah dimulai, bukan berarti profil sudah tayang. Google meninjau setiap profil baru sebelum menerbitkannya, dan proses ini dapat memakan waktu berhari-hari. Jika success bernilai false, errors menjelaskan alasannya: lokasi belum memiliki semua field wajib, sudah memiliki profil bisnis Google, telah diarsipkan, atau akun yang terhubung sudah tidak aktif.

4. Pantau status verifikasi lokasi

Setiap pembacaan lokasi mengembalikan googleVerificationStatus yang memuat status dan message. Baca kembali lokasi tersebut untuk melihat tahap proses yang sedang dijalankan Google.

Verification status
curl -G https://listingsapi.com/api/v4/locations-by-ids \--data-urlencode 'ids=["TG9jYXRpb246MTgwMDI4OQ=="]' \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "id": "TG9jYXRpb246MTgwMDI4OQ==",  "databaseId": 1800289,  "googleVerificationStatus": { "status": "PENDING_VERIFICATION", "message": null }}
statusArtiStatus akhir
NOT_CONNECTEDBelum ada profil bisnis Google yang ditautkan. Kondisi ini normal sebelum langkah 3 membuahkan hasil.Tidak
NOT_VERIFIEDProfil bisnis sudah ada, verifikasi belum dimulai.Tidak
PENDING_VERIFICATIONGoogle sedang memverifikasi profil.Tidak
UNDER_REVIEWGoogle sedang meninjau profil.Tidak
VERIFIEDProfil sudah tayang.Ya
SUSPENDEDGoogle menangguhkan profil.Ya
DUPLICATEGoogle menilai profil ini sebagai duplikat dari profil yang sudah ada.Ya
ERROR_WHILE_FETCHINGStatus tidak dapat dibaca dari Google. Coba lagi nanti.Ya

Pembacaan sekali sehari sudah cukup untuk proses yang memakan waktu berhari-hari. Patuhi Retry-After pada 429 jika Anda memeriksa banyak lokasi sekaligus.

5. Pantau baris Google dalam daftar profil bisnis

Baris profil bisnis premium dari langkah 1 melacak perkembangan yang sama dari sisi profil bisnis. Jalankan kembali panggilan pada langkah 1 dan baca syncStatus, verified, dan listingUrl.

syncStatusArti
REQUIRING_ACTIONBelum ada yang dibuat, atau akun memerlukan perhatian. Lihat displayStatus.
IN_PROGRESSTelah diajukan ke Google, menunggu respons.
PENDING_APPROVALMenunggu persetujuan Google.
SYNCEDSudah tayang. listingUrl sudah terisi dan connectedAccountId mengidentifikasi akun.
FAILEDGoogle menolak pengajuan tersebut. syncIssue menjelaskan alasannya.

6. Pantau webhook verifikasi

Jika URL webhook diatur di dasbor, dua peristiwa mencakup status akhir, sehingga Anda tidak perlu melakukan polling. Keduanya membawa location_id dan selalu memiliki data.connected_account_id: null.

PeristiwaDipicu ketikaField data
connection.google_verification_verifiedProfil mencapai VERIFIED.platform: "google"
connection.google_verification_failedProfil mencapai SUSPENDED atau DUPLICATE (failure_type: "rejected") atau ERROR_WHILE_FETCHING (failure_type: "transient").platform, failure_type, reason
JSON
{  "event": "connection.google_verification_failed",  "timestamp": "2026-08-25T14:52:31Z",  "account_id": 11073,  "location_id": "279381",  "data": { "platform": "google", "connected_account_id": null, "failure_type": "rejected", "reason": "This profile is suspended." }}

Hanya kegagalan transient yang layak dicoba ulang. Status yang masih dalam proses tidak memicu peristiwa apa pun, sehingga tidak adanya peristiwa bukanlah sinyal: selama verifikasi berlangsung, baca googleVerificationStatus seperti pada langkah 4.

Langkah berikutnya