# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '[
{
"keywords": [
"phone",
"watch"
],
"language_name": "English",
"location_code": 2840,
"include_serp_info": true
}
]'curl --request POST \
--url https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"include_serp_info": true,
"keywords": [
"phone",
"watch"
],
"language_name": "English",
"location_code": 2840
}
]
'import requests
url = "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live"
payload = [
{
"include_serp_info": True,
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
include_serp_info: true,
keywords: ['phone', 'watch'],
language_name: 'English',
location_code: 2840
}
])
};
fetch('https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'include_serp_info' => true,
'keywords' => [
'phone',
'watch'
],
'language_name' => 'English',
'location_code' => 2840
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live"
payload := strings.NewReader("[\n {\n \"include_serp_info\": true,\n \"keywords\": [\n \"phone\",\n \"watch\"\n ],\n \"language_name\": \"English\",\n \"location_code\": 2840\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"include_serp_info\": true,\n \"keywords\": [\n \"phone\",\n \"watch\"\n ],\n \"language_name\": \"English\",\n \"location_code\": 2840\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"include_serp_info\": true,\n \"keywords\": [\n \"phone\",\n \"watch\"\n ],\n \"language_name\": \"English\",\n \"location_code\": 2840\n }\n]"
response = http.request(request)
puts response.read_body{
"cost": 123,
"status_code": 123,
"status_message": "<string>",
"tasks_count": 123,
"tasks_error": 123,
"time": "<string>",
"version": "<string>",
"tasks": [
{
"cost": 123,
"data": {},
"id": "<string>",
"path": [
"<string>"
],
"result_count": 123,
"status_code": 123,
"status_message": "<string>",
"time": "<string>",
"result": [
{
"items": [
{
"avg_backlinks_info": {
"backlinks": 123,
"dofollow": 123,
"last_updated_time": "<string>",
"main_domain_rank": 123,
"rank": 123,
"referring_domains": 123,
"referring_main_domains": 123,
"referring_pages": 123,
"se_type": "<string>"
},
"clickstream_keyword_info": {
"age_distribution": {},
"gender_distribution": {},
"last_updated_time": "<string>",
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"search_volume": 123
},
"keyword": "<string>",
"keyword_info": {
"categories": [
123
],
"competition": 123,
"competition_level": "<string>",
"cpc": 123,
"high_top_of_page_bid": 123,
"last_updated_time": "<string>",
"low_top_of_page_bid": 123,
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"se_type": "<string>",
"search_volume": 123,
"search_volume_trend": {
"monthly": 123,
"quarterly": 123,
"yearly": 123
}
},
"keyword_info_normalized_with_bing": {
"is_normalized": true,
"last_updated_time": "<string>",
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"search_volume": 123
},
"keyword_info_normalized_with_clickstream": {
"is_normalized": true,
"last_updated_time": "<string>",
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"search_volume": 123
},
"keyword_properties": {
"core_keyword": "<string>",
"detected_language": "<string>",
"is_another_language": true,
"keyword_difficulty": 123,
"se_type": "<string>",
"synonym_clustering_algorithm": "<string>",
"words_count": 123
},
"language_code": "<string>",
"location_code": 123,
"se_type": "<string>",
"search_partners": true,
"serp_info": {
"check_url": "<string>",
"last_updated_time": "<string>",
"previous_updated_time": "<string>",
"se_results_count": 123,
"se_type": "<string>",
"serp_item_types": [
"<string>"
]
}
}
],
"items_count": 123,
"language_code": "<string>",
"location_code": 123,
"se_type": "<string>"
}
]
}
]
}Live Dataforseo Labs Google Historical Search Volume
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '[
{
"keywords": [
"phone",
"watch"
],
"language_name": "English",
"location_code": 2840,
"include_serp_info": true
}
]'curl --request POST \
--url https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"include_serp_info": true,
"keywords": [
"phone",
"watch"
],
"language_name": "English",
"location_code": 2840
}
]
'import requests
url = "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live"
payload = [
{
"include_serp_info": True,
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
include_serp_info: true,
keywords: ['phone', 'watch'],
language_name: 'English',
location_code: 2840
}
])
};
fetch('https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'include_serp_info' => true,
'keywords' => [
'phone',
'watch'
],
'language_name' => 'English',
'location_code' => 2840
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live"
payload := strings.NewReader("[\n {\n \"include_serp_info\": true,\n \"keywords\": [\n \"phone\",\n \"watch\"\n ],\n \"language_name\": \"English\",\n \"location_code\": 2840\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"include_serp_info\": true,\n \"keywords\": [\n \"phone\",\n \"watch\"\n ],\n \"language_name\": \"English\",\n \"location_code\": 2840\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"include_serp_info\": true,\n \"keywords\": [\n \"phone\",\n \"watch\"\n ],\n \"language_name\": \"English\",\n \"location_code\": 2840\n }\n]"
response = http.request(request)
puts response.read_body{
"cost": 123,
"status_code": 123,
"status_message": "<string>",
"tasks_count": 123,
"tasks_error": 123,
"time": "<string>",
"version": "<string>",
"tasks": [
{
"cost": 123,
"data": {},
"id": "<string>",
"path": [
"<string>"
],
"result_count": 123,
"status_code": 123,
"status_message": "<string>",
"time": "<string>",
"result": [
{
"items": [
{
"avg_backlinks_info": {
"backlinks": 123,
"dofollow": 123,
"last_updated_time": "<string>",
"main_domain_rank": 123,
"rank": 123,
"referring_domains": 123,
"referring_main_domains": 123,
"referring_pages": 123,
"se_type": "<string>"
},
"clickstream_keyword_info": {
"age_distribution": {},
"gender_distribution": {},
"last_updated_time": "<string>",
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"search_volume": 123
},
"keyword": "<string>",
"keyword_info": {
"categories": [
123
],
"competition": 123,
"competition_level": "<string>",
"cpc": 123,
"high_top_of_page_bid": 123,
"last_updated_time": "<string>",
"low_top_of_page_bid": 123,
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"se_type": "<string>",
"search_volume": 123,
"search_volume_trend": {
"monthly": 123,
"quarterly": 123,
"yearly": 123
}
},
"keyword_info_normalized_with_bing": {
"is_normalized": true,
"last_updated_time": "<string>",
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"search_volume": 123
},
"keyword_info_normalized_with_clickstream": {
"is_normalized": true,
"last_updated_time": "<string>",
"monthly_searches": [
{
"month": 123,
"search_volume": 123,
"year": 123
}
],
"search_volume": 123
},
"keyword_properties": {
"core_keyword": "<string>",
"detected_language": "<string>",
"is_another_language": true,
"keyword_difficulty": 123,
"se_type": "<string>",
"synonym_clustering_algorithm": "<string>",
"words_count": 123
},
"language_code": "<string>",
"location_code": 123,
"se_type": "<string>",
"search_partners": true,
"serp_info": {
"check_url": "<string>",
"last_updated_time": "<string>",
"previous_updated_time": "<string>",
"se_results_count": 123,
"se_type": "<string>",
"serp_item_types": [
"<string>"
]
}
}
],
"items_count": 123,
"language_code": "<string>",
"location_code": 123,
"se_type": "<string>"
}
]
}
]
}Request contract
- Method and path: POST /apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live
- Runtime facts: 6ab8fec17df1d5dcdff2e036dd1eb40587752b774ec040ab4eb0cc6946c3dd3c
{
"operationId": "any_dataforseo_apis_v1_dataforseo_dataforseo_labs_13ede5",
"method": "POST",
"path": "/apis/v1/dataforseo/dataforseo_labs/google/historical_search_volume/live",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"example": [
{
"include_serp_info": true,
"keywords": [
"phone",
"watch"
],
"language_name": "English",
"location_code": 2840
}
],
"items": {
"oneOf": [
{
"example": [
{
"include_serp_info": true,
"keywords": [
"phone",
"watch"
],
"language_name": "English",
"location_code": 2840
}
],
"properties": {
"include_clickstream_data": {
"description": "include or exclude data from clickstream-based metrics in the result\noptional field\nif the parameter is set to true, you will receive clickstream_keyword_info, keyword_info_normalized_with_clickstream, and keyword_info_normalized_with_bing fields in the response\ndefault value: false\nwith this parameter enabled, you will be charged double the price for the request\nlearn more about how clickstream-based metrics are calculated in this help center article",
"type": [
"boolean",
"null"
]
},
"include_serp_info": {
"description": "include data from SERP for each keyword\noptional field\nif set to true, we will return a serp_info array containing SERP data (number of search results, relevant URL, and SERP features) for every keyword in the response\ndefault value: false",
"type": [
"boolean",
"null"
]
},
"keywords": {
"description": "keywords\nrequired field\nThe maximum number of keywords you can specify: 700\nThe maximum number of characters for each keyword: 80\nThe maximum number of words for each keyword phrase: 10\nthe specified keywords will be converted to lowercase format, data will be provided in a separate array\nnote 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\nyou will not be charged for the keywords omitted in the results\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
"items": {
"type": "string"
},
"type": "array"
},
"language_code": {
"description": "language code\nrequired field if you don’t specify language_name\nNote: it is required to specify either language_name or language_code\nyou can receive the list of available locations with their language_code by making a separate request to the\nhttps://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages\nexample:\nen",
"type": [
"string",
"null"
]
},
"language_name": {
"description": "full name of the language\nrequired field if you don’t specify language_code\nNote: it is required to specify either language_name or language_code\nyou can receive the list of available locations with their language_name by making a separate request to the\nhttps://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages\nexample:\nEnglish",
"type": [
"string",
"null"
]
},
"location_code": {
"description": "location code\nrequired field if you don’t specify location_name\nNote: it is required to specify either location_name or location_code\nyou can receive the list of available locations with their location_code by making a separate request to the\nhttps://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages\nexample:\n2840",
"type": [
"integer",
"null"
]
},
"location_name": {
"description": "full name of the location\nrequired field if you don’t specify location_code\nNote: it is required to specify either location_name or location_code\nyou can receive the list of available locations with their location_name by making a separate request to the\nhttps://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages\nexample:\nUnited Kingdom",
"type": [
"string",
"null"
]
},
"tag": {
"description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response",
"type": [
"string",
"null"
]
}
},
"type": "object"
}
],
"type": [
"object",
"null"
]
},
"type": "array"
}
}
}
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "response_usd",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.1356,
"estimate_source": "profile_seed",
"evidence_source": "response_body"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Usage-based billing; Default request estimate: $0.1356 USD (not a fixed price). Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.1356
- Cost contract: response_usd
- Published reference multiplier: 1.0
- Settlement evidence source: response_body
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
include or exclude data from clickstream-based metrics in the result optional field if the parameter is set to true, you will receive clickstream_keyword_info, keyword_info_normalized_with_clickstream, and keyword_info_normalized_with_bing fields in the response default value: false with this parameter enabled, you will be charged double the price for the request learn more about how clickstream-based metrics are calculated in this help center article
include data from SERP for each keyword optional field if set to true, we will return a serp_info array containing SERP data (number of search results, relevant URL, and SERP features) for every keyword in the response default value: false
keywords 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
language 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
full 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
location 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
full 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
user-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
[
{
"include_serp_info": true,
"keywords": ["phone", "watch"],
"language_name": "English",
"location_code": 2840
}
]
Response
Successful operation
total tasks cost, USD
general status code you can find the full list of the response codes here
general informational message you can find the full list of general informational messages here
the number of tasks in the tasks array
the number of tasks in the tasks array returned with an error
total execution time, seconds
the current version of the API
array of tasks
Show child attributes
Show child attributes