API

Domain Analysis

You are reading the Data API docs

Base URL: api.seranking.com

Data API and Project API keys are not interchangeable — use the correct one to avoid authentication errors.

Data apikey example:
80cfee7d-xxxx-xxxx-xxxx-fc8500816bb3
(UUID format)
Project apikey example:
253a73adxxxxxxxxxxxxxx340aa0a939
(40-char hex)

API keys are available in your account. For any questions or 401 errors, email [email protected] for support.

Domain Analysis API provides detailed insights into a domain’s search performance. Data is refreshed on a monthly basis.

Using the API, you can:

  • Query regional or worldwide data
  • Retrieve keyword statistics, domain pages, and subdomains
  • Analyze competitors to identify common keywords and keyword gaps
  • Retrieve paid advertising data, including ad creatives, observed positions, and traffic
  • Access historical data to track changes in rankings, traffic, and ad performance
  • Filter and sort results by metrics such as search volume, CPC, competition, keyword difficulty, and ranking positions

Get domain overview by region

GET https://api.seranking.com/v1/domain/overview/db
Cost: 100 credits per request

Returns detailed keyword statistics for a specified domain within a single, selected regional database. It breaks down performance for both organic and paid traffic, offering insights into keyword rankings, traffic estimates, and position changes.

Request parameters

