API Description

Competitor SEO/PPC Research

Competitor SEO/PPC research API allows to get competitor and keyword statistics from organic and paid search results in a convenient form. 

To access the section, you should have an active subscription or positive account balance.

Errors

HTTP codeError message
403 License expired

Domain overview (all databases)

Description

The method allows to get data on all databases related to the domain.

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/overview?domain=seranking.com

Request parameters

NameRequiredDescription
domainYesDomain

Result

If successful, the server returns a list of available databases and the total number of keywords in each database.

Example

Title of the code block
Copy
[{ "source": "us", "year_month": "2018-10", "organic": { "count": 790, "traffic": 3149, "cost": 23167.97 }, "adv": { "count": 140, "traffic": 2968, "cost": 17795.26 } }]

Response parameters

NameDescription
sourceAlpha-2 code of the country you’re checking 
year_monthYear and month of database data
organicOrganic traffic data
advPaid traffic data
countTotal number of keywords
trafficTraffic forecast
costCost estimate 

Errors

HTTP codeError message
400Invalid domain

Domain overview (selected database)

Description 

This method returns keyword statistics for organic or paid traffic for the selected database.

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/{source}/overview/?domain=domain.com

Request parameters

NameRequiredDescription
sourceYesAlpha-2 code of the country you’re checking 
domainYesDomain
with_subdomainsNo1 – take subdomains into account (by default)0 – not take subdomains into account

Result

If successful, the server returns keyword statistics for organic or paid traffic for the selected database.

Example

Title of the code block
Copy
{
"organic": {
"keywords_new_count": 182,
"keywords_up_count": 292,
"keywords_equal_count": 55,
"keywords_lost_count": 282,
"top11_20": 127,
"top51_100": 331,
"keywords_down_count": 558,
"top1_5": 25,
"top21_50": 270,
"top6_10": 52,
"count": 790,
"traffic": 3149,
"cost": 23167.97
},
"adv": {
"keywords_new_count": 91,
"keywords_up_count": 17,
"keywords_equal_count": 18,
"keywords_lost_count": 62,
"top11_20": 0,
"top1_2": 53,
"top51_100": 0,
"keywords_down_count": 76,
"top1_5": 121,
"top21_50": 0,
"top3_5": 68,
"top6_8": 19,
"top9_11": 0,
"top6_10": 19,
"count": 140,
"traffic": 2968,
"cost": 17795.26
}
}

Response parameters

NameDescription
organicOrganic traffic data
advPaid traffic data
countTotal number of keywords
trafficTraffic forecast
costCost estimate 
top1_5Total number of keywords ranked 1-5
top6_10Total number of keywords ranked  6-10
top11_20Total number of keywords ranked 11-20
top1_2Total number of keywords ranked 1, 2 (for paid traffic)
top3_5Total number of keywords ranked 3, 4, 5 (for paid traffic)
top6_8Total number of keywords ranked 6, 7, 8 (for paid traffic)
top9_11Total number of keywords ranked 9, 10, 11 (for paid traffic)
keywords_new_countTotal number of keywords
keywords_lost_countTotal number of keywords dropped from SERPs
keywords_equal_countRanking positions are unchanged
keywords_up_countRanking position rise
keywords_down_countRanking position drop

Errors

HTTP codeError message
400Invalid domain
404Invalid source

Domain overview (worldwide)

Description

The method allows you to get the domain’s worldwide statistics for the current month.

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/worldwide-overview?domain=seranking.com&fields=price,traffic,keywords,positions_diff,positions_tops&show_zones_list=0¤cy=USD

Request parameters

NameRequiredDescription
domain       YesDomain
currency   NoISO 4217 currency code. Default value: USD       
fields    NoComma-separated list of expected fields. 
Default value: price,traffic,keywords.

List of field values:
price – show traffic price valuetraffic – show traffic valuekeywords – show keywords statspositions_diff – shows position changes fieldspositions_tops – shows position tops
show_zones_list NoBoolean value to determine if the response should include stats for each zone or only worldwide. Default value: ‘0’

