Listing Management

Jump to GetLocationGetLocation

Get one location by its ID. You can execute up to 10 requests per second. The API is available on the Local Pro plan and requires a Bearer Token. Learn more ›

Note that if the request is unsuccessful, the response format may vary. For more details, refer to the request/response examples.

Requests to this method don’t use up API units.

Jump to EndpointEndpoint

GEThttps://api.semrush.com/apis/v4/listing-management/v1/external/locations/:locationId

Request Parameters

location_idRequired

Path parameter. The ID of the location that needs to be updated.

Value/Type: string

Request example
curl -L 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations/3e8d046f62fe4b73802112e138a78532' -H 'Authorization: Bearer YOUR_TOKEN'
Response exampleJSON
{
  "data": {
    "id": "3e8d046f62fe4b73802112e138a78532",
    "locationName": "Some location name",
    "phone": "+12096438343",
    "region": "OH",
    "status": "COMPLETE",
    "websiteUrl": "https://www.test.com",
    "zip": "43103",
    "additionalAddressInfo": "3 floor",
    "address": "82 Cromley St",
    "city": "Ashville",
    "countryCode": "US",
    "businessHours": {
      "monday": [
        {
          "from": "00:00",
          "to": "00:00"
        }
      ],
      "tuesday": [
        {
          "from": "13:00",
          "to": "14:00"
        },
        {
          "from": "15:00",
          "to": "01:00"
        }
      ],
      "wednesday": [
        {
          "from": "06:00",
          "to": "00:00"
        }
      ],
      "thursday": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ],
      "friday": [
        {
          "from": "09:00",
          "to": "17:00"
        },
        {
          "from": "19:00",
          "to": "19:30"
        }
      ],
      "saturday": [
        {
          "from": "09:00",
          "to": "16:00"
        },
        {
          "from": "17:00",
          "to": "18:00"
        }
      ],
      "sunday": [
        {
          "from": "12:00",
          "to": "14:00"
        }
      ]
    },
    "holidayHours": [
      {
        "type": "RANGE",
        "day": "2024-11-26",
        "times": [
          {
            "from": "10:00",
            "to": "12:00"
          },
          {
            "from": "13:00",
            "to": "15:00"
          }
        ]
      },
      {
        "type": "RANGE",
        "day": "2024-11-24",
        "times": [
          {
            "from": "10:00",
            "to": "12:00"
          },
          {
            "from": "15:00",
            "to": "18:00"
          }
        ]
      }
    ],
    "reopenDate": "2025-01-01",
    "errors": [
      {
        "code": "G_020",
        "message": "Some location business information can't be processed by Google."
      }
    ]
  },
  "requested": "api-flb-718c4b47eed5c20965a85df5183fba9a"
}
Request example
curl -L 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations/3e8d046f62fe4b73802112e138a78532' -H 'Authorization: Bearer YOUR_TOKEN'
Response exampleJSON
{
  "error": {
    "code": "RESOURCE_NOT_FOUND",
    "message": "Resource not found.",
    "details": [
      {
        "code": "LOCATION_NOT_FOUND",
        "message": "Location is not found."
      }
    ]
  },
  "requestId": "api-flb-fb27c729b51e658d4a4984716df00a77"
}
Request example
curl -L 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations/3e8d046f62fe4b73802112e138a78532' -H 'Authorization: Bearer YOUR_TOKEN'
Response exampleJSON
{
  "code": 401,
  "message": "Unauthorized"
}

Jump to GetLocationsGetLocations

Get a user’s locations page. You can execute up to 10 requests per second. The API is available on the Local Pro plan and requires a Bearer Token. Learn more ›

Requests to this method don’t use up API units.

Jump to EndpointEndpoint

GEThttps://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations

Request Parameters

page

One-based page index. The default value is 1.

Value/Type: int32

size

Size of the page to be returned. The default value is 20.

Value/Type: int32

