Temukan dan nonaktifkan profil bisnis duplikat
Lihat profil bisnis duplikat per lokasi dan seluruh akun, konfirmasi yang valid untuk dinonaktifkan, hapus deteksi keliru, dan pantau hingga selesai.
Duplikat adalah entri kedua untuk bisnis yang sama di direktori yang sama. Duplikat memecah ulasan dan sinyal peringkat serta membingungkan pelanggan. Deteksi berjalan secara otomatis. Anda meninjau hasil deteksi, mengonfirmasi duplikat yang sebenarnya, dan mengeluarkan entri yang sah dari daftar duplikat.
Setiap duplikat memiliki status yang menunjukkan tahap penanganannya:
1. Tampilkan daftar duplikat untuk satu lokasi
GET /locations/{locationId}/listings/duplicates mengembalikan array biasa yang berisi kelompok situs. Setiap kelompok merupakan sebuah direktori dengan array listings berisi entri yang diduga duplikat, dan setiap entri memiliki listingItemId, liveLink yang dapat Anda buka untuk menilainya, serta status.
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/duplicates \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "duplicateListingsForLocation": [ { "id": "U2l0ZToxNTA=", "name": "City Squares", "url": "citysquares.com", "listings": [ { "id": "RHVwbGljYXRlOjIzNTk4NDUw", "listingItemId": "TGlzdGluZ0l0ZW06MjM1OTg0NTA=", "name": "Woodbury Train Station", "liveLink": "http://citysquares.com/b/woodbury-train-station-23598450", "status": "POTENTIAL" } ] } ] }}Array kosong berarti tidak ada yang terdeteksi. Simpan listingItemId: nilai inilah yang diterima oleh kedua endpoint penandaan. Node SDK meratakan kelompok-kelompok tersebut menjadi satu array per duplikat, sehingga d.id di sana adalah nilai yang perlu diteruskan.
2. Rekap duplikat di seluruh akun
GET /locations/listings/duplicates menyediakan tampilan untuk seluruh akun. Hasilnya berupa halaman berbasis offset: page dan perPage sebagai masukan, serta records[] ditambah pageInfo.totalRecords dan pageInfo.totalPages sebagai keluaran. Nilai default status adalah POTENTIAL dan nilai default tag adalah all, sehingga pemanggilan tanpa parameter mengembalikan semua duplikat yang belum selesai ditangani dan dapat diakses oleh kunci tersebut. Tambahkan siteId (id plan-sites) untuk membatasi hasil ke satu direktori.
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=POTENTIAL&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "duplicateListingsRollup": { "pageInfo": { "hasNextPage": true, "totalPages": 34, "totalRecords": 1673 }, "records": [ { "id": "3329229", "name": "Woodbury Train Station", "duplicateProcessingState": "POTENTIAL", "liveLink": "http://citysquares.com/b/woodbury-train-station-23598450", "locationId": "73451", "siteName": "City Squares", "siteUrl": "citysquares.com" } ] } }}Rekap tersebut menunjukkan tempat duplikat berada; duplicateProcessingState adalah status siklus hidup yang sama seperti di atas. Untuk menindaklanjuti salah satunya, gunakan locationId miliknya pada endpoint per lokasi di langkah 1 dan baca listingItemId di sana. Telusuri halaman satu per satu; perulangan tanpa jeda adalah cara tercepat untuk memicu 429.
3. Konfirmasikan duplikat agar dinonaktifkan
Setelah peninjau menyetujui bahwa suatu entri adalah duplikat, panggil POST /locations/listings/mark-as-duplicate dengan nilai-nilai listingItemId di bawah input. Gabungkan semua id yang telah dikonfirmasi untuk satu lokasi ke dalam satu pemanggilan. locationId bersifat opsional dan membatasi cakupan permintaan ke lokasi tersebut.
curl -X POST https://listingsapi.com/api/v4/locations/listings/mark-as-duplicate \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "locationId": "TG9jYXRpb246MTgwMDI4OQ==", "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="] }}'{ "data": { "markAsDuplicate": { "success": true, "errors": null } }}success: true berarti item telah diterima dan dipindahkan ke PROCESSING. Respons 200 dengan success: false, atau respons 400, disertai array errors yang setiap entrinya memuat code dan message; penyebab umumnya adalah id yang tidak dikenal atau formatnya salah. SDK akan memunculkan ValidationError dalam kasus tersebut.
4. Hapus hasil deteksi yang keliru
Deteksi dilakukan secara konservatif. Cabang lain dari waralaba yang sama, profil kedua yang sah, atau lokasi yang berganti nama dapat terlihat seperti duplikat. POST /locations/listings/mark-as-not-duplicate menerima body yang sama persis dan menghapus entri dari kedua daftar secara permanen. Ini juga merupakan cara untuk membatalkan tindakan yang keliru pada langkah 3.
curl -X POST https://listingsapi.com/api/v4/locations/listings/mark-as-not-duplicate \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "input": { "locationId": "TG9jYXRpb246MTgwMDI4OQ==", "listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="] }}'Responsnya adalah data.markAsNotDuplicate dengan field success dan errors yang sama seperti pada langkah 3.
5. Pantau progres
Baca kembali rekap dengan status=PROCESSING untuk melihat duplikat yang masih ditangani oleh platform publikasi, dan dengan status=FIXED untuk mengonfirmasi duplikat yang sudah tidak ada. Kedua SDK belum menyediakan filter status, jadi panggil endpoint secara langsung dengan header Authorization yang sama.
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=PROCESSING&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY" curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=FIXED&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"Meminta perPage=1 dan membaca pageInfo.totalRecords memberikan jumlah untuk setiap status dalam 4 pemanggilan. Record FAILED yang liveLink-nya masih dapat diakses memerlukan peninjauan manual; record FAILED yang tautannya sudah tidak aktif telah diperbaiki oleh platform publikasi atas inisiatifnya sendiri dan dapat dikeluarkan dari daftar dengan langkah 4.
Langkah berikutnya
- Periksa status profil bisnis dan tautan aktif: profil bisnis utama untuk setiap direktori, yang menjadi pesaing profil bisnis duplikat.
- Temukan dan perbaiki kesalahan profil bisnis: tahap pembersihan lainnya.
- Referensi: Dapatkan profil bisnis duplikat untuk suatu lokasi, Dapatkan semua profil bisnis duplikat untuk suatu akun, Tandai profil bisnis sebagai duplikat, Tandai profil bisnis sebagai bukan duplikat.