GET/api/v4/locations/{locationId}/listings/duplicates

Get duplicate listings for a location

Returns duplicate listing entries detected for a single location, grouped by publisher site.

Requires an API key. See Authentication for header format and key rotation.

Parameters

Path

NameTypeRequiredDescription
locationIdstringrequiredLocation 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"