Result

If successful, the server returns organic and adv stat lists. The lists include worldwide and statistics per zone (if show_zones_list is 1).

Example:

Title of the code block
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 }
}
]
}

Domain overview (history)

Description

The method allows to get historical data on parameters (number of keywords, clicks, cost) for organic or paid traffic. 

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/{source}/overview/history/?domain=domain.com&type=organic

Request parameters

NameRequiredDescription
sourceYesAlpha-2 code of the country you’re checking  
domainYesDomain
typeNoorganic – organic traffic data (default)adv – paid traffic data

Result

If successful, the server returns historical data on certain parameters for organic or paid traffic.

Example:

Title of the code block
Copy
[{ "keywords_count": 51, "traffic_sum": 184, "price_sum": 1095.87, "year": 2016, "month": 9, "top1_2": 13, "top3_5": 18, "top6_8": 20, "top9_11": 0 }]

Response parameters

NameDescription
keywords_countNumber of keywords
traffic_sumTraffic forecast
price_sumCost estimate 
yearYear
monthMonth
top1_5Total number of keywords ranked 1-5
top6_10Total number of keywords ranked 6-10
top11_20Total number of keywords ranked 11-20
top21_50Total number of keywords ranked 21-50
top51_100Total number of keywords ranked 51-100
top1_2Total number of keywords ranked 1, 2 (for paid traffic)
top3_5Total number of keywords ranked 3, 4, 5 (for paid traffic)
top6_8Total number of keywords ranked 6, 7, 8 (for paid traffic)
top9_11Total number of keywords ranked 9, 10, 11 (for paid traffic)

Errors

HTTP code Error message
400Invalid domain
404Invalid source

Domain keywords

Description

This method allows to get a list of keywords for a domain.

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/{source}/keywords/?domain=domain.com&type=organic&order_field=position&order_type=desc&cols=position,prev_pos

Request parameters

NameRequiredDescription
sourceYesAlpha-2 code of the country you’re checking 
domainYesDomain
typeNoorganic – organic traffic data (default)adv – paid traffic data
order_fieldNoSort field (traffic by default)
order_typeNoasc or desc (by default)
pageNoResults page (by default – 1)
limitNoNumber of elements (by default – 100, max. 1000)
colsNoList of return values (comma-separated)
pos_changeNoPosition change filter.
up – position growthdown – position dropnew – new in the SERPlost – dropped out of the SERPdiff – positions have changedsame – positions have not changed
filter[volume][from]NoSpecifies the minimum search volume value.Type: int
filter[volume][to]NoSpecifies the maximum search volume value.Type: int
filter[difficulty][from]NoSpecifies the minimum search difficulty value.Type: int
filter[difficulty][to]NoSpecifies the maximum search difficulty value.Type: int
filter[keyword_count][from]NoSpecifies the minimum search keyword count value.Type: int
filter[keyword_count][to]NoSpecifies the minimum search keyword count value.Type: int
filter[multi_keyword_included]NoSpecifies keyword text included in the search based on the JSON structure (more information in the Text search JSON structure section). Type: json
filter[multi_keyword_excluded]NoSpecifies keyword text excluded from the search based on the JSON structure (more information in the Text search JSON structure section). Type: json
filter[url]NoSpecifies text search in URL based on the JSON structure (more information in the Text search JSON structure section). The structure should have only one element in the base array, so no OR logic.Type: json
filter[intents]NoList of keyword search intents separated by a comma. Example I, N, T, C, L, where:
I – InformationalN – NavigationalT – TransactionalC – CommercialL – Local
Type: string
filter[competition][from]NoSpecifies the minimum search competition value.Type: float
filter[competition][to]NoSpecifies the maximum search competition value.Type: float
filter[cpc][from]NoSpecifies the minimum search CPC value.Type: float
filter[cpc][to]NoSpecifies the maximum search CPC value.Type: float
filter[traffic][from]NoSpecifies the minimum search traffic value.Type: int
filter[traffic][to]NoSpecifies the maximum search traffic value.Type: int
filter[position][from]NoSpecifies the minimum search position value.Type: int
filter[position][to]NoSpecifies the maximum search position value.Type: int
filter[characters_count][from]NoSpecifies the minimum search keyword character count value.Type: int
filter[characters_count][to]NoSpecifies the maximum search keyword character count value.Type: int