Request example
curl -L 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations?size=4&page=1' -H 'Authorization: Bearer YOUR_TOKEN'
Response exampleJSON
{
  "data": {
    "page": 1,
    "totalElements": 1,
    "totalPages": 1,
    "content": [
      {
        "id": "3e8d046f62fe4b73802112e138a78532",
        "locationName": "Some location name",
        "phone": "+12096438343",
        "region": "OH",
        "websiteUrl": "https://www.test.com",
        "zip": "43103",
        "additionalAddressInfo": "3 floor",
        "address": "82 Cromley St",
        "city": "Ashville",
        "countryCode": "US",
        "businessHours": {
          "monday": [
            {
              "from": "00:00",
              "to": "00:00"
            }
          ],
          "tuesday": [
            {
              "from": "13:00",
              "to": "14:00"
            },
            {
              "from": "15:00",
              "to": "01:00"
            }
          ],
          "wednesday": [
            {
              "from": "06:00",
              "to": "00:00"
            }
          ],
          "thursday": [
            {
              "from": "09:00",
              "to": "17:00"
            }
          ],
          "friday": [
            {
              "from": "09:00",
              "to": "17:00"
            },
            {
              "from": "19:00",
              "to": "19:30"
            }
          ],
          "saturday": [
            {
              "from": "09:00",
              "to": "16:00"
            },
            {
              "from": "17:00",
              "to": "18:00"
            }
          ],
          "sunday": [
            {
              "from": "12:00",
              "to": "14:00"
            }
          ]
        },
        "holidayHours": [
          {
            "type": "RANGE",
            "day": "2024-11-26",
            "times": [
              {
                "from": "10:00",
                "to": "12:00"
              },
              {
                "from": "13:00",
                "to": "15:00"
              }
            ]
          },
          {
            "type": "RANGE",
            "day": "2024-11-24",
            "times": [
              {
                "from": "10:00",
                "to": "12:00"
              },
              {
                "from": "15:00",
                "to": "18:00"
              }
            ]
          }
        ],
        "reopenDate": "2025-01-01",
        "errors": [
          {
            "code": "G_020",
            "message": "Some location business information can't be processed by Google."
          }
        ]
      }
    ]
  },
  "requestId": "api-flb-98bb001dd14b8b71b5446db367918809"
}
Request example
curl -L 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations?size=4&page=1' -H 'Authorization: Bearer YOUR_TOKEN'
Response exampleJSON
{
  "code": 401,
  "message": "Unauthorized"
}

Jump to UpdateLocationUpdateLocation

Update one location by its ID. You can execute up to 5 requests per second. The API is available on the Local Pro plan and requires a Bearer Token. Learn more ›

Note that if the request is unsuccessful, the response format may vary. For more details, refer to the request and response examples.

Requests to this method don’t use up API units.

Jump to EndpointEndpoint

PUThttps://api.semrush.com/apis/v4/listing-management/v1/external/locations/:locationId

Request Parameters

locationIdRequired

Path parameter. The ID of the location that needs to be updated.

Value/Type: string

locationNameRequired

Business name. Max. length is 125 symbols.

Value/Type: string

cityRequired

City where the business is located. Max. length is 64 symbols.

Value/Type: string

addressRequired

Business address line 1. Max. length is 190 symbols.

Value/Type: string

additionalAddressInfo

Business address line 2. Max. length is 64 symbols.

Value/Type: string

zip

Postal code of the address. Not all countries use or require postal codes, but where they are used, they may trigger additional validation with other parts of the address such as state/ZIP validation in the USA.

Value/Type: string

phoneRequired

Phone number that customers can use to get in touch with the business. The international code is required.

Value/Type: string

region

Highest administrative subdivision used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (“Barcelona” and not “Catalonia”). Many countries don’t use an administrative area in postal addresses. For example, in Switzerland, this field must be left empty.

Value/Type: string

websiteUrl

URL for this business. Must start with http:// or https://. Max. length is 255 symbols.

If possible, use a URL that represents this individual business location instead of a generic website/URL that represents all locations, or the brand.

Value/Type: string

businessHours

Operating hours for the business.

Each weekday can contain no more than two time ranges. Ranges must not overlap.

Value/Type: object

holidayHours

Special hours for the business. This typically includes holiday hours and other times outside of regular operating hours. These hours override regular business hours.

This field can only be set if business hours are specified.

Value/Type: array

reopenDate

Reopen date of the business. Must be in the "yyyy-mm-dd" format, after the current date, and before 2038-01-01.

Use this field if your business is temporarily closed or seasonal.

Value/Type: string

