URL keywords
The SerpstatUrlProcedure.getUrlKeywords method returns a list of keywords for which the specified URL ranks in the top-100 Google and top-50 Bing search results. It provides insights into the organic search performance of a page and is ideal for keyword research, content optimization, and competitor analysis. The data set is similar to the URL analysis — SEO research — Keywords report.
Use Case: Expand Your Keyword List with Ease
1. Analyze a Competitor: Identify a relevant competitor's page.
2. Extract Keywords: Use SerpstatUrlProcedure.getUrlKeywords to extract keywords.
3. Filter for Quality: Apply filters to select the best keywords.
4. Expand Your List: Incorporate these keywords into your existing list.
General request parameters and instructions for using Serpstat API
Search databases available
Request parameters | |||||
Parameter | Description | Type | Required | Default value | Value Options |
id | A request id: the response contains the same id. | int/string | yes | any text or number value | |
method | API method name | string | yes | SerpstatUrlProcedure.getUrlKeywords | |
params | The object with parameters {...}, it lists all the following parameters and arrays [...] | array | yes |
| |
se | ID of the search base to be searched | string | yes | g_us (search databases list) | |
url | Analyzed page URL | string | yes | URL-address of the page | |
filters | Filter conditions | array | no | no filtration | filter conditions are listed in the next table |
sort | Sort by data (ascending and descending) | array | no | "traff" | "difficulty" - Sort the results by the level of keywords competition level to advance in organic search in the top-10 |
order | Sort direction | array | no | "desc" | asc or desc |
page | Page number in response | int | no | 1 | any number value |
size | Number of results per page in response | int | no | 100 | number value in the range of 1-1000 |
Filter conditions parameters | |||
Parameter | Description | Type | Value Options |
cost | Cost per click (in US $; exact match) | float | any number value |
cost_from | Cost per click (in US $; exact match) from | float | any number value |
cost_to | Cost per click (in US $; exact match) to | float | any number value |
position | URL's position in Google`s top-100 results for this keyword. | int | any whole number in the range of 1-100 |
position_from | Keyword position from | int | any whole number in the range of 1-100 |
position_to | Keyword position to | int | any whole number in the range of 1-100 |
concurrency | PPC Competition. Shows how difficult it would be to compete for this keyword. Max 100. The more domains use this keyword in their ads campaigns, the higher level of competition is. | int | any whole number in the range of 1-100 |
concurrency_from | PPC Competition from | int | any whole number in the range of 1-100 |
concurrency_to | PPC Competition to | int | any whole number in the range of 1-100 |
keyword_length | Number of words in the keyword | int | any number value |
difficulty | The assessment of the level of competition for a keyword to advance in organic search in the top-10. It is measured on a scale from 0 to 100, where: 0-20 easy; 21-40 - medium; 41-60 - difficult; 61-100 - very difficult. More info adout difficulty of the keyword. | float | any number value in the range of 1-100 |
difficulty_from | The difficulty of the keyword from | float | any number value in the range of 1-100 |
difficulty_to | The difficulty of the keyword to | float | any number value in the range of 1-100 |
traff | Approximate traffic by keyword depending on its volume and position | int | any whole number |
region_queries_count | Volume of the keyword by the selected region | int | any whole number |
region_queries_count_from | Volume of the keyword by the selected region from | int | any whole number |
region_queries_count_to | Volume of the keyword by the selected region to | int | any whole number |
region_queries_count_wide | Volume of the keyword in broad match | int | any whole number |
region_queries_count_wide_from | Volume of the keyword in broad match from | int | any whole number |
region_queries_count_wide_to | Volume of the keyword in broad match to | int | any whole number |
url_contains | The exact website pages ranking for the keywords | string | any text value |
right_spelling | Display or not to display misspelled keywords | boolean | true or false |
keyword_contain | Contains all keywords(exact matching) | string | any text value |
keyword_not_contain | Does not contain all keywords (exact matching) | string | any text value |
keyword_contain_one_of | Contains one of the keywords (exact matching) | string | any text value |
keyword_not_contain_one_of | Does not contain one of the keywords (exact matching) | string | any text value |
keyword_contain_broad_match | Contains all keywords (broad match) | string | any text value |
keyword_not_contain_broad_match | Does not contain all keywords (broad match) | string | any text value |
keyword_contain_one_of_broad_match | Contains one of the keywords (broad match) | string | any text value |
keyword_not_contain_one_of_broad_match | Does not contain one of the keywords (broad match) | string | any text value |
Response parameters | |
Parameter | Description |
id | Response id: corresponds the request id |
result | Contains the answer |
data | Array with data |
domain | Domain by which the information was received |
subdomain | Subdomain which ranks for the keyword |
keyword | Keyword which the URL ranks for |
keyword_length | Number of words divided by space in a keyword |
url | URL appeared in the search result for the query |
position | URL's position for a keyword |
types | List of special elements shown in SERP (for example, video, carousel or map) |
found_results | Number of results found for keyword |
cost | Cost per click, $ (the indicator is updated every month) |
concurrency | Keyword competition in the PPC (0-100) |
region_queries_count | Search volume in selected region |
region_queries_count_wide | Search volume (broad match) |
geo_names | List of toponyms in the array (if toponyms are present in the keywords) |
traff | Approximate traffic by keyword depending on its volume and position |
difficulty | The assessment of the level of competition for a keyword to advance in organic search in the top-10 (from 0 to 100%) |
first_position | The domain position of which is better than the one you are looking for was found by the keyword. |
first_url | The url position of which is better than the one you are looking for was found by the keyword. |
dynamic | How the position of this keyword has changed (New position — null, Position did not change — 0, Position dropped — negative value (e.g. -20), Position increased — positive value (e.g. 20)) |
summary_info | Object with data |
page | Page number |
total | Number of found keywords ranking the given domain in top |
left_lines | API credits remaining |
Possible errors in response | |
Error's code | Description |
400 | JSON RPC 2.0 Request invalid payload. Oops! Something went wrong with your search. Please double-check your spelling and make sure you're using the correct format for each field |
32017 | Data not found. Please verify your search terms or try a different query. |
Credits: the number of charged credits corresponds to the number of results obtained upon request. With the Serpstat API, you can only get the first 60,000 results, regardless of the number and size of the queries themselves. For more data - use the export option in the Domain Analysis, Keyword Analysis, or URL Analysis sections, or contact the manager for a personal upload of the results.
Part of the API response, for which 1 credit is charged:
{
"domain": "nike.com",
"subdomain": "www.nike.com",
"keyword": "man nike",
"keyword_length": 2,
"url": "https://www.nike.com/men",
"position": 1,
"types": [
"snip_breadcrumbs"
],
"found_results": 656000000,
"cost": 0.38,
"concurrency": 100,
"region_queries_count": 40500,
"region_queries_count_wide": 0,
"geo_names": [],
"traff": 6071,
"difficulty": null,
"dynamic": 0
},
{
"id": "1",
"method": "SerpstatUrlProcedure.getUrlKeywords",
"params": {
"se": "g_us",
"url": "https://www.nike.com/men",
"filters": {"cost_from": 1, "cost_to": 1000},
"sort": {"position": "asc"},
"page": "1",
"size": "10"
}
}
{
"id": "1",
"result": {
"data": [
{
"domain": "nike.com",
"subdomain": "www.nike.com",
"keyword": "nike shoes online purchase",
"keyword_length": 4,
"url": "https://www.nike.com/men",
"position": 2,
"types": [
"twitter",
"carousel",
"shopping_rhs",
"pic",
"also_asks",
"snippet_breadcrumbs"
],
"found_results": 66200000,
"cost": 1.3799999999999999,
"concurrency": 92,
"region_queries_count": 10,
"region_queries_count_wide": null,
"geo_names": [],
"traff": 1,
"difficulty": 90.036638012173825,
"first_position": 1,
"first_url": "https://www.nike.com/",
"dynamic": 0
},
{
"domain": "nike.com",
"subdomain": "www.nike.com",
"keyword": "shoes for men us",
"keyword_length": 4,
"url": "https://www.nike.com/men",
"position": 2,
"types": [
"kn_graph_carousel_list",
"a_box_card",
"snip_breadcrumbs"
],
"found_results": 1660000000,
"cost": 2.0435020000000002,
"concurrency": 100,
"region_queries_count": 110,
"region_queries_count_wide": null,
"geo_names": [],
"traff": 15,
"difficulty": 65.138039166735581,
"dynamic": 3
}
],
"summary_info": {
"page": 3,
"total": 217,
"left_lines": 999998
}
}
}