Result

If successful, the server returns a list of keywords for the specified domain and its parameters.

Example

Title of the code block
Copy
[
{
keyword: "seranking.com",
position: 1,
prev_pos: 1,
volume: "10",
cpc: "0.00",
competition: "0.00",
url: "https://seranking.com/",
kei: 1.136,
total_sites: 88,
traffic: 3,
traffic_percent: "11.11%",
price: 0,
},
]

Response parameters

NameDescription
keywordKeyword
positionPosition
prev_posPosition in the previous month
volumeVolume
cpcCPC
competitionCompetition
urlURL
keiKEI
total_sitesTotal number of sites for query
trafficTraffic
traffic_percentTraffic share
priceCost

For paid traffic (type=adv), you get information about the ad in addition to the parameters above.

Example

Title of the code block
Copy
[
{
"keyword": "nyc hotels",
"position": 4,
"prev_pos": 4,
"volume": "550000",
"cpc": "3.75",
"competition": "0.16",
"url": "https://www.booking.com/city/us/new-york.html",
"kei": 355.464,
"total_sites": 851000000,
"traffic": 11000,
"traffic_percent": "0.96%",
"price": 41250,
"block": "top",
"snippet_num": 579,
"snippets_count": 1,
"snippet_title": "Hotels in New York, NY | Lowest Price Guarantee.‎",
"snippet_description": "Book your Hotel in New York NY online. No reservation costs. Great rates. 24/7 Customer Service. Hotels. Secure Booking. Villas. Hostels. No Booking Fees. Best Price Guarantee.",
"snippet_display_url": "www.booking.com/city/us/new-york.html"
}
]
blocktop | bottom – ad type
snippet_numAd number
snippets_countNumber of ads
snippet_titleAd title
snippet_descriptionAd text
snippet_display_urlDisplayed ad URL

Errors

HTTP code Error message
400Incorrect order
400Row limit exceeded
400Invalid domain
400Invalid source

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 layer of the array corresponds to elements separated by logical OR, while the second layer corresponds to elements with logical AND. Each object within the array has the following structure:

Title of the code block
Copy
{"type":"begins","value":"google"}
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
beginsThe searched text should start with the specified value.
containsThe searched text should contain the specified value anywhere within the text.
endsThe searched text should end with the specified value.
exactThe searched text should exactly match the specified value.

Description

The method allows to get an overview of paid ads for a keyword.

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/{source}/advertising/?keyword=seo

Request parameters

NameRequiredDescription
keywordYesKeyword
fromNoYear and month of the beginning of the period (2017-01)
toNoYear and month of the end of the period (2018-12)
pageNoResults page (by default – 1)
limitNoNumber of elements (by default – 100, maximum 100)

Result

If successful, the server returns an overview of paid ads for the specified keyword.

Example

Title of the code block
Copy
[
{
domain:"hotels.com",
ads_count: 19,
keywords_count: 78972,
traffic_sum: 3565364,
price_sum: 10411189,
snippets:{
'2018 - 11': {
position:2,
snippet_title: "Booking | Hotels.com‎",
snippet_description: "Stay 10 nights & get 1 free! Redeem your reward night anytime, anywhere. Last Minute Hotel Deals. Exclusive Deals. Photos & Reviews. Price Guarantee. Earn Free Hotel Nights. Guest Reviews. No Cancellation Fees. Travel Guides. Luxury Hotels. Budget Hotels.",
snippet_display_url: "www.hotels.com/",
snippet_count: "1",
url: "https://www.hotels.com/"
},
},
},
]

Response parameters

