/api/v4/locations/{locationId}/listings/duplicatesGet duplicate listings for a location
Returns duplicate listing entries detected for a single location, grouped by publisher site.
Parameters
Path
| Name | Type | Required | Description |
|---|---|---|---|
| locationId | string | required | Location to read. Accepts a base64-encoded Relay ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`) or a raw numeric location ID. |
Responses
200Duplicate listings grouped by site. Each group carries the primary listing plus an array of detected duplicates.
{
"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"
}
]
}
]
}
}401Unauthenticated — missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.
Returns every detected duplicate listing for one location, grouped by publisher site. Each group is a site (name, url) with a listings array of potential duplicates; each duplicate carries a listingItemId and a status. The live location Jenny Home currently has no duplicates and returns {"data":{"duplicateListingsForLocation":[]}}, so the populated group above is representative of the shape a location with duplicates returns.
Use case: clean up duplicates that hurt local SEO
Duplicate directory entries split ranking signals and confuse customers. Fetch this list for a location, review each group, and act on the ones that are genuinely duplicates. The listingItemId on each entry is exactly what Mark listing as duplicate expects in its listingItemIds array:
{
"locationId": "TG9jYXRpb246MTgwMDI4OQ==",
"listingItemIds": ["TGlzdGluZ0l0ZW06MjM1OTg0NTA="]
}
For entries that are actually the correct listing, dismiss them with Mark listing as not a duplicate so they stop showing up here.
Use case: per-location detail after an account sweep
Use this endpoint to drill into a single location after Get all duplicate listings for an account surfaces which locations have open duplicates — the account rollup tells you where, this endpoint tells you what, grouped by site.
status reflects handling state: POTENTIAL (detected, not yet acted on), PROCESSING, FIXED, or FAILED. This is a per-location list subject to the account rate limit — on 429, retry after the Retry-After header.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/listings/duplicates' \
-H "Authorization: API $LISTINGSAPI_KEY"