Request example
curl -L -X PUT 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations/17dd19a1408d48fbb125a117ff3fa79d' -H 'Content-Type: application/json' -H 'Authorization: Bearer YOUR_TOKEN' -d '{
      "locationName": "Some location name",
      "phone": "+12096438343",
      "region": "OH",
      "websiteUrl": "https://www.test.com",
      "zip": "43103",
      "additionalAddressInfo": "3 floor",
      "address": "82 Cromley St",
      "city": "Ashville",
      "businessHours": {
          "monday": [
              {
                  "from": "00:00",
                  "to": "00:00"
              }
          ],
          "tuesday": [
              {
                  "from": "13:00",
                  "to": "14:00"
              },
              {
                  "from": "15:00",
                  "to": "01:00"
              }
          ],
          "wednesday": [
              {
                  "from": "06:00",
                  "to": "00:00"
              }
          ],
          "thursday": [
              {
                  "from": "09:00",
                  "to": "17:00"
              }
          ],
          "friday": [
              {
                  "from": "09:00",
                  "to": "17:00"
              },
              {
                  "from": "19:00",
                  "to": "19:30"
              }
          ],
          "saturday": [
              {
                  "from": "09:00",
                  "to": "16:00"
              },
              {
                  "from": "17:00",
                  "to": "18:00"
              }
          ],
          "sunday": [
              {
                  "from": "12:00",
                  "to": "14:00"
              }
          ]
      },
      "holidayHours": [
          {
              "type": "CLOSED",
              "day": "2024-11-26"
          },
          {
              "type": "RANGE",
              "day": "2024-11-24",
              "times": [
                  {
                      "from": "10:00",
                      "to": "12:00"
                  },
                  {
                      "from": "13:00",
                      "to": "15:00"
                  }
              ]
          }
      ],
      "reopenDate": "2025-01-01"
}'
Response exampleJSON
{
  "data": {
    "id": "17dd19a1408d48fbb125a117ff3fa79d",
    "locationName": "Some location name",
    "phone": "+12096438343",
    "region": "OH",
    "status": "COMPLETE",
    "websiteUrl": "https://www.test.com",
    "zip": "43103",
    "additionalAddressInfo": "3 floor",
    "address": "82 Cromley St",
    "city": "Ashville",
    "countryCode": "US",
    "businessHours": {
      "monday": [
        {
          "from": "00:00",
          "to": "00:00"
        }
      ],
      "tuesday": [
        {
          "from": "13:00",
          "to": "14:00"
        },
        {
          "from": "15:00",
          "to": "01:00"
        }
      ],
      "wednesday": [
        {
          "from": "06:00",
          "to": "00:00"
        }
      ],
      "thursday": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ],
      "friday": [
        {
          "from": "09:00",
          "to": "17:00"
        },
        {
          "from": "19:00",
          "to": "19:30"
        }
      ],
      "saturday": [
        {
          "from": "09:00",
          "to": "16:00"
        },
        {
          "from": "17:00",
          "to": "18:00"
        }
      ],
      "sunday": [
        {
          "from": "12:00",
          "to": "14:00"
        }
      ]
    },
    "holidayHours": [
      {
        "type": "RANGE",
        "day": "day": "2024-11-24",
        "times": [
          {
            "from": "10:00",
            "to": "12:00"
          },
          {
            "from": "13:00",
            "to": "15:00"
          }
        ]
      },
      {
        "type": "CLOSED",
        "day": "2024-11-26"
      }
    ],
    "reopenDate": "2025-01-01",
    "errors": [
      {
        "code": "G_020",
        "message": "Some location business information can't be processed by Google."
      }
    ]
  },
  "requested": "api-flb-718c4b47eed5c20965a85df5183fba9a"
}
Request example
curl -L -X PUT 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations/17dd19a1408d48fbb125a117ff3fa79d' -H 'Content-Type: application/json' -H 'Authorization: Bearer YOUR_TOKEN' -d '{
      "locationName": "Some location name",
      "phone": "+12096438343",
      "region": "OH",
      "websiteUrl": "https://www.test.com",
      "zip": "43103",
      "additionalAddressInfo": "3 floor",
      "address": "82 Cromley St",
      "city": "Ashville",
      "businessHours": {
          "monday": [
              {
                  "from": "00:00",
                  "to": "00:00"
              }
          ],
          "tuesday": [
              {
                  "from": "13:00",
                  "to": "14:00"
              },
              {
                  "from": "15:00",
                  "to": "01:00"
              }
          ],
          "wednesday": [
              {
                  "from": "06:00",
                  "to": "00:00"
              }
          ],
          "thursday": [
              {
                  "from": "09:00",
                  "to": "17:00"
              }
          ],
          "friday": [
              {
                  "from": "09:00",
                  "to": "17:00"
              },
              {
                  "from": "19:00",
                  "to": "19:30"
              }
          ],
          "saturday": [
              {
                  "from": "09:00",
                  "to": "16:00"
              },
              {
                  "from": "17:00",
                  "to": "18:00"
              }
          ],
          "sunday": [
              {
                  "from": "12:00",
                  "to": "14:00"
              }
          ]
      },
  "holidayHours": [
      {
          "type": "CLOSED",
          "day": "2024-11-26",
          "times": [
              {
                  "from": "10:00",
                  "to": "12:00"
              },
              {
                  "from": "15:00",
                  "to": "18:00"
              }
          ]
      },
      {
          "type": "RANGE",
          "day": "2024-11-24",
          "times": [
              {
                  "from": "10:00",
                  "to": "12:00"
              },
              {
                  "from": "15:00",
                  "to": "18:00"
              },
              {
                  "from": "19:00",
                  "to": "21:00"
              },
              {
                  "from": "22:00",
                  "to": "00:00"
              }
          ]
      }
  ],        "reopenDate": "2025-01-01"
}'
Response exampleJSON
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid data provided.",
    "details": [
      {
        "code": "TIMES_NOT_ALLOWED",
        "message": "Operation hours shouldn't be set.",
        "field": "holidayHours.times",
        "index": "0"
      },
      {
        "code": "TIMES_TOO_MANY_RANGES",
        "message": "Only three time ranges can be set.",
        "field": "holidayHours.times",
        "index": "1"
      }
    ]
  },
  "requestId": "api-flb-fb27c729b51e658d4a4984716df00a77"
}
Request example
curl -L -X PUT 'https://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations/17dd19a1408d48fbb125a117ff3fa79d' -H 'Content-Type: application/json' -H 'Authorization: Bearer YOUR_TOKEN' -d '{
      "locationName": "Some location name",
      "phone": "+12096438343",
      "region": "OH",
      "websiteUrl": "https://www.test.com",
      "zip": "43103",
      "additionalAddressInfo": "3 floor",
      "address": "82 Cromley St",
      "city": "Ashville",
      "businessHours": {
          "monday": [
              {
                  "from": "00:00",
                  "to": "00:00"
              }
          ],
          "tuesday": [
              {
                  "from": "13:00",
                  "to": "14:00"
              },
              {
                  "from": "15:00",
                  "to": "01:00"
              }
          ],
          "wednesday": [
              {
                  "from": "06:00",
                  "to": "00:00"
              }
          ],
          "thursday": [
              {
                  "from": "09:00",
                  "to": "17:00"
              }
          ],
          "friday": [
              {
                  "from": "09:00",
                  "to": "17:00"
              },
              {
                  "from": "19:00",
                  "to": "19:30"
              }
          ],
          "saturday": [
              {
                  "from": "09:00",
                  "to": "16:00"
              },
              {
                  "from": "17:00",
                  "to": "18:00"
              }
          ],
          "sunday": [
              {
                  "from": "12:00",
                  "to": "14:00"
              }
          ]
      },
      "holidayHours": [
          {
              "type": "CLOSED",
              "day": "2024-11-26"
          },
          {
              "type": "RANGE",
              "day": "2024-11-24",
              "times": [
                  {
                      "from": "10:00",
                      "to": "12:00"
                  },
                  {
                      "from": "13:00",
                      "to": "15:00"
                  }
              ]
          }
      ],
      "reopenDate": "2025-01-01"
}'
Response exampleJSON
{
  "code": 401,
  "message": "Unauthorized"
}

