Generate keyword ideas
curl --request GET \
--url https://api.snowseo.com/v3/keyword-research/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/keyword-research/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.snowseo.com/v3/keyword-research/', 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.snowseo.com/v3/keyword-research/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.snowseo.com/v3/keyword-research/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.snowseo.com/v3/keyword-research/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/keyword-research/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"exact_keyword": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
],
"related_keywords": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
],
"perCountry": [
{
"countryId": "<string>",
"count": 123,
"exact_keyword": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
],
"related_keywords": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
]
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Keywords & Research
Keyword Research
Find keyword ideas with search volume, competition, and cost-per-click data.
GET
/
v3
/
keyword-research
/
Generate keyword ideas
curl --request GET \
--url https://api.snowseo.com/v3/keyword-research/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/keyword-research/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.snowseo.com/v3/keyword-research/', 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.snowseo.com/v3/keyword-research/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.snowseo.com/v3/keyword-research/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.snowseo.com/v3/keyword-research/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/keyword-research/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"exact_keyword": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
],
"related_keywords": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
],
"perCountry": [
{
"countryId": "<string>",
"count": 123,
"exact_keyword": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
],
"related_keywords": [
{
"keyword": "<string>",
"monthlysearch": 123,
"difficulty": "<string>",
"competition_score": 123,
"annotation": "<string>",
"cpc": 123,
"historic_data": [
{
"year": 123,
"month": 123,
"search_volume": 123
}
]
}
]
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Enter a seed keyword or a page URL and get back a list of related keyword ideas complete with monthly search volume, competition level, and CPC estimates. Powered by Google Ads Keyword Planner data (with DataForSEO as an alternative provider).
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Team ID
Seed keyword. Required if page_url is omitted.
Seed URL. Required if keyword is omitted. Empty string allowed when using keyword.
Comma-separated location IDs (e.g. "2840,2826"). Use "all" for worldwide; it can be combined with specific IDs (e.g. "all,2380"). Omitted = worldwide.
Google Ads language resource ID (default: "1000" = English).
Was this page helpful?
⌘I