ParameterTypeRequiredDefaultDescription
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
domainStringYesN/ADomain for which to retrieve the keyword statistics (e.g., seranking.com).
with_subdomainsIntegerNo1Flag indicating whether subdomain data should be included in the analysis:
1 – include subdomains
0 – exclude subdomains
urlStringNoN/ASpecific URL to analyze instead of the root domain
(e.g., https://domain.com/path/page). If provided, the domain parameter is ignored.

Request example

Copy
curl -X GET 'https://api.seranking.com/v1/domain/overview/db?source=xx&domain=yourdomain.com&with_subdomains=1' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON object with two primary keys: organic and adv. Each of these keys details various keyword statistics for the selected database.

organic object

ParameterTypeDescription
organic.base_domain / organic.targetStringBase domain or URL used for the analysis.
organic.keywords_countIntegerTotal number of organic keywords for which the domain ranks in the selected database.
organic.traffic_sumIntegerEstimated monthly organic search traffic from ranking keywords.
organic.price_sumFloatEstimated traffic value (PPC equivalent) for organic search data.
organic.keywords_new_countIntegerNumber of keywords for which the domain has newly started ranking.
organic.keywords_up_countIntegerNumber of keywords for which the domain’s ranking has improved.
organic.keywords_down_countIntegerNumber of keywords for which the domain’s ranking has declined.
organic.keywords_equal_countIntegerNumber of keywords for which the domain’s ranking has not changed.
organic.keywords_lost_countIntegerNumber of keywords for which the domain has dropped out of the SERPs.
organic.top1_5IntegerTotal number of organic keywords ranked in positions 1–5.
organic.top6_10IntegerTotal number of organic keywords ranked in positions 6–10.
organic.top11_20IntegerTotal number of organic keywords ranked in positions 11–20.
organic.top21_50IntegerTotal number of organic keywords ranked in positions 21–50.
organic.top51_100IntegerTotal number of organic keywords ranked in positions 51–100.
organic.yearIntegerYear of the data snapshot.
organic.monthIntegerMonth of the data snapshot.

adv object

ParameterTypeDescription
adv.base_domain / adv.targetStringBase domain or URL used for the analysis.
adv.keywords_countIntegerTotal number of keywords for which the domain has paid ads in the selected database.
adv.traffic_sumIntegerEstimated monthly traffic from paid keywords.
adv.price_sumFloatEstimated traffic value (PPC equivalent) from paid keywords.
adv.keywords_new_countIntegerNumber of new keywords targeted by paid ads.
adv.keywords_up_countIntegerNumber of paid keywords where ad positions improved.
adv.keywords_down_countIntegerNumber of paid keywords where ad positions declined.
adv.keywords_equal_countIntegerNumber of paid keywords where ad positions remained unchanged.
adv.keywords_lost_countIntegerNumber of keywords for which paid ads are no longer running or appearing in the SERPs.
adv.top1_2IntegerTotal number of paid keywords with ads appearing in positions 1–2.
adv.top3_5IntegerTotal number of paid keywords with ads appearing in positions 3–5.
adv.top6_8IntegerTotal number of paid keywords with ads appearing in positions 6–8.
adv.top9_11IntegerTotal number of paid keywords with ads appearing in positions 9–11.
adv.yearIntegerYear of the data snapshot.
adv.monthIntegerMonth of the data snapshot.

Response example

Copy
{
"organic": {
"base_domain": "example.com",
"price_sum": 100000,
"traffic_sum": 40000,
"keywords_new_count": 250,
"keywords_down_count": 70,
"keywords_up_count": 65,
"keywords_equal_count": 140000,
"keywords_lost_count": 110,
"keywords_count": 115000,
"top1_5": 20000,
"top6_10": 11000,
"top11_20": 18000,
"top21_50": 41000,
"top51_100": 50000,
"year": 2025,
"month": 11
},
"adv": {
"base_domain": "example.com",
"price_sum": 85,
"traffic_sum": 40,
"keywords_new_count": 0,
"keywords_down_count": 0,
"keywords_up_count": 0,
"keywords_equal_count": 16,
"keywords_lost_count": 0,
"keywords_count": 16,
"top1_2": 15,
"top3_5": 1,
"top6_8": 0,
"top9_11": 0,
"year": 2025,
"month": 11
}
}

Get worldwide domain overview

GET https://api.seranking.com/v1/domain/overview/worldwide
Cost: 100 credits per request

Aggregates and returns domain search performance statistics globally for the current month. The method provides a comprehensive view of worldwide organic and paid traffic metrics, with options to customize the returned data, including currency and specific fields.

Request parameters

ParameterTypeRequiredDefaultDescription
domainStringYesN/ADomain name for which to retrieve worldwide statistics (e.g., seranking.com).
currencyStringNoUSDISO 4217 currency code to be used for any monetary values (like traffic cost) returned in the response (e.g., USDEURGBP).
fieldsStringNopricetraffickeywordsComma-separated list specifying which data fields or categories to include in the response: 
price – shows traffic price/cost value
traffic – shows traffic volume value
keywords – shows keyword count statistics
positions_diff – shows statistics on position changes
positions_tops – shows statistics on top-ranking positions
show_zones_listStringNo0Identifies whether the response should include a detailed breakdown of statistics by regional zone (country) in addition to aggregated worldwide statistics: 
1 – include stats for each zone
0 – return worldwide stats only
with_subdomainsIntegerNo1Flag indicating whether subdomain data should be included in the analysis:
1 – include subdomains
0 – exclude subdomains
urlStringNoN/ASpecific URL to analyze instead of the root domain
(e.g., https://domain.com/path/page). If provided, the domain parameter is ignored.

Request example

Copy
curl -X GET 'https://api.seranking.com/v1/domain/overview/worldwide?domain=seranking.com¤cy=USD&fields=price,traffic,keywords,positions_diff,positions_tops&show_zones_list=0' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON object with two primary keys: organic and adv. Each of these keys holds an array of objects.

  • The first object in each array always represents the aggregated “worldwide” statistics.
  • If show_zones_list is set to “1” (or true), subsequent objects in the arrays will represent statistics for individual regional zones (countries).

Each object within the organic and adv arrays can contain the following parameters (depending on the fields requested):

ParameterTypeDescription
sourceStringIdentifier of the data scope:
worldwide for the global summary, or a specific country code for zone-specific data when show_zones_list is enabled.
countryStringDescriptive name for the source: worldwide for the global summary, or country name for zone-specific data (e.g., United States).
keywords_countIntegerTotal number of keywords for this scope (organic or paid, depending on the parent object).
traffic_sumIntegerSum of estimated traffic for this scope (organic or paid).
price_sumFloatEstimated traffic value (PPC equivalent) in the specified currency.
positions_new_countIntegerNumber of keywords newly appearing in rankings for this scope (if positions_diff requested in fields).
positions_up_countIntegerNumber of keywords with improved rankings for this scope (if positions_diff requested in fields).
positions_down_countIntegerNumber of keywords with declined rankings for this scope (if positions_diff requested in fields).
positions_lost_countIntegerNumber of keywords that dropped out of rankings for this scope (if positions_diff requested in fields).
positions_equal_countIntegerNumber of keywords with unchanged rankings for this scope (if positions_diff requested in fields).
positions_tops.top1_5IntegerOrganic: keywords in positions 1–5.
positions_tops.top6_10IntegerOrganic: keywords in positions 6–10.
positions_tops.top11_20IntegerOrganic: keywords in positions 11–20.
positions_tops.top21_50IntegerOrganic: keywords in positions 21–50.
positions_tops.top51_100IntegerOrganic: keywords in positions 51–100.
positions_tops.top1_2IntegerPaid (adv): keywords with ads in positions 1–2.
positions_tops.top3_5IntegerPaid (adv): keywords with ads in positions 3–5.
positions_tops.top6_8IntegerPaid (adv): keywords with ads in positions 6–8.
positions_tops.top9_11IntegerPaid (adv): keywords with ads in positions 9–11.

Response example

Copy
{
"organic": [
{
"source": "worldwide",
"country": "Worldwide",
"keywords_count": 823967,
"traffic_sum": 273150,
"price_sum": 241482.11,
"positions_new_count": 56042,
"positions_up_count": 56326,
"positions_down_count": 49834,
"positions_lost_count": 47169,
"positions_equal_count": 876005,
"positions_tops": {
"top1_5": 91520,
"top6_10": 95652,
"top11_20": 165641,
"top21_50": 332015,
"top51_100": 353061
}
}
],
"adv": [
{
"source": "worldwide",
"country": "Worldwide",
"keywords_count": 4947,
"traffic_sum": 4369,
"price_sum": 6509.45,
"positions_new_count": 333,
"positions_up_count": 7,
"positions_down_count": 4,
"positions_lost_count": 1742,
"positions_equal_count": 5645,
"positions_tops": {
"top1_2": 4905,
"top3_5": 1046,
"top6_8": 38,
"top9_11": 0
}
}
]
}

Get worldwide URL overview

GET https://api.seranking.com/v1/domain/overview/worldwide/url
Cost: 100 credits per request

Aggregates and returns URL search performance statistics globally for the current month. The method provides a comprehensive view of worldwide organic and paid traffic metrics for a specific URL, with options to customize the returned data using selected fields.

Request parameters

ParameterTypeRequiredDefaultDescription
urlStringYesN/AFull URL to analyze (including protocol).
fieldsStringNoN/AComma-separated list of metrics to include in the response. Accepted values: keywords, traffic, price.

Request example

Copy
curl -X GET 'https://api.seranking.com/v1/domain/overview/worldwide/url?fields=price,traffic,keywords&url=https://example.com/api.html' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON object containing two arrays: organic and adv.

ParameterTypeDescription
sourceStringData source scope. Always worldwide.
keywords_countIntegerTotal number of ranking keywords worldwide.
traffic_sumIntegerEstimated total monthly traffic worldwide.
price_sumFloatEstimated traffic value (PPC equivalent).

Response example

Copy
{
"organic": [
{
"source": "worldwide",
"keywords_count": 1791,
"traffic_sum": 1018,
"price_sum": 1826
}
],
"adv": [
{
"source": "worldwide",
"keywords_count": 5,
"traffic_sum": 0,
"price_sum": 0
}
]
}

GET https://api.seranking.com/v1/domain/overview/history
Cost: 100 credits per request

Retrieves historical data for a specified domain from a specific regional database. It tracks changes over time for key metrics, including the number of keywords, estimated traffic (clicks), and traffic cost estimates, for either organic or paid search.

Request parameters

ParameterTypeRequiredDefaultDescription
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
domainStringYesN/ADomain name for which to retrieve historical performance data (e.g., seranking.com).
typeStringNoorganicSpecifies whether to retrieve historical data for organic search traffic or paid search traffic:
organic – for organic traffic data
adv – for paid traffic data
with_subdomainsIntegerNo1Flag indicating whether subdomain data should be included in the analysis:
1 – include subdomains
0 – exclude subdomains
urlStringNoN/ASpecific URL to analyze instead of the root domain
(e.g., https://domain.com/path/page). If provided, the domain parameter is ignored.

Request examples

To retrieve organic historical data:

Copy
curl -X GET 'https://api.seranking.com/v1/domain/overview/history?source=us&domain=seranking.com&type=organic' \
-H 'Authorization: Token YOUR_API_KEY'

To retrieve paid (advertising) historical data:

Copy
curl -X GET 'https://api.seranking.com/v1/domain/overview/history?source=us&domain=seranking.com&type=adv' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON array. Each object in this array represents a historical data point (typically for a specific month and year) and contains the following parameters.

Note:
  • The topX_Y fields for ranking distribution correspond to the type of traffic requested—organic ranking ranges or paid ad position ranges.
  • The topX_Y fields count position occurrences, not unique keywords. If a domain has multiple links for a single keyword, each link is counted separately in the relevant position range(s). As a result, the sum of top1_5 + top6_10 + … + top51_100 may exceed keywords_count.
ParameterTypeDescription
keywords_countIntegerTotal number of unique keywords (organic or paid, depending on the request type) for which the domain had at least one result during the period.
traffic_sumIntegerEstimation of the total search traffic (clicks) the domain received from these keywords during that period.
price_sumFloatEstimated traffic value (PPC equivalent) in the default currency of the database.
yearIntegerYear of the historical data point.
monthIntegerMonth of the historical data point (1–12).
top1_5IntegerIf type is organic: total number of occurrences of organic keywords ranked in positions 1–5 during that period.
top6_10IntegerIf type is organic: total number of occurrences of organic keywords ranked in positions 6–10 during that period.
top11_20IntegerIf type is organic: total number of occurrences of organic keywords ranked in positions 11–20 during that period.
top21_50IntegerIf type is organic: total number of occurrences of organic keywords ranked in positions 21–50 during that period.
top51_100IntegerIf type is organic: total number of occurrences of organic keywords ranked in positions 51–100 during that period.
top1_2IntegerIf type is adv: total number of occurrences of paid keywords with ads appearing in positions 1–2 during that period.
top3_5IntegerIf type is adv: total number of occurrences of paid keywords with ads appearing in positions 3–5 during that period.
top6_8IntegerIf type is adv: total number of occurrences of paid keywords with ads appearing in positions 6–8 during that period.
top9_11IntegerIf type is adv: total number of occurrences of paid keywords with ads appearing in positions 9–11 during that period.

Response examples

Note: topX_Y fields reflect total result occurrences, not unique keywords. This is why their sum can exceed keywords_count.

If type=organic:

Copy
[
{
"keywords_count": 104199,
"traffic_sum": 35838,
"top1_5": 12629,
"top6_10": 11401,
"top11_20": 19134,
"top21_50": 39725,
"top51_100": 46089,
"year": 2025,
"month": 4,
"price_sum": 85424.78
},
{
"keywords_count": 103538,
"traffic_sum": 34402,
"top1_5": 9107,
"top6_10": 11517,
"top11_20": 19029,
"top21_50": 39617,
"top51_100": 45963,
"year": 2025,
"month": 5,
"price_sum": 85721.73
}
]

If type=adv:

Copy
[
{
"keywords_count": 7,
"traffic_sum": 0,
"top1_2": 7,
"top3_5": 0,
"top6_8": 0,
"top9_11": 0,
"year": 2025,
"month": 4,
"price_sum": 0
},
{
"keywords_count": 8,
"traffic_sum": 0,
"top1_2": 8,
"top3_5": 0,
"top6_8": 0,
"top9_11": 0,
"year": 2025,
"month": 5,
"price_sum": 0
}
]

Get domain keyword rankings

GET https://api.seranking.com/v1/domain/keywords
Cost: 100 credits per request

Retrieves keyword ranking data for a specified domain or exact URL from a regional database. Supports organic and paid results and provides advanced filtering across keyword properties, SERP features, search intents, and traffic metrics.

Request parameters

Note: Either domain or url must be specified. When one option is provided, the other is ignored.
ParameterTypeRequiredDefaultDescription
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
domainStringNoN/ADomain name for which to retrieve keyword rankings.
urlStringNoN/AExact URL for which to retrieve keyword rankings.
with_subdomainsBooleanNotrueIf set to true, includes keywords ranking for the specified domain or URL and all its subdomains. If set to false, returns only keywords ranking for the exact domain or URL.
typeStringNoorganicType of data to retrieve: organic search (organic) or paid search (adv).
order_fieldStringNotrafficField by which the returned keyword list should be sorted:
trafficvolumepositioncpccompetitionkei.
order_typeStringNodescSorting order:
asc – ascending
desc – descending
pageIntegerNo1Page number for paginated results. Positive integer.
limitIntegerNo100Maximum number of keywords to return per page (1–1000).
colsStringNoAll relevant by defaultComma-separated list of response fields to include. If omitted, a default set of relevant columns is returned (e.g., keyword,position,volume,url,difficulty).
pos_changeStringNoN/AKeywords filtered by position change vs. the previous period:
up – position growth
down – position drop
new – new in SERP
lost – dropped from SERP
diff – positions have changed up or down
same – positions have not changed
filter[keyword]StringNoN/AJSON string specifying keyword text to match. See Text search JSON structure for formatting details.
filter[multi_keyword_included]StringNoN/AJSON string specifying keyword text that must be included. See Text search JSON structure for formatting details.
filter[multi_keyword_excluded]StringNoN/AJSON string specifying keyword text that must be excluded. See Text search JSON structure for formatting details.
filter[url]StringNoN/AJSON string to filter keywords by ranking URL. Must contain only one base array element (no OR logic). See Text search JSON structure for formatting details.
filter[volume][from]IntegerNoN/AMinimum monthly search volume for keywords to be included. Non-negative integer.
filter[volume][to]IntegerNoN/AMaximum monthly search volume for keywords to be included. Non-negative integer.
filter[traffic][from]IntegerNoN/AMinimum estimated monthly traffic for keywords (e.g., 50). Non-negative integer.
filter[traffic][to]IntegerNoN/AMaximum estimated monthly traffic for keywords (e.g., 1000). Non-negative integer.
filter[traffic_percent][from]FloatNoN/AMinimum traffic share percentage for keywords (e.g., 5).
filter[traffic_percent][to]FloatNoN/AMaximum traffic share percentage for keywords (e.g., 50).
filter[position][from]IntegerNoN/AMinimum ranking position for keywords (e.g., 1). Positive integer.
filter[position][to]IntegerNoN/AMaximum ranking position for keywords (e.g., 10). Positive integer.
filter[keyword_count][from]IntegerNoN/AMinimum number of words in a keyword phrase (e.g., 2). Positive integer.
filter[keyword_count][to]IntegerNoN/AMaximum number of words in a keyword phrase (e.g., 4). Positive integer.
filter[characters_count][from]IntegerNoN/AMinimum character length of keyword phrases (e.g., 5). Positive integer.
filter[characters_count][to]IntegerNoN/AMaximum character length of keyword phrases (e.g., 50). Positive integer.
filter[cpc][from]FloatNoN/AMinimum CPC (Cost Per Click) value for keywords (e.g., 0.1). Non-negative float.
filter[cpc][to]FloatNoN/AMaximum CPC (Cost Per Click) value for keywords (e.g., 2.5). Non-negative float.
filter[price][from]FloatNoN/AMinimum keyword price value (e.g., 0.1). Non-negative float.
filter[price][to]FloatNoN/AMaximum keyword price value (e.g., 5.0). Non-negative float.
filter[competition][from]FloatNoN/AMinimum competition score (typically 0–1 or 0–100, depending on the metric scale).
filter[competition][to]FloatNoN/AMaximum competition score (typically 0–1 or 0–100, depending on the metric scale).
filter[difficulty][from]IntegerNoN/AMinimum keyword difficulty score (0–100) for keywords to be included.
filter[difficulty][to]IntegerNoN/AMaximum keyword difficulty score (0–100) for keywords to be included.
filter[serp_features]StringNoN/AComma-separated list of SERP feature codes to include (e.g., featured_snippet,local_pack,sitelinks). For acceptable values, see SERP features.
filter[intents]StringNoN/AComma-separated list of search intent codes to filter keywords:
I – informational
N – navigational
T – transactional
C – commercial
L – local

Request examples

To retrieve keywords for a domain (adv):

Copy
curl -X GET 'https://api.seranking.com/v1/domain/keywords?source=us&domain=booking.com&type=adv&limit=2&cols=keyword,cpc,volume,block_type,block_position,snippet_title&order_field=cpc&order_type=desc' \
-H 'Authorization: Token YOUR_API_KEY'

To retrieve keywords for a specific URL (organic):

Copy
curl -X GET 'https://api.seranking.com/v1/domain/keywords?source=us&url=https://seranking.com/api.html&type=organic&limit=2&filter[serp_features]=sitelinks' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON array of keyword objects.

ParameterTypeDescription
block_typeStringType of SERP block where the keyword appears (e.g., featured_snippets, tads, local_pack, etc.). If null, the keyword appears in organic search results.
block_positionIntegerPosition of the block on the SERP.
keywordStringKeyword phrase, e.g.,
seranking.com (organic)
nyc hotels (adv)
positionIntegerDomain’s current ranking position for this keyword (organic search or ad position for paid).
prev_posIntegerDomain’s ranking position for this keyword in the previous month/update period. Can be null for new keywords.
volumeIntegerAverage monthly search volume for this keyword (e.g., 6600).
cpcFloatAverage CPC (Cost Per Click) for this keyword (e.g., 1.08).
competitionFloatScore representing keyword competition. Float from 0.00 (low) to 1.00 (high).
keiFloatKeyword Effectiveness Index, a metric combining search volume and competition (e.g., 1.136 for organic).
difficultyIntegerKeyword difficulty for this keyword (usually 0–100).
urlStringURL of the domain’s page that ranks for this keyword or is used in the ad (e.g., https://www.booking.com/city/us/new-york.html).
total_sitesIntegerTotal number of websites appearing in search results for this keyword. May be null.
trafficIntegerEstimated monthly traffic this keyword drives to the domain’s ranking URL (e.g., 3 for organic).
traffic_percentFloatPercentage share of the total estimated traffic for this keyword that the domain captures (e.g., 11.11% for organic).
priceFloatEstimated traffic value (PPC equivalent) for the keyword.
snippet_numIntegerNumerical identifier or position of the ad snippet (e.g., 579).
snippets_countIntegerNumber of ad snippets found for this keyword by the domain (e.g., 1).
snippet_titleStringTitle text of the advertisement (e.g., Hotels in New York, NY).
snippet_descriptionStringDescriptive text body of the advertisement (e.g., Book your Hotel in New York NY online…).
snippet_display_urlStringURL displayed in the advertisement (often a shortened or vanity URL), e.g., www.booking.com/city/us/new-york.html.
serp_featuresArrayList of SERP features.
intentsArrayList of detected search intent codes for the keyword.

Intent keys:
I – informational
N – navigational
L – local
C – commercial
T – transactional

Response example

Copy
[
{
"block_type": null,
"block_position": 4,
"keyword": "ranking",
"position": 4,
"prev_pos": 4,
"volume": 22400,
"cpc": 0,
"competition": 0,
"url": "https://seranking.com/",
"difficulty": 59,
"total_sites": null,
"traffic": 836,
"traffic_percent": 2.09,
"price": 0
},
{
"block_type": null,
"block_position": 2,
"keyword": "website traffic checker",
"position": 2,
"prev_pos": 2,
"volume": 14800,
"cpc": 3.45,
"competition": 0.31,
"url": "https://seranking.com/website-traffic-checker.html",
"difficulty": 56,
"total_sites": null,
"traffic": 827,
"traffic_percent": 2.07,
"price": 2853.15
},
{
"block_type": null,
"block_position": 14,
"keyword": "se",
"position": 12,
"prev_pos": 12,
"volume": 301000,
"cpc": 1.31,
"competition": 0.01,
"url": "https://seranking.com/",
"difficulty": 77,
"total_sites": null,
"traffic": 801,
"traffic_percent": 2.01,
"price": 1049.31
},
{
"block_type": "sitelinks",
"block_position": 1,
"keyword": "se ranking",
"position": 1,
"prev_pos": 1,
"volume": 2400,
"cpc": 1.47,
"competition": 0.28,
"url": "https://seranking.com/",
"difficulty": 61,
"total_sites": null,
"traffic": 573,
"traffic_percent": 1.43,
"price": 842.31
},
{
"block_type": null,
"block_position": 13,
"keyword": "sentence rewriter",
"position": 13,
"prev_pos": 13,
"volume": 47500,
"cpc": 0.03,
"competition": 0.04,
"url": "https://seranking.com/free-tools/ai/sentence-rewriter.html",
"difficulty": 47,
"total_sites": null,
"traffic": 240,
"traffic_percent": 0.6,
"price": 7.2
},
{
"block_type": null,
"block_position": 16,
"keyword": "google alerts -sitefacebook.com -sitefb.me -siteyoutube.com -sitetwitter.com",
"position": 15,
"prev_pos": 15,
"volume": 90500,
"cpc": 19.76,
"competition": 0,
"url": "https://seranking.com/blog/google-alerts-setup/",
"difficulty": 61,
"total_sites": null,
"traffic": 154,
"traffic_percent": 0.39,
"price": 3043.04
}
]

Get domain pages

GET https://api.seranking.com/v1/domain/pages
Cost: 100 credits per request

Retrieves a list of individual pages ranking within a specified domain, along with their organic or paid search performance metrics. This endpoint helps identify which specific URLs contribute the most to visibility, traffic, and value in a regional database.

Request parameters

ParameterTypeRequiredDefaultDescription
targetStringYesN/ARoot domain to analyze (e.g., example.com).
scopeStringYesN/AScope of analysis:

base_domain – include all subdomains under the registrable domain.
domain – analyze pages under the specified host only.
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
typeStringNoorganicData type: organic or adv.
order_fieldStringNokeywords_countField by which the returned page list should be sorted.

Accepted values: keywords_count, traffic_sum, traffic_percent, price_sum.
order_typeStringNodescSorting order: asc, desc.
offsetIntegerNoN/AStarting position for the paginated list.
limitIntegerNo1000Maximum number of pages to return in a single response.
filter[domain_url]StringNoN/AJSON string specifying the URL text that must be included. See Text search JSON structure for formatting details.
filter[domain_traffic_percent][from]FloatNoN/AMinimum percentage of the total domain traffic contributed by the page to be included in the results.
filter[domain_traffic_percent][to]FloatNoN/AMaximum percentage of the total domain traffic contributed by the page to be included in the results.
filter[keywords_count][from]IntegerNoN/AMinimum number of ranking keywords for the page to be included in the results.
filter[keywords_count][to]IntegerNoN/AMaximum number of ranking keywords for the page to be included in the results.
filter[traffic_sum][from]IntegerNoN/AMinimum estimated monthly traffic for the page to be included in the results.
filter[traffic_sum][to]IntegerNoN/AMaximum estimated monthly traffic for the page to be included in the results.
filter[price_sum][from]FloatNoN/AMinimum estimated traffic value (PPC equivalent) for the page to be included in the results.
filter[price_sum][to]FloatNoN/AMaximum estimated traffic value (PPC equivalent) for the page to be included in the results.

Request example

Copy
curl -X GET 'https://api.example.com/v1/domain/pages?target=seranking.com&scope=base_domain&source=us&type=organic' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON array. Each object represents a single ranking page with aggregated metrics.

ParameterTypeDescription
urlStringFull page URL.
titleStringPage title as shown in search results.
keywords_countIntegerTotal number of keywords the page ranks for.
traffic_sumIntegerEstimated monthly traffic from ranking keywords.
traffic_percentFloatPercentage of total domain traffic attributed to the page.
price_sumFloatEstimated traffic value (PPC equivalent).
intentsObjectDistribution of keyword intent types for the page.

Intent keys:
I – informational
N – navigational
L – local
C – commercial
T – transactional

intents object

Each intent key contains aggregated keyword data:

FieldTypeDescription
countIntegerNumber of keywords matching the intent.
trafficIntegerEstimated traffic from keywords with this intent.
percentsFloatShare of this intent within the page’s total keyword set.

Response example

Copy
[
{
"traffic_sum": 451267,
"traffic_percent": 5.95,
"price_sum": 403266.21,
"keywords_count": 133271,
"url": "https://www.booking.com/",
"title": "Booking.com | Official site | The best hotels, flights, car rentals ...",
"intents": {
"I": { "count": 85939, "traffic": 440725, "percents": 43.46 },
"N": { "count": 27623, "traffic": 374646, "percents": 13.97 },
"L": { "count": 46758, "traffic": 10482, "percents": 23.64 },
"C": { "count": 35928, "traffic": 7688, "percents": 18.17 },
"T": { "count": 1503, "traffic": 80, "percents": 0.76 }
}
}
]

Get domain subdomains

GET https://api.seranking.com/v1/domain/subdomains
Cost: 100 credits per request

Retrieves a list of subdomains for a specified domain, along with key organic or paid search performance metrics. This endpoint helps identify which subdomains contribute the most to visibility, traffic, and value within a regional database.

Request parameters

ParameterTypeRequiredDefaultDescription
targetStringYesN/ARoot domain to analyze (e.g., example.com).
scopeStringYesN/AScope of analysis:

base_domain – aggregate subdomains under the registrable domain.
domain – aggregate subdomains under the specified host.
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
typeStringNoorganicData type: organic or adv.
order_fieldStringNokeywords_countField by which the returned subdomain list should be sorted.

Acceptable values: keywords_count, traffic_sum, traffic_percent, price_sum.
order_typeStringNodescSorting order: asc or desc.
offsetIntegerNoN/AStarting position for the paginated list.
limitIntegerNo1000Maximum number of subdomains to return in a single response (per page).
filter[domain_url]StringNoN/AJSON string specifying the subdomain or host text that must be included. See Text search JSON structure for formatting details.
filter[domain_traffic_percent][from]FloatNoN/AMinimum percentage of the total domain traffic contributed by the subdomain or URL to be included in the results.
filter[domain_traffic_percent][to]FloatNoN/AMaximum percentage of the total domain traffic contributed by the subdomain or URL to be included in the results.
filter[keywords_count][from]IntegerNoN/AMinimum number of ranking keywords for the subdomain or URL to be included in the results.
filter[keywords_count][to]IntegerNoN/AMaximum number of ranking keywords for the subdomain or URL to be included in the results.
filter[traffic_sum][from]IntegerNoN/AMinimum estimated monthly traffic for the subdomain or URL to be included in the results.
filter[traffic_sum][to]IntegerNoN/AMaximum estimated monthly traffic for the subdomain or URL to be included in the results.
filter[price_sum][from]FloatNoN/AMinimum estimated traffic value (PPC equivalent) for the subdomain or URL to be included in the results.
filter[price_sum][to]FloatNoN/AMaximum estimated traffic value (PPC equivalent) for the subdomain or URL to be included in the results.

Request example

Copy
curl -X GET 'https://api.seranking.com/v1/domain/subdomains?target=example.com&scope=base_domain&source=us&type=organic&order_field=keywords_count&order_type=desc&limit=1000' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON array. Each object in this array represents a subdomain with aggregated metrics.

ParameterTypeDescription
urlStringSubdomain or root domain host (e.g., blog.example.com, example.com).
keywords_countIntegerTotal number of keywords the subdomain ranks for.
traffic_sumIntegerEstimated monthly traffic from ranking keywords.
traffic_percentFloatPercentage of total domain traffic attributed to the subdomain.
price_sumFloatEstimated traffic value (PPC equivalent).

Response example

Copy
[
{
"traffic_sum": 73909,
"traffic_percent": 99.52,
"price_sum": 149497.18,
"keywords_count": 116181,
"url": "example.com"
},
{
"traffic_sum": 209,
"traffic_percent": 0.28,
"price_sum": 56.34,
"keywords_count": 33,
"url": "online.example.com"
},
{
"traffic_sum": 146,
"traffic_percent": 0.2,
"price_sum": 175.67,
"keywords_count": 1590,
"url": "help.example.com"
},
{
"traffic_sum": 0,
"traffic_percent": 0,
"price_sum": 0,
"keywords_count": 1,
"url": "academy.example.com"
},
{
"traffic_sum": 0,
"traffic_percent": 0,
"price_sum": 0,
"keywords_count": 4,
"url": "visible.example.com"
}
]

GET https://api.seranking.com/v1/domain/ads
Cost: 100 credits per request

Retrieves an overview of paid advertisements (PPC ads) run by various domains for a specific target keyword. The method shows which domains are advertising on that keyword, the extent of their advertising efforts over a period, and details of their ad creatives.

Request parameters

ParameterTypeRequiredDefaultDescription
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
keywordStringYesN/ASpecific keyword for which to retrieve paid ad data. Accepts any valid keyword string (e.g., new york hotels).
fromStringNoN/A (implies current/all available data)Starting year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2017-01).
toStringNoN/A (implies current/all available data)Ending year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2023-12).
pageIntegerNo1Page number for paginated results when retrieving domains advertising on the specified keyword (e.g., 1). Positive integer.
limitIntegerNo100Maximum number of domains advertising on the specified keyword to return per page. Accepts values from 1 to 100 (e.g., 20).

Request example

Copy
curl -X GET 'https://api.seranking.com/v1/domain/ads?source=us&keyword=nyc+hotels&from=2023-01&to=2023-12&limit=10' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON array. Each object in the array represents a unique domain that has run paid ads for the specified keyword and contains an overview of that domain’s advertising activity for that keyword.

ParameterTypeDescription
domainStringDomain name that ran ads for the target keyword (e.g., hotels.com).
ads_countIntegerTotal number of unique ad creatives or instances observed from this domain for the target keyword within the specified period (e.g., 19).
keywords_countIntegerTotal number of other keywords the domain was also seen advertising on, providing context on the advertiser’s breadth (e.g., 78972).
traffic_sumIntegerEstimation of the total traffic this domain received from its ads for all its keywords, not just the target one (e.g., 3565364).
price_sumFloatEstimated traffic value (PPC equivalent) from paid keywords.
snippets.positionIntegerObserved position of the ad snippet on the SERP (e.g., 2).
snippets.snippet_titleStringTitle text of the specific advertisement (e.g., Booking).
snippets.snippet_descriptionStringDescriptive text body of the specific advertisement (e.g., Stay 10 nights & get 1 free!...).
snippets.snippet_display_urlStringURL displayed in the specific advertisement (e.g., www.hotels.com/).
snippets.snippet_countIntegerCount or frequency of this specific snippet being observed (e.g., 1).
snippets.urlStringActual destination URL (landing page) of the specific advertisement (e.g., https://www.hotels.com/).

Response example

Copy
[
{
"domain": "examplehotelchain.com",
"ads_count": 5,
"keywords_count": 250,
"traffic_sum": 150000,
"price_sum": 75000.5,
"snippets": {
"2023-05": {
"position": 1,
"snippet_title": "Luxury London Stays | Example Hotels‎",
"snippet_description": "Experience unparalleled luxury. Book your 5-star hotel in London today. Exclusive offers available for a limited time.",
"snippet_display_url": "www.examplehotelchain.com/london",
"snippet_count": "1",
"url": "https://www.examplehotelchain.com/offers/london-luxury"
}
}
}
]

GET https://api.seranking.com/v1/domain/ads
Cost: 100 credits per request

Retrieves an overview of keywords a specific target domain is bidding on in paid search auctions. It details the ads run by this domain for those keywords, including ad copy, landing pages, and observed performance metrics over a specified period.

Request parameters

ParameterTypeRequiredDefaultDescription
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
domainStringYesN/ASpecific domain for which to retrieve its paid ad data (e.g., booking.com).
fromStringNoN/A (implies current/all available data)Starting year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2017-01).
toStringNoN/A (implies current/all available data)Ending year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2018-12).
pageIntegerNo1Page number for paginated results when retrieving keywords the domain is advertising on (e.g., 1). Positive integer.
limitIntegerNo100Maximum number of keywords the domain is advertising on to return per page. Accepts values from 1 to 100 (e.g., 100).

Request example

Copy
curl -X GET 'https://api.seranking.com/v1/domain/ads?source=us&domain=booking.com&from=2023-01&to=2023-12&limit=10' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If successful, the server returns a JSON array. Each object in the array represents a unique keyword that the specified domain has targeted with paid ads. It includes performance metrics for that keyword and details of the ad snippets run by the domain for that keyword.

ParameterTypeDescription
keywordStringKeyword phrase that the specified domain was advertising on (e.g., locanda vivaldi venice).
ads_countIntegerTotal number of unique ad creatives or instances observed from the specified domain for this keyword within the given period (e.g., 24).
competitionFloatScore representing keyword competition. Float from 0.00 (low) to 1.00 (high).
cpcFloatAverage CPC (Cost Per Click) for the keyword (e.g., 5.64).
volumeIntegerAverage monthly search volume for this keyword (e.g., 100).
snippets.positionIntegerObserved position of the ad snippet on the SERP (e.g., 2).
snippets.snippet_titleStringTitle text of the specific advertisement (e.g., Locanda Vivaldi, Venice - Booking.com).
snippets.snippet_descriptionStringDescriptive text body of the specific advertisement (e.g., Book at Locanda Vivaldi, Venice. No reservation costs...).
snippets.snippet_display_urlStringURL displayed in the specific advertisement (e.g., www.booking.com/hotel/it/locanda-vivaldi.en.html?a).
snippets.snippet_countIntegerCount or frequency of the specific snippet being observed (e.g., 1).
snippets.snippet_numIntegerNumerical identifier for the specific ad snippet (e.g., 125).
snippets.urlStringActual destination URL (landing page) of the specific advertisement (e.g., http://www.booking.com/hotel/it/locanda-vivaldi.en.html?aid=311088).

Response example

Copy
[
{
"keyword": "locanda vivaldi venice",
"ads_count": 24,
"competition": "0.39",
"cpc": "5.64",
"volume": "100",
"snippets": {
"2017-01": {
"position": "2",
"snippet_title": "Locanda Vivaldi, Venice – Booking.com‎",
"snippet_description": "Book at Locanda Vivaldi, Venice. No reservation costs. Great rates Amenities: Free Wifi, Non Smoking Rooms, 24 Hour Front Desk, Air Conditioning",
"snippet_display_url": "www.booking.com/hotel/it/locanda-vivaldi.en.html?a",
"snippet_count": "1",
"snippet_num": 125,
"url": "http://www.booking.com/hotel/it/locanda-vivaldi.en.html?aid=311088"
}
}
}
]

Get domain competitors

GET https://api.seranking.com/v1/domain/competitors
Cost: 100 credits per request

Retrieves a list of competitor domains for a specified target domain. The list can be tailored to show organic or paid competitors, and can optionally include or exclude major industry players. Furthermore, the level of detail in the response can be adjusted to include basic information or more extensive statistics for each competitor. The maximum number of competitors returned is 500.

Request parameters

ParameterTypeRequiredDefaultDescription
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
domainStringYesN/APrimary domain for which to find competitors (e.g., seranking.com).
typeStringNoorganicType of data to retrieve: organic search results (organic) or paid search results (adv).
statsString/IntegerNo0Flag to control the level of detail in the response:
0 – include basic info: domain & common keywords only
1 – include additional statistical parameters

Request example

Copy
curl -X GET 'https://api.seranking.com/v1/domain/competitors?source=us&domain=yourtargetdomain.com&type=organic&stats=1' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON array. Each object in this array represents a competitor domain. The fields included in each object depend on the value of the stats request parameter.

Core response parameters (when stats=0 is specified in the request):

ParameterTypeDescription
domainStringDomain name of the competitor (e.g., tripadvisor.com).
common_keywordsIntegerNumber of keywords for which both the analyzed domain and the competitor rank (e.g., 1076).

Additional response parameters (when stats=1 is specified in the request):

ParameterTypeDescription
domainStringDomain name of the competitor (e.g., tripadvisor.com).
common_keywordsIntegerNumber of keywords for which both the analyzed domain and the competitor rank (e.g., 1076).
total_keywordsIntegerTotal number of keywords for which the competitor domain ranks within Google’s top 100 results in the specified database (e.g., 2084).
traffic_sumIntegerEstimated monthly traffic volume the competitor receives from its ranking keywords (e.g., 291). This is typically calculated based on expected CTR, search volume, and positions.
price_sumFloatEstimated traffic value (PPC equivalent) of the competitor’s traffic.

Response examples

Overview/history (basic – stats=0):

Copy
[
{
"domain": "competitorA.com",
"common_keywords": 1076
},
{
"domain": "competitorB.net",
"common_keywords": 850
}
]

Overview/history (with extra status – stats=1):

Copy
[
{
"domain": "competitorA.com",
"common_keywords": 1076,
"total_keywords": 2084,
"traffic_sum": 291,
"price_sum": 40.12
},
{
"domain": "competitorB.net",
"common_keywords": 850,
"total_keywords": 1500,
"traffic_sum": 200,
"price_sum": 30.5
}
]

Analyze keyword overlap and gaps

GET https://api.seranking.com/v1/domain/keywords/comparison
Cost: 100 credits per request

Analyzes and compares the keyword rankings of two websites using either domains or full URLs. It can find keywords they have in common or identify a ‘keyword gap’— keywords for which one site ranks, but the other does not. This is useful for competitive analysis and identifying ranking opportunities.

Request parameters

Note: Either domain or url must be specified. When one option is provided, the other is ignored.
ParameterTypeRequiredDefaultDescription
sourceStringYesN/ACountry code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes.
domainStringNoN/APrimary domain for the comparison (e.g., booking.com).
urlStringNoN/APrimary full URL for the comparison (e.g., https://www.booking.com).
compareStringYesN/ACompetitor domain or full URL to compare against the primary domain or URL. Must match the type of the primary parameter (domain or url).
typeStringNoorganicType of data to retrieve: organic search traffic (organic) or paid search traffic (adv).
pageIntegerNo1Page number for paginated results when retrieving keywords (e.g., 1). Positive integer.
limitIntegerNo100Maximum number of keywords to return per page (e.g., 50). Accepts values from 1 to 1000.
diffStringNo0Controls the comparison mode. Accepts values: 0, 1. See the section below for a detailed explanation.
order_fieldStringNokeywordSpecifies the field by which to sort the results:
keywordvolumecpccompetitiondifficultyposition.
order_typeStringNoascSpecifies the sort order for the results: ascdesc.

Understanding the diff parameter

The diff parameter controls the comparison mode by defining which set of keywords to return. For these examples, let A be the primary domain and B be the compare domain.

diff=0: common keywords (A ∩ B)

Returns keywords for which both the primary domain (A) and the compare domain (B) rank.

diff=1: keyword gap (A – B)

Returns keywords for which the primary domain (A) ranks, but the compare domain (B) does not.

💡 Pro tipHow to find your competitor’s unique keywords (B – A)

To find the keywords for which the compare domain ranks but your primary domain does not, simply swap the domains in your request. Set the competitor’s domain as the primary domain and your domain as the compare domain, while keeping diff=1.

For example, to see keywords hotels.com has that booking.com lacks, request: ...&domain=hotels.com&compare=booking.com&diff=1...

Request examples

To compare domain names:

Copy
curl -X GET 'https://api.seranking.com/v1/domain/keywords/comparison?source=us&domain=booking.com&compare=hotels.com&type=organic&diff=0&order_field=volume&order_type=desc' \
-H 'Authorization: Token YOUR_API_KEY'

To compare URLs:

Copy
curl -X GET 'https://api.seranking.com/v1/domain/keywords/comparison?source=us&url=https://www.booking.com&compare=https://www.hotels.com&type=organic&diff=1&order_type=desc&order_field=volume' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

If the request is successful, the server returns a JSON array. Each object in this array represents a keyword and includes metrics for both the primary domain and the compare domain (where applicable, depending on the diff mode).

ParameterTypeDescription
keywordStringAnalyzed keyword phrase (e.g., haworth hotel holland mi).
volumeIntegerAverage monthly number of Google searches for the specified keyword (e.g., 10).
cpcFloatCPC (Cost Per Click) for the keyword (e.g., 3.01).
competitionFloatScore representing keyword competition. Float from 0.00 (low) to 1.00 (high).
difficultyIntegerKeyword difficulty for this keyword (from 0 to 100).
total_sitesIntegerTotal number of websites appearing in the search results for the query (e.g., 94).
positionIntegerRanking position of the primary domain for the keyword (e.g., 4). Can be null if diff=1 and primary domain doesn’t rank.
urlStringURL of the primary domain’s page that ranks for this keyword (e.g., https://www.booking.com/hotel/us/haworth-inn-center.html). Can be null if diff=1.
priceFloatEstimated cost/value of the traffic the primary domain receives from this keyword (e.g., 2.44). Can be null if diff=1.
trafficFloatEstimated traffic the primary domain receives from this keyword (e.g., 0.81). Can be null if diff=1.
compare_positionIntegerRanking position of the compare domain for this keyword (e.g., 5).
compare_urlStringURL of the compare domain’s page that ranks for this keyword (e.g., https://www.hotels.com/ho576868/haworth/).
compare_priceFloatEstimated cost/value of the traffic the compare domain receives from this keyword (e.g., 1.84).
compare_trafficFloatEstimated traffic the compare domain receives from this keyword (e.g., 0.61).

Response examples

The examples below show how the output differs depending on the diff parameter value.

Common keywords (diff=0)

This request finds keywords that booking.com and hotels.com have in common.

Copy
curl -X GET 'https://api.seranking.com/v1/domain/keywords/comparison?source=us&domain=booking.com&compare=hotels.com&type=organic&diff=0&limit=1' \
-H 'Authorization: Token YOUR_API_KEY'
Copy
[
{
"keyword": "haworth hotel holland mi",
"volume": 10,
"cpc": 3.01,
"competition": 0.38,
"difficulty": 4,
"total_sites": 94,
"position": 4,
"url": "https://www.booking.com/hotel/us/haworth-inn-center.html",
"price": 2.44,
"traffic": 0.81,
"compare_position": 5,
"compare_url": "https://www.hotels.com/ho576868/haworth/",
"compare_price": 1.84,
"compare_traffic": 0.61
}
]

Keyword gap (diff=1)

This request finds keywords for which the primary domain (booking.com) ranks, but the compare domain (hotels.com) does not.

Copy
curl -X GET 'https://api.seranking.com/v1/domain/keywords/comparison?source=us&domain=booking.com&compare=hotels.com&type=organic&diff=1&limit=1' \
-H 'Authorization: Token YOUR_API_KEY'
Copy
[
{
"keyword": "unique hotel keyword only for booking.com",
"volume": 150,
"cpc": 2.50,
"competition": 0.45,
"difficulty": 2,
"total_sites": 120,
"position": 3,
"url": "https://www.booking.com/some-page",
"price": 1.5,
"traffic": 0.7,
"compare_position": null,
"compare_url": null,
"compare_price": null,
"compare_traffic": null
}
]

Text search JSON structure

The text search structure allows for the creation of complex text searches by providing a JSON string in the format array<array<object>>.

  • The first (outer) layer of the array corresponds to elements separated by logical OR.
  • The second (inner) layer of the array corresponds to elements with logical AND.

Each object within the inner array has the following structure:

Copy
{"type": "begins","value": "google"}

Object properties

NameDescription
object.valueContains the text value to be searched.
object.typeSpecifies the type of search to be performed.

List of possible object.type variants

NameDescription
beginsSearched text should start with the specified value.
containsSearched text should contain the specified value anywhere within the text.
endsSearched text should end with the specified value.
exactSearched text should exactly match the specified value.

Example of a complex JSON filter structure

To find keywords that contain “seo tools” AND (begin with “free” OR begin with “best”), the JSON for filter[multi_keyword_included] would be:

Copy
[
[
{"type": "contains","value": "seo tools"},
{"type": "begins","value": "free"}
],
[
{"type": "contains","value": "seo tools"},
{"type": "begins","value": "best"}
]
]

This example illustrates the OR (outer array) and AND (inner array) logic. The filter[url] parameter is simpler as it doesn’t use the OR logic and only accepts a single inner array, e.g., [[{"type":"contains","value":"/blog"}]].

Learn how SE Ranking’s API can boost your SEO!

Hi! Meet our product expert, Alex.

He’ll walk you through the API and show you how to get the most out of it.

  • Enjoy a tailored demo on integrating rich, structured SEO data into your stack.
  • Pin down every tech detail live—auth, endpoints, rate limits, data formats.
  • Compare usage tiers and pricing so you can unlock maximum data value.

Request a free demo to see our tools and integrations in action

By clicking this button, you agree to SE Ranking’s Terms of Services and Privacy Policy.