Jump to UpdateLocationsUpdateLocations

Update up to 50 locations at a time. You can only execute one such request at a time, making up to 5 requests per minute. The API is available on the Local Pro plan and requires a Bearer Token. Learn more ›

Note that if the request is unsuccessful, the response format may vary. For more details, refer to the request/response examples.

Each location ID in the request must be unique.

If some of the specified locations fail to update, the corresponding part of the response will indicate this. Updates for other locations will not be canceled and may still complete successfully. However, you should pay close attention to the response body, as the HTTP status code will still be 200.

Requests to this method don’t use up API units.

Jump to EndpointEndpoint

PUThttps://api.semrush.com/apis/v4-raw/listing-management/v1/external/locations

Request Parameters

locations Required

The locations you need to update.

Value/Type: array

Request example
curl -L -X PUT "https://api.semrush.com/listing-management/v1/external/locations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
  "locations": [
      {
          "id": "6fb03fd6c3a943a489df2c7060218911",
          "locationName": "Some location name",
          "phone": "+12096438343",
          "region": "OH",
          "websiteUrl": "https://www.test.com",
          "zip": "43103",
          "additionalAddressInfo": "3 floor",
          "address": "82 Cromley St",
          "city": "Ashville",
          "businessHours": {
              "monday": [
                  {
                      "from": "00:00",
                      "to": "00:00"
                  }
              ],
              "tuesday": [
                  {
                      "from": "13:00",
                      "to": "14:00"
                  },
                  {
                      "from": "15:00",
                      "to": "01:00"
                  }
              ],
              "wednesday": [
                  {
                      "from": "06:00",
                      "to": "00:00"
                  }
              ],
              "thursday": [
                  {
                      "from": "09:00",
                      "to": "17:00"
                  }
              ],
              "friday": [
                  {
                      "from": "09:00",
                      "to": "17:00"
                  },
                  {
                      "from": "19:00",
                      "to": "19:30"
                  }
              ],
              "saturday": [
                  {
                      "from": "09:00",
                      "to": "16:00"
                  },
                  {
                      "from": "17:00",
                      "to": "18:00"
                  }
              ],
              "sunday": [
                  {
                      "from": "12:00",
                      "to": "14:00"
                  }
              ]
          },
          "holidayHours": [
              {
                  "type": "CLOSED",
                  "day": "2024-11-26"
              },
              {
                  "type": "RANGE",
                  "day": "2024-11-24",
                  "times": [
                      {
                          "from": "10:00",
                          "to": "12:00"
                      },
                      {
                          "from": "13:00",
                          "to": "15:00"
                      }
                  ]
              }
          ],
          "reopenDate": "2025-01-01"
      },
      {
          "id": "17dd19a1408d48fbb125a117ff3fa79d",
          "locationName": "Another location name",
          "phone": "+12096438345",
          "region": "OH",
          "websiteUrl": "https://www.test2.com",
          "zip": "43103",
          "additionalAddressInfo": "4 floor",
          "address": "86 Cromley St",
          "city": "Ashville"
      }
  ]
}'
Response exampleJSON
{
  "data": [
    {
      "locationId": "6fb03fd6c3a943a489df2c7060218911",
      "state": "FAILED",
      "error": {
        "code": "BAD_REQUEST",
        "message": "Invalid state of resource.",
        "details": [
          {
            "code": "LOCATION_HAS_NOT_COMPLETE_STATUS",
            "message": "Location is not in complete status."
          }
        ]
      }
    },
    {
      "locationId": "17dd19a1408d48fbb125a117ff3fa79d",
      "state": "UPDATED"
    }
  ],
  "requestId": "api-flb-35ad65c07818d19a7e2f5f150fc124cd"
}
Request example
curl -L -X PUT "https://api.semrush.com/listing-management/v1/external/locations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d  '{
  "locations": [
      {
          "id": "6fb03fd6c3a943a489df2c7060218911",
          "locationName": "Some location name",
          "phone": "+12096438343",
          "region": "OH",
          "websiteUrl": "https://www.test.com",
          "zip": "43103",
          "additionalAddressInfo": "3 floor",
          "address": "82 Cromley St",
          "city": "Ashville",
          "reopenDate": "2025-01-01"
      },
      {
          "id": "6fb03fd6c3a943a489df2c7060218911",
          "locationName": "Another location name",
          "phone": "+12096438345",
          "region": "OH",
          "websiteUrl": "https://www.test2.com",
          "zip": "43103",
          "additionalAddressInfo": "4 floor",
          "address": "86 Cromley St",
          "city": "Ashville"
      }
  ]
}'
Response exampleJSON
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid state of resource.",
    "details": [
      {
        "code": "LOCATIONS_ARE_NOT_UNIQUE",
        "message": "The locations are not unique. There are several locations with this ID: 6fb03fd6c3a943a489df2c7060218911."
      }
    ]
  },
  "requestId": "api-flb-ec33fa653e6734980500d561b6aa3d32"
}
Request example
curl -L -X PUT "https://api.semrush.com/listing-management/v1/external/locations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d  '{
  "locations": [
      {
          "id": "6fb03fd6c3a943a489df2c7060218911",
          "locationName": "Some location name",
          "phone": "+12096438343",
          "region": "OH",
          "websiteUrl": "https://www.test.com",
          "zip": "43103",
          "additionalAddressInfo": "3 floor",
          "address": "82 Cromley St",
          "city": "Ashville",
          "reopenDate": "2025-01-01"
      }
  ]
}'
Response exampleJSON
{
  "code": 401,
  "message": "Unauthorized"
}
Request example
curl -L -X PUT "https://api.semrush.com/listing-management/v1/external/locations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d  '{
  "locations": [
      {
          "id": "6fb03fd6c3a943a489df2c7060218911",
          "locationName": "Some location name",
          "phone": "+12096438343",
          "region": "OH",
          "websiteUrl": "https://www.test.com",
          "zip": "43103",
          "additionalAddressInfo": "3 floor",
          "address": "82 Cromley St",
          "city": "Ashville",
          "reopenDate": "2025-01-01"
      }
  ]
}'
Response exampleJSON
{
  "code": 429,
  "message": "rate limit exceeded"
}

Last updated: January 26, 2026

Was this page helpful?