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:

StatusArtiTindakan Anda
POTENTIALTerdeteksi, belum ada yang menindaklanjutinya.Tinjau duplikat tersebut (langkah 3 dan 4).
PROCESSINGAnda telah mengonfirmasinya; proses penonaktifan sedang berlangsung di platform publikasi.Tunggu. Baca kembali nanti (langkah 5).
FIXEDPlatform publikasi telah menghapus atau menggabungkannya.Selesai.
FAILEDPenonaktifan tidak berhasil.Periksa tautan ke profil bisnis yang aktif; laporkan kepada tim dukungan jika profil bisnis tersebut masih aktif.

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.

Duplicates for a location
curl https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/listings/duplicates \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "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.

Account rollup
curl "https://listingsapi.com/api/v4/locations/listings/duplicates?status=POTENTIAL&page=1&perPage=50" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "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.

Mark as duplicate
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="]  }}'
JSON
{  "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.

Mark as not duplicate
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.

Progress
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