Historical Google Keywords Database
Historical Google Keyword Databases can provide you with billions of keywords enriched with historical keyword data: search volume, competition, and more.
Note that historical data is available starting from 08-2021.
This database is available in JSON format only.
Click here to download a database sample for the US location, English language.
You can also download the full list of supported locations in the CSV format (last updated 2025-08-05).
The database in JSON contains data structured like in the example below:
{
"keyword": "huckleberry bookstore",
"location": 2124,
"language": "fr",
"spell": null,
"spell_type": null,
"keyword_info_history": {
"202203": {
"search_volume": 480,
"cpc": null,
"competition": 0.12,
"competition_level": "LOW",
"low_top_of_page_bid": null,
"high_top_of_page_bid": null,
"time_update": "2022-05-10T19:17:54.2726860Z",
"categories": [],
"history": {
"202105": 390,
"202106": 390,
"202107": 390,
"202108": 390,
"202109": 390,
"202110": 390,
"202111": 590,
"202112": 880,
"202201": 590,
"202202": 390,
"202203": 480,
"202204": 480
}
},
"202204": {
"search_volume": 480,
"cpc": null,
"competition": 0.12,
"competition_level": "LOW",
"low_top_of_page_bid": null,
"high_top_of_page_bid": null,
"time_update": "2022-06-02T23:21:21.7580528Z",
"categories": [],
"history": {
"202105": 390,
"202106": 390,
"202107": 390,
"202108": 390,
"202109": 390,
"202110": 390,
"202111": 590,
"202112": 880,
"202201": 590,
"202202": 390,
"202203": 480,
"202204": 480
}
},
"202205": {
"search_volume": 480,
"cpc": null,
"competition": 0.06,
"competition_level": "LOW",
"low_top_of_page_bid": null,
"high_top_of_page_bid": null,
"time_update": "2022-06-15T14:14:14.8835515Z",
"categories": [],
"history": {
"202106": 390,
"202107": 390,
"202108": 390,
"202109": 390,
"202110": 390,
"202111": 590,
"202112": 880,
"202201": 590,
"202202": 390,
"202203": 480,
"202204": 480,
"202205": 480
}
},
"202206": {
"search_volume": 480,
"cpc": null,
"competition": 0.13,
"competition_level": "LOW",
"low_top_of_page_bid": null,
"high_top_of_page_bid": null,
"time_update": "2022-07-12T18:44:24.3630256Z",
"categories": [],
"history": {
"202107": 390,
"202108": 390,
"202109": 390,
"202110": 390,
"202111": 590,
"202112": 880,
"202201": 590,
"202202": 390,
"202203": 480,
"202204": 480,
"202205": 480,
"202206": 390
}
},
"202302": {
"search_volume": 480,
"cpc": null,
"competition": 0.23,
"competition_level": "LOW",
"low_top_of_page_bid": null,
"high_top_of_page_bid": null,
"time_update": "2023-03-21T23:09:18.9404970Z",
"categories": [
10016,
10141,
10763,
10108,
10112,
10609
],
"history": {
"202203": 390,
"202204": 480,
"202205": 390,
"202206": 390,
"202207": 390,
"202208": 390,
"202209": 390,
"202210": 480,
"202211": 590,
"202212": 880,
"202301": 590,
"202302": 480
}
}
},
"extra": {
"core_keyword": null,
"detected_language": "en",
"keyword_difficulty": 15
},
"search_intent_info": {
"main_intent": "commercial",
"foreign_intent": [],
"last_updated_time": "2023-03-04T13:14:40.0735962Z"
}
}
Description of the fields in the database:
| Field name | Type | Description |
|---|---|---|
keyword |
string | keyword UTF-8 encoding applies |
location |
integer | location code unique identifier of the corresponding location you can receive the list of available locations with their location_code by a GET request tohttps://api.dataforseo.com/v3/dataforseo_labs/locations_and_languagesexample: 2840 corresponds to the United States |
language |
string | language code unique identifier of the language available for the corresponding location you can receive the list of available locations with their language_code by a GET request tohttps://api.dataforseo.com/v3/dataforseo_labs/locations_and_languagesexample: en corresponds to English |
spell |
string | autocorrection of the search engine if the search engine provided results for a keyword that was corrected, we will provide the keyword corrected by the search engine and the type of autocorrection |
spell_type |
string | type of autocorrection possible values: did_you_mean, showing_results_for, no_results_found_for
|
keyword_info_history |
object | historical keyword data for the returned keyword |
$date |
object | date variable provided in the “YYYYMM” format example: "202109" |
search_volume |
integer | average monthly search volume rate represents either the approximate number of searches for the given keyword idea on google.com or google.com and partners, depending on the user’s targeting |
cpc |
float | cost-per-click represents the average cost per click (USD) historically paid for the keyword note that Google Ads does not provide separate CPC data; this field returns values based on data from high_top_of_page_bid supplied in Google Ads |
competition |
float | competition 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_level |
string | competition level represents the relative level of competition associated with the given keyword in paid SERP only; possible values: LOW, MEDIUM, HIGHif competition level is unknown, the value is null;learn more about the metric in this help center article |
low_top_of_page_bid |
float | minimum 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_bid |
float | maximum 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 |
time_update |
string | date and time when keyword data was last updated in the ISO 8601 format: “YYYY-MM-DDThh:mm:ss.sssssssZ” example: 2020-09-12T00:07:43.0733218Z |
categories |
array | product and service categories you can download the full list of possible categories |
history |
object | monthly searches represents the (approximate) number of searches on the returned keyword in the given location for 4 years preceding the $date variable;example: "202109":40
|
extra |
array | additional information about the keyword |
core_keyword |
string | main keyword in a group contains the main keyword in a group of keywords that share similarities across the keyword_info parametersif the value is null, our database does not contain any keywords that match these criteria |
synonym_clustering_algorithm |
string | the algorithm used to identify synonyms possible values: keyword_metrics – indicates the algorithm based on keyword_info parameterstext_processing – indicates the text-based algorithmif the value is null, our database does not contain any keywords the corresponding algorithm could identify as synonymous with keyword |
detected_language |
string | detected language of the keyword indicates the language of the keyword as identified by our system |
keyword_difficulty |
integer | difficulty of ranking in the first top-10 organic results for a keyword indicates the chance of getting in top-10 organic results for a keyword on a logarithmic scale from 0 to 100; calculated by analysing, among other parameters, link profiles of the first 10 pages in SERP; learn more about the metric in this help center guide |
search_intent_info |
object | search intent info for the returned keyword learn about search intent in this help center article |
main_intent |
string | main search intent possible values: informational, navigational, commercial, transactional
|
foreign_intent |
array | supplementary search intents possible values: informational, navigational, commercial, transactional
|
last_updated_time |
string | date and time when search intent data was last updated in the ISO 8601 format: “YYYY-MM-DDThh:mm:ss.sssssssZ” example: 2022-09-12T00:07:43.0733218Z |

