Overview

Jump to AboutAbout

It’s a group of products with SEO reports including:

  • Backlink Analytics
  • Keyword Gap Analysis
  • Keyword Analytics

Jump to AuthenticationAuthentication

Request authentication is provided via API keys. SEO API in Version 4 requires a Version 4 API key which is assigned to each user after subscribing to Semrush.

You’ll find your API key in the API keys section of your Semrush profile. If your API key is unavailable there, refer to API access.

Jump to Response formatResponse format

SEO API report endpoints return responses in both CSV and JSON formats.

Jump to ColumnsColumns

Each Semrush SEO API method supports a set of response fields that determine the data returned in CSV and JSON responses.

For v4 methods that support the fields query parameter, you can use these field names to include only the data relevant to your analysis.

Field
Description
API methods
anchor
Backlink anchor text.
backlinks_counts
Number of backlinks from the domain to each requested target, in the same order as the targets in the request.
common_refdomains
Number of referring domains shared with the target domain.
competitive_density
Competition level of advertisers bidding on the analyzed keyword within their PPC campaigns.
cpc
Average price, in USD cents, that advertisers pay for a click on an ad triggered by the analyzed keyword.
domain_score
Source domain authority score.
external_links_count
Number of external links found on the source page.
first_seen_at
Date and time when the item was first found.
follows_count
Number of follow backlinks.
forms_count
Number of backlinks placed in forms.
frames_count
Number of backlinks placed in iframes.
image_alt
Value of the image alt attribute if the backlink is an image.
image_url
Value of the image src attribute if the backlink is an image.
images_count
Number of image backlinks.
intents
Search intents associated with the keyword.
internal_links_count
Number of internal links found on the source page.
ip_address
Source page IP address.
ip_class_c_count
Number of referring IP class C subnets.
ips_count
Number of referring IP addresses.
is_follow
Whether the referring domain is dofollow.
is_form
Whether the backlink is inside a form element.
is_frame
Whether the backlink is inside an iframe.
is_image
Whether the backlink is image-based.
is_lost
Whether the backlink is lost.
is_new
Whether the backlink is new.
is_nofollow
Whether the backlink has the rel="nofollow" attribute.
is_sitewide_main
Whether this backlink is the main URL among sitewide backlinks.
is_sponsored
Whether the backlink has the rel="sponsored" attribute.
is_ugc
Whether the backlink has the rel="ugc" attribute.
keyword_difficulty
Measure of how difficult it is to rank organically in Google’s top 10 results for the analyzed keyword.
lang
Language of the source page.
last_seen_at
Date and time when the item was last seen.
lost_count
Number of lost backlinks.
matches_count
Number of analyzed targets this domain refers to.
month_date
Start of the month.
new_count
Number of new backlinks.
nofollows_count
Number of nofollow backlinks.
number_of_results
Number of URLs displayed in organic search results for the keyword.
page_score
Source page authority score.
redirect_url
Original URL when the source page URL redirects.
response_code
HTTP status code of the source page.
score
Page score for URL scope; domain score for all other scopes.
search_volume
Average number of monthly searches for the keyword over the past 12 months.
serp_features
SERP features triggered by the keyword.
similarity
Similarity to the target domain.
source_domain
Source page domain.
source_size
Source page content size in bytes.
source_title
Title of the source page where the backlink was found.
source_url
Source page URL.
sponsored_count
Number of sponsored backlinks.
target_title
Value of the title attribute on the source page’s anchor element.
target_url
Target page URL.
texts_count
Number of text backlinks.
trends
Monthly search interest over the last 12 months.
ugc_count
Number of UGC backlinks.
url
Target URL as it was passed in the request.
urls_count
Number of referring pages.

Jump to Error messagesError messages

When a request fails, the API returns a structured error response.

Error response example
JSON
{
  "meta": {
    "success": false,
    "status_code": 403,
    "request_id": "a29952029c10a47e5876d86256e59455"
  },
  "error": {
    "code": 403,
    "message": "Forbidden",
    "retryable": false,
    "details": {}
  }
}

Jump to Response fieldsResponse fields

Field
Description
meta.success
Indicates whether the request was successful.
meta.status_code
HTTP status code returned by the API.
meta.request_id
Unique request identifier that can be used when contacting support.
error.code
Error code. Usually matches the HTTP status code.
error.message
Error description.
error.retryable
Indicates whether retrying the request may succeed.
error.details
Additional error information. The structure depends on the specific error and endpoint.

Jump to HTTP status codesHTTP status codes

HTTP code
Description
400 Bad Request
The request contains invalid parameters or cannot be processed.
401 Unauthorized
Authentication failed or credentials are missing.
403 Forbidden
The authenticated user does not have permission to perform the operation.
404 Not Found
User information wasn’t found in the Semrush database.
409 Conflict
The request conflicts with the current state of the resource.
429 Too Many Requests
The request rate is too high.
499 Client Closed Request
The client closed the connection before the request completed.
500 Internal Server Error
An unexpected server error occurred.
501 Not Implemented
The requested operation is not implemented.
503 Service Unavailable
The service is temporarily unavailable.
504 Gateway Timeout
The request timed out while waiting for a backend service.

Jump to Advanced filteringAdvanced filtering

Most API endpoints provide standard query parameters for filtering and sorting results.

Use the filter parameter when standard parameters are insufficient, and you need non-equality operators such as >, LIKE, or logical disjunction such as OR.

Jump to SyntaxSyntax

The filter parameter uses the following format: Field Operator Value.

Example
?filter=volume > 500 AND (keyword CONTAINS "best" OR keyword STARTS_WITH "top")

Jump to Supported operatorsSupported operators

  • Comparison: >, >=, <, <=
  • Pattern: LIKE, CONTAINS, STARTS_WITH, ENDS_WITH, WORD_MATCH
  • Set: IN, NOT_IN
  • Logical: AND, OR
  • Array: HAS, HAS_ANY, HAS_ALL

Jump to Data typesData types

  • Strings: Always wrap in double quotes.
  • Numbers: Use raw integers or floats.
  • Booleans: true or false, case-insensitive.
  • Lists or arrays: Use parentheses and separate items with commas.

Last updated: July 15, 2026

Was this page helpful?