Data API / DataForSEO / DataForSEO Labs
Historical Keyword Data
How a keyword's own metrics - volume, competition, cpc - moved over time. This one takes no limit parameter, but it is priced per call rather than per item, so send the whole list at once. Wrapped in DataForSEO's envelope: data in tasks[0].result, outcome in tasks[0].status_code - a rejected request still returns HTTP 200. This tracks the keyword; post_dataforseo_labs_google_historical_rank_live tracks a domain. For the current values use post_dataforseo_labs_google_keyword_overview_live.
Parameters
No path, query, or header parameters.
Request body
keywordsstring[]Requiredkeywords required field The maximum number of keywords you can specify: 700 The maximum number of characters for each keyword: 80 The maximum number of words for each keyword phrase: 10 the specified keywords will be converted to lowercase format, data will be provided in a separate array note that if some of the keywords specified in this array are omitted in the results you receive, then our database doesn’t contain such keywords and cannot return data on them you will not be charged for the keywords omitted in the results learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article
location_namestringOptionalfull name of the location required field if you don’t specify location_code Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_name by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages example: United Kingdom
location_codeintegerOptionallocation code required field if you don’t specify location_name Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_code by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages example: 2840
language_namestringOptionalfull name of the language required field if you don’t specify language_code Note: it is required to specify either language_name or language_code you can receive the list of available locations with their language_name by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages example: English
language_codestringOptionallanguage code required field if you don’t specify language_name Note: it is required to specify either language_name or language_code you can receive the list of available locations with their language_code by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages example: en
tagstringOptionaluser-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response
Example request
curl -X POST "https://openapi.felo.ai/v1/beta/dataforseo/dataforseo_labs/google/historical_keyword_data/live" \
-H "Authorization: Bearer $FELO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keywords": [
"<string>"
],
"location_name": "<string>",
"location_code": 0,
"language_name": "<string>",
"language_code": "<string>",
"tag": "<string>"
}'Response
Response fields
versionstringOptionalthe current version of the API
status_codeintegerOptionalgeneral status code you can find the full list of the response codes here Note: we strongly recommend designing a necessary system for handling related exceptional or error conditions
status_messagestringOptionalgeneral informational message you can find the full list of general informational messages here
timestringOptionalexecution time, seconds
costnumberOptionaltotal tasks cost, USD
tasks_countintegerOptionalthe number of tasks in the tasks array
tasks_errorintegerOptionalthe number of tasks in the tasks array returned with an error
tasksstring[]Optionalarray of tasks
idstringOptionaltask identifier unique task identifier in our system in the UUID format
status_codeintegerOptionalstatus code of the task generated by DataForSEO; can be within the following range: 10000-60000 you can find the full list of the response codes here
status_messagestringOptionalinformational message of the task you can find the full list of general informational messages here
timestringOptionalexecution time, seconds
costnumberOptionalcost of the task, USD
result_countintegerOptionalnumber of elements in the result array
pathstring[]OptionalURL path
dataobjectOptionalcontains the same parameters that you specified in the POST request
resultstring[]Optionalarray of results
se_typestringOptionalsearch engine type
location_codeintegerOptionallocation code in a POST array
language_codestringOptionallanguage code in a POST array
items_countintegerOptionalthe number of results returned in the items array
itemsstring[]Optionalcontains keywords and related data
se_typestringOptionalsearch engine type
keywordstringOptionalkeyword keyword is returned with decoded %## (plus character ‘+’ will be decoded to a space character)
location_codeintegerOptionallocation code in a POST array if there is no data, then the value is null
language_codestringOptionallanguage code in a POST array
historystring[]Optionalarray of objects with historical data for the keyword
yearintegerOptionalyear
monthintegerOptionalmonth
keyword_infoobjectOptionalhistorical data for the keyword
se_typestringOptionalsearch engine type
last_updated_timestringOptionaldate and time when keyword data was updated in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2019-11-15 12:57:46 +00:00
competitionnumberOptionalcompetition represents the relative amount of competition associated with the given keyword; the value is based on Google Ads data and can be between 0 and 1 (inclusive)
competition_levelstringOptionalcompetition level represents the relative level of competition associated with the given keyword in paid SERP only; possible values: LOW, MEDIUM, HIGH if competition level is unknown, the value is null; learn more about the metric in this help center article
cpcnumberOptionalcost-per-click represents the average cost per click (USD) historically paid for the keyword
search_volumeintegerOptionalaverage monthly search volume rate represents the (approximate) number of searches for the given keyword idea on google.com
low_top_of_page_bidnumberOptionalminimum bid for the ad to be displayed at the top of the first page indicates the value greater than about 20% of the lowest bids for which ads were displayed (based on Google Ads statistics for advertisers) the value may differ depending on the location specified in a POST request
high_top_of_page_bidnumberOptionalmaximum bid for the ad to be displayed at the top of the first page indicates the value greater than about 80% of the lowest bids for which ads were displayed (based on Google Ads statistics for advertisers) the value may differ depending on the location specified in a POST request
categoriesstring[]Optionalproduct and service categories you can download the full list of possible categories
monthly_searchesstring[]Optionalmonthly searches represents the (approximate) number of searches on this keyword idea (as available for the past twelve months), targeted to the specified geographic locations
yearintegerOptionalyear
monthintegerOptionalmonth
search_volumeintegerOptionalmonthly average search volume rate
search_volume_trendobjectOptionalsearch volume trend changes represents search volume change in percent compared to the previous period
monthlyintegerOptionalsearch volume change in percent compared to the previous month
quarterlyintegerOptionalsearch volume change in percent compared to the previous quarter
yearlyintegerOptionalsearch volume change in percent compared to the previous year