NameDescription
domainDomain
ads_countNumber of ads
keywords_countNumber of keywords
traffic_sumTraffic
price_sumBudget
snippetsList of ads of a domain
snippet_numAd number
snippets_countNumber of ads
snippet_titleAd title
snippet_descriptionAd text
snippet_display_urlDisplayed ad URL
urlLink

Errors

HTTP code Error message
400Row limit exceeded
400Invalid domain
400Invalid source

Description

The method allows to get an overview of paid ads for a domain.

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/{source}/advertising/?domain=booking.com

Request parameters

NameRequiredDescription
domainYesDomain
fromNoYear and month of the beginning of the period (2017-01)
toNoYear and month of the end of the period (2018-12)
pageNoResults page (by default – 1)
limitNoNumber of elements (by default – 100, maximum 100)

Result

If successful, the server returns an overview of paid ads for the specified domain.

Example

Title of the code block
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"}]

Response parameters

NameDescription
keywordKeyword
ads_countNumber of ads in total
competitionCompetition
cpcCPC
volumeVolume
snippetsList of ads of a domain
snippets_countNumber of ads of a domain
snippet_titleAd title
snippet_descriptionAd text
snippet_display_urlDisplayed ad URL
urlLink

Errors

HTTP codeError message
400Row limit exceeded
400Invalid keyword
400Invalid source

Competitors

Description

The method allows to get a list of competitor domains (maximum 500).

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/{source}/competitors?domain=booking.com&type=adv

Request parameters

NameRequiredDescription
domainYesDomain
typeNoorganic – organic traffic data (default)adv – paid traffic data
big_playersNo0 – hide major players (by default)1 – show major players
             
statsNo0 – only the list of domains and the number of common keywords (by default)1 – extra parameters

Result

If successful, the server returns a list of competitor domains.

Example

Title of the code block
Copy
[ {  "domain": "tripadvisor.com",  "common_keywords": 1076}]

..stats =1

Title of the code block
Copy
[{ "domain": "tripadvisor.com", "common_keywords": 1076, "total_keywords": 2084, "traffic_sum": 291, "price_sum": 40.12 }]

Response parameters

NameDescription
domainCompetitor domain
common_keywordsKeywords used both by the analyzed site and its competitors
total_keywordsThe total number of keywords for which competitors rank for on Google’s top 100
traffic_sumEstimated traffic volume for a site with existing keywords. It’s calculated by the formula of the expected CTR (click-through rate), volume and current positions
price_sumEstimated monthly cost of selected ads based on the number of keywords, their cost and traffic

Errors

HTTP code Error message
400Invalid domain
400Invalid source

Domain comparison

Description

The method allows to get a list of keywords for two domains.

Request format

Title of the code block
Copy
GET https://api4.seranking.com/research/{source}/competitors/compare?domain=booking.com&compare=google.com&type=adv

Request parameters

NameRequiredDescription
domainYesDomain
compareYesCompetitor domain
typeNoorganic – organic traffic data (default)adv – paid traffic data
pageNoResults page (by default – 1)
limitNoNumber of elements (by default – 100, max. 1000)
colsNoList of return values (comma-separated)
diffNo0 – common keywords for domain and compare domains (by default)1 – keywords for compare domain that are missing for domain

Result

If successful, the server returns a list of keywords for two domains.

Example

Title of the code block
Copy
[
{
"keyword": "haworth hotel holland mi",
"volume": 10,
"cpc": "3.01",
"competition": "0.38",
"kei": 1.064,
"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
}
]

Response parameters

NameDescription
keywordAnalyzed keyword
keiKEI (Keyword Effectiveness Index) 
competitionCompetition
cpcCPC (Cost per Click) 
volumeMonthly number of Google searches that occur for the specified keyword 
total_sitesTotal number of sites for the query
positionPosition 
urlURL of the page that is ranked on Google for the specified keyword
priceCost
trafficTraffic
compare_positionPosition of the compared domain
compare_urlPage URL of the compared domain 
compare_priceTraffic cost of the compared domain
compare_trafficTraffic of the compared domain

Errors

HTTP code Error message
400Invalid domain
400Invalid source