Domain Analysis
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| domain | String | Yes | N/A | Domain for which to retrieve the keyword statistics (e.g., seranking.com). |
| with_subdomains | Integer | No | 1 | Flag indicating whether subdomain data should be included in the analysis:1 – include subdomains0 – exclude subdomains |
| url | String | No | N/A | Specific URL to analyze instead of the root domain (e.g., https://domain.com/path/page). If provided, the domain parameter is ignored. |
Request example
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
| Parameter | Type | Description |
|---|---|---|
| organic.base_domain / organic.target | String | Base domain or URL used for the analysis. |
| organic.keywords_count | Integer | Total number of organic keywords for which the domain ranks in the selected database. |
| organic.traffic_sum | Integer | Estimated monthly organic search traffic from ranking keywords. |
| organic.price_sum | Float | Estimated traffic value (PPC equivalent) for organic search data. |
| organic.keywords_new_count | Integer | Number of keywords for which the domain has newly started ranking. |
| organic.keywords_up_count | Integer | Number of keywords for which the domain’s ranking has improved. |
| organic.keywords_down_count | Integer | Number of keywords for which the domain’s ranking has declined. |
| organic.keywords_equal_count | Integer | Number of keywords for which the domain’s ranking has not changed. |
| organic.keywords_lost_count | Integer | Number of keywords for which the domain has dropped out of the SERPs. |
| organic.top1_5 | Integer | Total number of organic keywords ranked in positions 1–5. |
| organic.top6_10 | Integer | Total number of organic keywords ranked in positions 6–10. |
| organic.top11_20 | Integer | Total number of organic keywords ranked in positions 11–20. |
| organic.top21_50 | Integer | Total number of organic keywords ranked in positions 21–50. |
| organic.top51_100 | Integer | Total number of organic keywords ranked in positions 51–100. |
| organic.year | Integer | Year of the data snapshot. |
| organic.month | Integer | Month of the data snapshot. |
adv object
| Parameter | Type | Description |
|---|---|---|
| adv.base_domain / adv.target | String | Base domain or URL used for the analysis. |
| adv.keywords_count | Integer | Total number of keywords for which the domain has paid ads in the selected database. |
| adv.traffic_sum | Integer | Estimated monthly traffic from paid keywords. |
| adv.price_sum | Float | Estimated traffic value (PPC equivalent) from paid keywords. |
| adv.keywords_new_count | Integer | Number of new keywords targeted by paid ads. |
| adv.keywords_up_count | Integer | Number of paid keywords where ad positions improved. |
| adv.keywords_down_count | Integer | Number of paid keywords where ad positions declined. |
| adv.keywords_equal_count | Integer | Number of paid keywords where ad positions remained unchanged. |
| adv.keywords_lost_count | Integer | Number of keywords for which paid ads are no longer running or appearing in the SERPs. |
| adv.top1_2 | Integer | Total number of paid keywords with ads appearing in positions 1–2. |
| adv.top3_5 | Integer | Total number of paid keywords with ads appearing in positions 3–5. |
| adv.top6_8 | Integer | Total number of paid keywords with ads appearing in positions 6–8. |
| adv.top9_11 | Integer | Total number of paid keywords with ads appearing in positions 9–11. |
| adv.year | Integer | Year of the data snapshot. |
| adv.month | Integer | Month of the data snapshot. |
Response example
{
"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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| domain | String | Yes | N/A | Domain name for which to retrieve worldwide statistics (e.g., seranking.com). |
| currency | String | No | USD | ISO 4217 currency code to be used for any monetary values (like traffic cost) returned in the response (e.g., USD, EUR, GBP). |
| fields | String | No | price, traffic, keywords | Comma-separated list specifying which data fields or categories to include in the response: price – shows traffic price/cost valuetraffic – shows traffic volume valuekeywords – shows keyword count statisticspositions_diff – shows statistics on position changespositions_tops – shows statistics on top-ranking positions |
| show_zones_list | String | No | 0 | Identifies 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 zone0 – return worldwide stats only |
| with_subdomains | Integer | No | 1 | Flag indicating whether subdomain data should be included in the analysis:1 – include subdomains0 – exclude subdomains |
| url | String | No | N/A | Specific URL to analyze instead of the root domain (e.g., https://domain.com/path/page). If provided, the domain parameter is ignored. |
Request example
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_listis 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):
| Parameter | Type | Description |
|---|---|---|
| source | String | Identifier of the data scope:worldwide for the global summary, or a specific country code for zone-specific data when show_zones_list is enabled. |
| country | String | Descriptive name for the source: worldwide for the global summary, or country name for zone-specific data (e.g., United States). |
| keywords_count | Integer | Total number of keywords for this scope (organic or paid, depending on the parent object). |
| traffic_sum | Integer | Sum of estimated traffic for this scope (organic or paid). |
| price_sum | Float | Estimated traffic value (PPC equivalent) in the specified currency. |
| positions_new_count | Integer | Number of keywords newly appearing in rankings for this scope (if positions_diff requested in fields). |
| positions_up_count | Integer | Number of keywords with improved rankings for this scope (if positions_diff requested in fields). |
| positions_down_count | Integer | Number of keywords with declined rankings for this scope (if positions_diff requested in fields). |
| positions_lost_count | Integer | Number of keywords that dropped out of rankings for this scope (if positions_diff requested in fields). |
| positions_equal_count | Integer | Number of keywords with unchanged rankings for this scope (if positions_diff requested in fields). |
| positions_tops.top1_5 | Integer | Organic: keywords in positions 1–5. |
| positions_tops.top6_10 | Integer | Organic: keywords in positions 6–10. |
| positions_tops.top11_20 | Integer | Organic: keywords in positions 11–20. |
| positions_tops.top21_50 | Integer | Organic: keywords in positions 21–50. |
| positions_tops.top51_100 | Integer | Organic: keywords in positions 51–100. |
| positions_tops.top1_2 | Integer | Paid (adv): keywords with ads in positions 1–2. |
| positions_tops.top3_5 | Integer | Paid (adv): keywords with ads in positions 3–5. |
| positions_tops.top6_8 | Integer | Paid (adv): keywords with ads in positions 6–8. |
| positions_tops.top9_11 | Integer | Paid (adv): keywords with ads in positions 9–11. |
Response example
{
"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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| url | String | Yes | N/A | Full URL to analyze (including protocol). |
| fields | String | No | N/A | Comma-separated list of metrics to include in the response. Accepted values: keywords, traffic, price. |
Request example
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.
| Parameter | Type | Description |
|---|---|---|
| source | String | Data source scope. Always worldwide. |
| keywords_count | Integer | Total number of ranking keywords worldwide. |
| traffic_sum | Integer | Estimated total monthly traffic worldwide. |
| price_sum | Float | Estimated traffic value (PPC equivalent). |
Response example
{
"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 domain traffic and keyword history
GET https://api.seranking.com/v1/domain/overview/historyCost: 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| domain | String | Yes | N/A | Domain name for which to retrieve historical performance data (e.g., seranking.com). |
| type | String | No | organic | Specifies whether to retrieve historical data for organic search traffic or paid search traffic:organic – for organic traffic dataadv – for paid traffic data |
| with_subdomains | Integer | No | 1 | Flag indicating whether subdomain data should be included in the analysis:1 – include subdomains0 – exclude subdomains |
| url | String | No | N/A | Specific 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:
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:
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.
- The
topX_Yfields for ranking distribution correspond to the type of traffic requested—organic ranking ranges or paid ad position ranges. - The
topX_Yfields 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 oftop1_5+top6_10+ … +top51_100may exceedkeywords_count.
| Parameter | Type | Description |
|---|---|---|
| keywords_count | Integer | Total 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_sum | Integer | Estimation of the total search traffic (clicks) the domain received from these keywords during that period. |
| price_sum | Float | Estimated traffic value (PPC equivalent) in the default currency of the database. |
| year | Integer | Year of the historical data point. |
| month | Integer | Month of the historical data point (1–12). |
| top1_5 | Integer | If type is organic: total number of occurrences of organic keywords ranked in positions 1–5 during that period. |
| top6_10 | Integer | If type is organic: total number of occurrences of organic keywords ranked in positions 6–10 during that period. |
| top11_20 | Integer | If type is organic: total number of occurrences of organic keywords ranked in positions 11–20 during that period. |
| top21_50 | Integer | If type is organic: total number of occurrences of organic keywords ranked in positions 21–50 during that period. |
| top51_100 | Integer | If type is organic: total number of occurrences of organic keywords ranked in positions 51–100 during that period. |
| top1_2 | Integer | If type is adv: total number of occurrences of paid keywords with ads appearing in positions 1–2 during that period. |
| top3_5 | Integer | If type is adv: total number of occurrences of paid keywords with ads appearing in positions 3–5 during that period. |
| top6_8 | Integer | If type is adv: total number of occurrences of paid keywords with ads appearing in positions 6–8 during that period. |
| top9_11 | Integer | If type is adv: total number of occurrences of paid keywords with ads appearing in positions 9–11 during that period. |
Response examples
topX_Y fields reflect total result occurrences, not unique keywords. This is why their sum can exceed keywords_count.If type=organic:
[
{
"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:
[
{
"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
domain or url must be specified.
When one option is provided, the other is ignored.| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| domain | String | No | N/A | Domain name for which to retrieve keyword rankings. |
| url | String | No | N/A | Exact URL for which to retrieve keyword rankings. |
| with_subdomains | Boolean | No | true | If 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. |
| type | String | No | organic | Type of data to retrieve: organic search (organic) or paid search (adv). |
| order_field | String | No | traffic | Field by which the returned keyword list should be sorted:traffic, volume, position, cpc, competition, kei. |
| order_type | String | No | desc | Sorting order:asc – ascendingdesc – descending |
| page | Integer | No | 1 | Page number for paginated results. Positive integer. |
| limit | Integer | No | 100 | Maximum number of keywords to return per page (1–1000). |
| cols | String | No | All relevant by default | Comma-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_change | String | No | N/A | Keywords filtered by position change vs. the previous period:up – position growthdown – position dropnew – new in SERPlost – dropped from SERPdiff – positions have changed up or downsame – positions have not changed |
| filter[keyword] | String | No | N/A | JSON string specifying keyword text to match. See Text search JSON structure for formatting details. |
| filter[multi_keyword_included] | String | No | N/A | JSON string specifying keyword text that must be included. See Text search JSON structure for formatting details. |
| filter[multi_keyword_excluded] | String | No | N/A | JSON string specifying keyword text that must be excluded. See Text search JSON structure for formatting details. |
| filter[url] | String | No | N/A | JSON 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] | Integer | No | N/A | Minimum monthly search volume for keywords to be included. Non-negative integer. |
| filter[volume][to] | Integer | No | N/A | Maximum monthly search volume for keywords to be included. Non-negative integer. |
| filter[traffic][from] | Integer | No | N/A | Minimum estimated monthly traffic for keywords (e.g., 50). Non-negative integer. |
| filter[traffic][to] | Integer | No | N/A | Maximum estimated monthly traffic for keywords (e.g., 1000). Non-negative integer. |
| filter[traffic_percent][from] | Float | No | N/A | Minimum traffic share percentage for keywords (e.g., 5). |
| filter[traffic_percent][to] | Float | No | N/A | Maximum traffic share percentage for keywords (e.g., 50). |
| filter[position][from] | Integer | No | N/A | Minimum ranking position for keywords (e.g., 1). Positive integer. |
| filter[position][to] | Integer | No | N/A | Maximum ranking position for keywords (e.g., 10). Positive integer. |
| filter[keyword_count][from] | Integer | No | N/A | Minimum number of words in a keyword phrase (e.g., 2). Positive integer. |
| filter[keyword_count][to] | Integer | No | N/A | Maximum number of words in a keyword phrase (e.g., 4). Positive integer. |
| filter[characters_count][from] | Integer | No | N/A | Minimum character length of keyword phrases (e.g., 5). Positive integer. |
| filter[characters_count][to] | Integer | No | N/A | Maximum character length of keyword phrases (e.g., 50). Positive integer. |
| filter[cpc][from] | Float | No | N/A | Minimum CPC (Cost Per Click) value for keywords (e.g., 0.1). Non-negative float. |
| filter[cpc][to] | Float | No | N/A | Maximum CPC (Cost Per Click) value for keywords (e.g., 2.5). Non-negative float. |
| filter[price][from] | Float | No | N/A | Minimum keyword price value (e.g., 0.1). Non-negative float. |
| filter[price][to] | Float | No | N/A | Maximum keyword price value (e.g., 5.0). Non-negative float. |
| filter[competition][from] | Float | No | N/A | Minimum competition score (typically 0–1 or 0–100, depending on the metric scale). |
| filter[competition][to] | Float | No | N/A | Maximum competition score (typically 0–1 or 0–100, depending on the metric scale). |
| filter[difficulty][from] | Integer | No | N/A | Minimum keyword difficulty score (0–100) for keywords to be included. |
| filter[difficulty][to] | Integer | No | N/A | Maximum keyword difficulty score (0–100) for keywords to be included. |
| filter[serp_features] | String | No | N/A | Comma-separated list of SERP feature codes to include (e.g., featured_snippet,local_pack,sitelinks). For acceptable values, see SERP features. |
| filter[intents] | String | No | N/A | Comma-separated list of search intent codes to filter keywords:I – informationalN – navigationalT – transactionalC – commercialL – local |
Request examples
To retrieve keywords for a domain (adv):
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):
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.
| Parameter | Type | Description |
|---|---|---|
| block_type | String | Type 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_position | Integer | Position of the block on the SERP. |
| keyword | String | Keyword phrase, e.g.,seranking.com (organic)nyc hotels (adv) |
| position | Integer | Domain’s current ranking position for this keyword (organic search or ad position for paid). |
| prev_pos | Integer | Domain’s ranking position for this keyword in the previous month/update period. Can be null for new keywords. |
| volume | Integer | Average monthly search volume for this keyword (e.g., 6600). |
| cpc | Float | Average CPC (Cost Per Click) for this keyword (e.g., 1.08). |
| competition | Float | Score representing keyword competition. Float from 0.00 (low) to 1.00 (high). |
| kei | Float | Keyword Effectiveness Index, a metric combining search volume and competition (e.g., 1.136 for organic). |
| difficulty | Integer | Keyword difficulty for this keyword (usually 0–100). |
| url | String | URL 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_sites | Integer | Total number of websites appearing in search results for this keyword. May be null. |
| traffic | Integer | Estimated monthly traffic this keyword drives to the domain’s ranking URL (e.g., 3 for organic). |
| traffic_percent | Float | Percentage share of the total estimated traffic for this keyword that the domain captures (e.g., 11.11% for organic). |
| price | Float | Estimated traffic value (PPC equivalent) for the keyword. |
| snippet_num | Integer | Numerical identifier or position of the ad snippet (e.g., 579). |
| snippets_count | Integer | Number of ad snippets found for this keyword by the domain (e.g., 1). |
| snippet_title | String | Title text of the advertisement (e.g., Hotels in New York, NY). |
| snippet_description | String | Descriptive text body of the advertisement (e.g., Book your Hotel in New York NY online…). |
| snippet_display_url | String | URL displayed in the advertisement (often a shortened or vanity URL), e.g., www.booking.com/city/us/new-york.html. |
| serp_features | Array | List of SERP features. |
| intents | Array | List of detected search intent codes for the keyword. Intent keys: I – informationalN – navigationalL – localC – commercialT – transactional |
Response example
[
{
"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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| target | String | Yes | N/A | Root domain to analyze (e.g., example.com). |
| scope | String | Yes | N/A | Scope of analysis:base_domain – include all subdomains under the registrable domain.domain – analyze pages under the specified host only. |
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| type | String | No | organic | Data type: organic or adv. |
| order_field | String | No | keywords_count | Field by which the returned page list should be sorted. Accepted values: keywords_count, traffic_sum, traffic_percent, price_sum. |
| order_type | String | No | desc | Sorting order: asc, desc. |
| offset | Integer | No | N/A | Starting position for the paginated list. |
| limit | Integer | No | 1000 | Maximum number of pages to return in a single response. |
| filter[domain_url] | String | No | N/A | JSON string specifying the URL text that must be included. See Text search JSON structure for formatting details. |
| filter[domain_traffic_percent][from] | Float | No | N/A | Minimum percentage of the total domain traffic contributed by the page to be included in the results. |
| filter[domain_traffic_percent][to] | Float | No | N/A | Maximum percentage of the total domain traffic contributed by the page to be included in the results. |
| filter[keywords_count][from] | Integer | No | N/A | Minimum number of ranking keywords for the page to be included in the results. |
| filter[keywords_count][to] | Integer | No | N/A | Maximum number of ranking keywords for the page to be included in the results. |
| filter[traffic_sum][from] | Integer | No | N/A | Minimum estimated monthly traffic for the page to be included in the results. |
| filter[traffic_sum][to] | Integer | No | N/A | Maximum estimated monthly traffic for the page to be included in the results. |
| filter[price_sum][from] | Float | No | N/A | Minimum estimated traffic value (PPC equivalent) for the page to be included in the results. |
| filter[price_sum][to] | Float | No | N/A | Maximum estimated traffic value (PPC equivalent) for the page to be included in the results. |
Request example
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.
| Parameter | Type | Description |
|---|---|---|
| url | String | Full page URL. |
| title | String | Page title as shown in search results. |
| keywords_count | Integer | Total number of keywords the page ranks for. |
| traffic_sum | Integer | Estimated monthly traffic from ranking keywords. |
| traffic_percent | Float | Percentage of total domain traffic attributed to the page. |
| price_sum | Float | Estimated traffic value (PPC equivalent). |
| intents | Object | Distribution of keyword intent types for the page. Intent keys: I – informationalN – navigationalL – localC – commercialT – transactional |
intents object
Each intent key contains aggregated keyword data:
| Field | Type | Description |
|---|---|---|
| count | Integer | Number of keywords matching the intent. |
| traffic | Integer | Estimated traffic from keywords with this intent. |
| percents | Float | Share of this intent within the page’s total keyword set. |
Response example
[
{
"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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| target | String | Yes | N/A | Root domain to analyze (e.g., example.com). |
| scope | String | Yes | N/A | Scope of analysis:base_domain – aggregate subdomains under the registrable domain.domain – aggregate subdomains under the specified host. |
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| type | String | No | organic | Data type: organic or adv. |
| order_field | String | No | keywords_count | Field by which the returned subdomain list should be sorted. Acceptable values: keywords_count, traffic_sum, traffic_percent, price_sum. |
| order_type | String | No | desc | Sorting order: asc or desc. |
| offset | Integer | No | N/A | Starting position for the paginated list. |
| limit | Integer | No | 1000 | Maximum number of subdomains to return in a single response (per page). |
| filter[domain_url] | String | No | N/A | JSON string specifying the subdomain or host text that must be included. See Text search JSON structure for formatting details. |
| filter[domain_traffic_percent][from] | Float | No | N/A | Minimum percentage of the total domain traffic contributed by the subdomain or URL to be included in the results. |
| filter[domain_traffic_percent][to] | Float | No | N/A | Maximum percentage of the total domain traffic contributed by the subdomain or URL to be included in the results. |
| filter[keywords_count][from] | Integer | No | N/A | Minimum number of ranking keywords for the subdomain or URL to be included in the results. |
| filter[keywords_count][to] | Integer | No | N/A | Maximum number of ranking keywords for the subdomain or URL to be included in the results. |
| filter[traffic_sum][from] | Integer | No | N/A | Minimum estimated monthly traffic for the subdomain or URL to be included in the results. |
| filter[traffic_sum][to] | Integer | No | N/A | Maximum estimated monthly traffic for the subdomain or URL to be included in the results. |
| filter[price_sum][from] | Float | No | N/A | Minimum estimated traffic value (PPC equivalent) for the subdomain or URL to be included in the results. |
| filter[price_sum][to] | Float | No | N/A | Maximum estimated traffic value (PPC equivalent) for the subdomain or URL to be included in the results. |
Request example
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.
| Parameter | Type | Description |
|---|---|---|
| url | String | Subdomain or root domain host (e.g., blog.example.com, example.com). |
| keywords_count | Integer | Total number of keywords the subdomain ranks for. |
| traffic_sum | Integer | Estimated monthly traffic from ranking keywords. |
| traffic_percent | Float | Percentage of total domain traffic attributed to the subdomain. |
| price_sum | Float | Estimated traffic value (PPC equivalent). |
Response example
[
{
"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 paid ads by keyword
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| keyword | String | Yes | N/A | Specific keyword for which to retrieve paid ad data. Accepts any valid keyword string (e.g., new york hotels). |
| from | String | No | N/A (implies current/all available data) | Starting year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2017-01). |
| to | String | No | N/A (implies current/all available data) | Ending year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2023-12). |
| page | Integer | No | 1 | Page number for paginated results when retrieving domains advertising on the specified keyword (e.g., 1). Positive integer. |
| limit | Integer | No | 100 | Maximum number of domains advertising on the specified keyword to return per page. Accepts values from 1 to 100 (e.g., 20). |
Request example
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.
| Parameter | Type | Description |
|---|---|---|
| domain | String | Domain name that ran ads for the target keyword (e.g., hotels.com). |
| ads_count | Integer | Total number of unique ad creatives or instances observed from this domain for the target keyword within the specified period (e.g., 19). |
| keywords_count | Integer | Total number of other keywords the domain was also seen advertising on, providing context on the advertiser’s breadth (e.g., 78972). |
| traffic_sum | Integer | Estimation of the total traffic this domain received from its ads for all its keywords, not just the target one (e.g., 3565364). |
| price_sum | Float | Estimated traffic value (PPC equivalent) from paid keywords. |
| snippets.position | Integer | Observed position of the ad snippet on the SERP (e.g., 2). |
| snippets.snippet_title | String | Title text of the specific advertisement (e.g., Booking). |
| snippets.snippet_description | String | Descriptive text body of the specific advertisement (e.g., Stay 10 nights & get 1 free!...). |
| snippets.snippet_display_url | String | URL displayed in the specific advertisement (e.g., www.hotels.com/). |
| snippets.snippet_count | Integer | Count or frequency of this specific snippet being observed (e.g., 1). |
| snippets.url | String | Actual destination URL (landing page) of the specific advertisement (e.g., https://www.hotels.com/). |
Response example
[
{
"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 paid ads for domain
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| domain | String | Yes | N/A | Specific domain for which to retrieve its paid ad data (e.g., booking.com). |
| from | String | No | N/A (implies current/all available data) | Starting year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2017-01). |
| to | String | No | N/A (implies current/all available data) | Ending year and month for the data retrieval period, formatted as YYYY-MM (e.g., 2018-12). |
| page | Integer | No | 1 | Page number for paginated results when retrieving keywords the domain is advertising on (e.g., 1). Positive integer. |
| limit | Integer | No | 100 | Maximum number of keywords the domain is advertising on to return per page. Accepts values from 1 to 100 (e.g., 100). |
Request example
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.
| Parameter | Type | Description |
|---|---|---|
| keyword | String | Keyword phrase that the specified domain was advertising on (e.g., locanda vivaldi venice). |
| ads_count | Integer | Total number of unique ad creatives or instances observed from the specified domain for this keyword within the given period (e.g., 24). |
| competition | Float | Score representing keyword competition. Float from 0.00 (low) to 1.00 (high). |
| cpc | Float | Average CPC (Cost Per Click) for the keyword (e.g., 5.64). |
| volume | Integer | Average monthly search volume for this keyword (e.g., 100). |
| snippets.position | Integer | Observed position of the ad snippet on the SERP (e.g., 2). |
| snippets.snippet_title | String | Title text of the specific advertisement (e.g., Locanda Vivaldi, Venice - Booking.com). |
| snippets.snippet_description | String | Descriptive text body of the specific advertisement (e.g., Book at Locanda Vivaldi, Venice. No reservation costs...). |
| snippets.snippet_display_url | String | URL displayed in the specific advertisement (e.g., www.booking.com/hotel/it/locanda-vivaldi.en.html?a). |
| snippets.snippet_count | Integer | Count or frequency of the specific snippet being observed (e.g., 1). |
| snippets.snippet_num | Integer | Numerical identifier for the specific ad snippet (e.g., 125). |
| snippets.url | String | Actual destination URL (landing page) of the specific advertisement (e.g., http://www.booking.com/hotel/it/locanda-vivaldi.en.html?aid=311088). |
Response example
[
{
"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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| domain | String | Yes | N/A | Primary domain for which to find competitors (e.g., seranking.com). |
| type | String | No | organic | Type of data to retrieve: organic search results (organic) or paid search results (adv). |
| stats | String/Integer | No | 0 | Flag to control the level of detail in the response:0 – include basic info: domain & common keywords only1 – include additional statistical parameters |
Request example
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):
| Parameter | Type | Description |
|---|---|---|
| domain | String | Domain name of the competitor (e.g., tripadvisor.com). |
| common_keywords | Integer | Number 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):
| Parameter | Type | Description |
|---|---|---|
| domain | String | Domain name of the competitor (e.g., tripadvisor.com). |
| common_keywords | Integer | Number of keywords for which both the analyzed domain and the competitor rank (e.g., 1076). |
| total_keywords | Integer | Total number of keywords for which the competitor domain ranks within Google’s top 100 results in the specified database (e.g., 2084). |
| traffic_sum | Integer | Estimated 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_sum | Float | Estimated traffic value (PPC equivalent) of the competitor’s traffic. |
Response examples
Overview/history (basic – stats=0):
[
{
"domain": "competitorA.com",
"common_keywords": 1076
},
{
"domain": "competitorB.net",
"common_keywords": 850
}
]
Overview/history (with extra status – stats=1):
[
{
"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
domain or url must be specified.
When one option is provided, the other is ignored.| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| source | String | Yes | N/A | Country code of the regional keyword database (e.g., us). For acceptable values, see Regional database codes. |
| domain | String | No | N/A | Primary domain for the comparison (e.g., booking.com). |
| url | String | No | N/A | Primary full URL for the comparison (e.g., https://www.booking.com). |
| compare | String | Yes | N/A | Competitor domain or full URL to compare against the primary domain or URL. Must match the type of the primary parameter (domain or url). |
| type | String | No | organic | Type of data to retrieve: organic search traffic (organic) or paid search traffic (adv). |
| page | Integer | No | 1 | Page number for paginated results when retrieving keywords (e.g., 1). Positive integer. |
| limit | Integer | No | 100 | Maximum number of keywords to return per page (e.g., 50). Accepts values from 1 to 1000. |
| diff | String | No | 0 | Controls the comparison mode. Accepts values: 0, 1. See the section below for a detailed explanation. |
| order_field | String | No | keyword | Specifies the field by which to sort the results:keyword, volume, cpc, competition, difficulty, position. |
| order_type | String | No | asc | Specifies the sort order for the results: asc, desc. |
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 tip: How 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:
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:
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).
| Parameter | Type | Description |
|---|---|---|
| keyword | String | Analyzed keyword phrase (e.g., haworth hotel holland mi). |
| volume | Integer | Average monthly number of Google searches for the specified keyword (e.g., 10). |
| cpc | Float | CPC (Cost Per Click) for the keyword (e.g., 3.01). |
| competition | Float | Score representing keyword competition. Float from 0.00 (low) to 1.00 (high). |
| difficulty | Integer | Keyword difficulty for this keyword (from 0 to 100). |
| total_sites | Integer | Total number of websites appearing in the search results for the query (e.g., 94). |
| position | Integer | Ranking position of the primary domain for the keyword (e.g., 4). Can be null if diff=1 and primary domain doesn’t rank. |
| url | String | URL 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. |
| price | Float | Estimated cost/value of the traffic the primary domain receives from this keyword (e.g., 2.44). Can be null if diff=1. |
| traffic | Float | Estimated traffic the primary domain receives from this keyword (e.g., 0.81). Can be null if diff=1. |
| compare_position | Integer | Ranking position of the compare domain for this keyword (e.g., 5). |
| compare_url | String | URL of the compare domain’s page that ranks for this keyword (e.g., https://www.hotels.com/ho576868/haworth/). |
| compare_price | Float | Estimated cost/value of the traffic the compare domain receives from this keyword (e.g., 1.84). |
| compare_traffic | Float | Estimated 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.
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'
[
{
"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.
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'
[
{
"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:
{"type": "begins","value": "google"}Object properties
| Name | Description |
|---|---|
| object.value | Contains the text value to be searched. |
| object.type | Specifies the type of search to be performed. |
List of possible object.type variants
| Name | Description |
|---|---|
| begins | Searched text should start with the specified value. |
| contains | Searched text should contain the specified value anywhere within the text. |
| ends | Searched text should end with the specified value. |
| exact | Searched 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:
[
[
{"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"}]].
