Overview

Jump to AboutAbout

Jump to Listing Management API overviewListing Management API overview

Listing Management API allows you to push data from your tools into Semrush Listing Management in bulk and distribute it across directories in seconds.

Jump to Map Rank Tracker API overviewMap Rank Tracker API overview

Map Rank Tracker API lets you access critical data related to your campaigns, keywords, and competitors. The methods provide detailed information about campaign rankings, heatmaps, competitors, and keyword performance. By easily integrating real-time data into your existing systems, you can stay ahead in your SEO strategies.

Learn more about Map Rank Tracker ›

Jump to Get accessGet access

Local APIs are available under specific conditions:

Jump to AuthorizationAuthorization

The Local API uses OAuth 2.0 authorization. Pass your access token in every HTTP request header:

Authorization: Bearer <TOKEN>

Jump to API response formatAPI response format

The response body contains a JSON-encoded object, which has a top-level object called meta, followed by either a data object or an error object, but not both.

Key
Type
Description
Required/Optional
success
boolean
Request status
Required
status_code
integer
HTTP status code
Required
request_id
string
Unique ID of the request
Optional
Success response example
JSON
{"meta":{"success":true,"status_code":200,"request_id":"IAD-as5656as776",},"data":[{"id":"590e","kind":"dog","name":"Penny"},{"id":"a45f","kind":"cat","name":"Tommy"}]}
Key
Type
Description
Required/Optional
code
integer
Error code
Required
message
string
Error message
Required
details
array
Error details
Optional
Error response example
JSON
{
  "meta": {
    "success": false,
    "status_code": 400,
    "request_id": "IAD-123ade456"
  },
  "error": {
    "code": 120200,
    "message": "This was bad",
    "details": [
      {
        "message": {
          "field_violations": [
            {
              "field": "user_id",
              "description": "user_id must be a number"
            }
          ]
        }
      }
    ]
  }
}

Jump to Status codesStatus codes

The Local API returns a corresponding HTTP status code with every request response, whether it succeeds or fails.

Code
Description
Recommended action
2XX OK
The request was processed successfully.
No action required.
400 Bad Request
The request couldn’t be processed because it was incorrect or incomplete.
Check the request body for typos and missing parameters. For details, refer to the optional ‘error.details’ field if it’s present in the response.
401 Unauthorized
The request couldn’t be processed because the provided authentication credentials were incorrect or missing.
Ensure the access token you use for accessing the API is still valid.
403 Forbidden
The request couldn’t be processed due to a restriction or permission issue.
Contact the Semrush Support Team.
404 Not Found
The request couldn’t be processed because the target resource was incorrect or had been moved.
Ensure the target resource exists and is specified correctly in the request.
409 Conflict
The request couldn’t be processed due to a conflict with the current state of the resource.
Retry the request later or check the resource state–for example, when creating a project, confirm it doesn’t already exist.
429 Too Many Requests
The request couldn’t be processed because there were too many requests from the user with the given access token.
Retry the request later.
499 Client Closed Request
The request couldn’t be processed because the user disconnected before receiving a response.
Check your network connection and retry the request later.
550 Internal Server Error
The request couldn’t be processed due to a server-side error.
Retry the request later.
551 Not Implemented
The request couldn’t be processed because the specified request method isn’t supported.
To check all available methods, refer to the API reference.
553 Service Unavailable
The request couldn’t be processed due to server maintenance or overload.
Retry the request later.
554 Gateway Timeout
The request couldn’t be processed due to a timeout at the acting gateway or proxy server.
Retry the request later.

Jump to Error responsesError responses

Jump to Listing Management APIListing Management API

The Listing Management API returns the standard status codes in its responses.

Except for the UpdateLocations method. If there’s an error while updating one or several locations, the HTTP status code is still 200, but the errors themselves will be described in the response. This is done so that the locations that didn’t return errors get updated successfully. If it’s easier, you can update locations one by one using the UpdateLocation method.

However, note that the error responses don’t follow the API response format exactly as described.

These examples of error responses give you an idea of what to expect in case of a failed request. The error responses you get aim to help you find the issues in your requests and fix them.

Error response due to duplicated location IDs
JSON
{
  "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"
}
Error response due to no location with the requested ID
JSON
{
  "error": {
    "code": "RESOURCE_NOT_FOUND",
    "message": "Resource not found.",
    "details": [
      {
        "code": "LOCATION_NOT_FOUND",
        "message": "Location is not found."
      }
    ]
  },
  "requestId": "api-flb-fb27c729b51e658d4a4984716df00a77"
}
Error response due to incorrect data format in request
JSON
{
  "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"
}

Jump to Map Rank Tracker APIMap Rank Tracker API

The Map Rank Tracker API follows the API response format.

Last updated: March 10, 2026

Was this page helpful?