Get Google related keywords
curl --request GET \
--url https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related \
--header 'API-Key: <api-key>'import requests
url = "https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related"
headers = {"API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Key': '<api-key>'}};
fetch('https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related', 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://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>"
],
]);
$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://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related")
.header("API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"countryCode": "US",
"keyword": "protein powder",
"languageCode": "en",
"relatedKeywords": [
{
"keyword": "protein powder",
"metrics": {
"cpc": 1.66,
"keywordDifficulty": 32,
"monthlySearches": [
{
"month": 6,
"year": 2026,
"searchVolume": 450000
}
],
"searchIntent": "transactional",
"searchVolume": 301000,
"searchVolumeTrend": {
"monthly": -33,
"quarterly": 50,
"yearly": 50
}
}
}
],
"metrics": {
"cpc": 1.66,
"keywordDifficulty": 32,
"monthlySearches": [
{
"month": 6,
"year": 2026,
"searchVolume": 450000
}
],
"searchIntent": "transactional",
"searchVolume": 301000,
"searchVolumeTrend": {
"monthly": -33,
"quarterly": 50,
"yearly": 50
}
}
}{
"code": "COMMON_VALIDATION",
"details": [
"limit: must be 100 or less"
],
"message": "Data validation failed"
}{
"code": "COMMON_UNAUTHORIZED",
"message": "Unauthenticated user"
}{
"code": "INSUFFICIENT_CREDITS",
"message": "Insufficient credits."
}{
"code": "PLATFORM_RATE_LIMIT_EXCEEDED",
"message": "Too many requests. Please try again later."
}{
"message": "Internal Server Error",
"requestID": "bkZqnHQepkgTOocTvyHWSlHcGzRqQbZk"
}{
"code": "KEYWORD_METRICS_PROVIDER_UNAVAILABLE",
"message": "Failed to retrieve keyword metrics. Try again shortly"
}{
"code": "KEYWORD_METRICS_NOT_CONFIGURED",
"message": "Keyword metrics feature is not enabled yet"
}Keywords (Beta)
Google related keywords
[BETA] This is a beta API. The response spec may change without notice.
Retrieves Google keywords related to the base keyword in descending order of search volume. The base keyword is excluded from the list, and its metrics are provided in the metrics field of the response.
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | COMMON_VALIDATION | • keyword missing or over 80 characters • limit out of range (1 to 100) |
| 400 | KEYWORD_COUNTRY_NOT_SUPPORTED | Unsupported country code |
| 400 | KEYWORD_METRICS_PROVIDER_REJECTED | The provider rejected the request (language and country combination, keyword format) |
| 401 | COMMON_UNAUTHORIZED | API key or access token is missing or invalid |
| 402 | INSUFFICIENT_CREDITS | The organization’s credit balance is lower than the unit price of this request |
| 429 | PLATFORM_RATE_LIMIT_EXCEEDED | Rate limit exceeded. Wait for the number of seconds in the Retry-After header, then retry |
| 500 | — | Internal server error. Returns message and requestID without a code |
| 502 | KEYWORD_METRICS_PROVIDER_UNAVAILABLE | Failed to call the metrics provider. Retry after a short wait |
| 503 | KEYWORD_METRICS_NOT_CONFIGURED | The keyword metrics feature is not enabled |
GET
/
v1beta
/
platform
/
keywords
/
google
/
related
Get Google related keywords
curl --request GET \
--url https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related \
--header 'API-Key: <api-key>'import requests
url = "https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related"
headers = {"API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Key': '<api-key>'}};
fetch('https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related', 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://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>"
],
]);
$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://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related")
.header("API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform-api.trychainshift.ai/api/v1beta/platform/keywords/google/related")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"countryCode": "US",
"keyword": "protein powder",
"languageCode": "en",
"relatedKeywords": [
{
"keyword": "protein powder",
"metrics": {
"cpc": 1.66,
"keywordDifficulty": 32,
"monthlySearches": [
{
"month": 6,
"year": 2026,
"searchVolume": 450000
}
],
"searchIntent": "transactional",
"searchVolume": 301000,
"searchVolumeTrend": {
"monthly": -33,
"quarterly": 50,
"yearly": 50
}
}
}
],
"metrics": {
"cpc": 1.66,
"keywordDifficulty": 32,
"monthlySearches": [
{
"month": 6,
"year": 2026,
"searchVolume": 450000
}
],
"searchIntent": "transactional",
"searchVolume": 301000,
"searchVolumeTrend": {
"monthly": -33,
"quarterly": 50,
"yearly": 50
}
}
}{
"code": "COMMON_VALIDATION",
"details": [
"limit: must be 100 or less"
],
"message": "Data validation failed"
}{
"code": "COMMON_UNAUTHORIZED",
"message": "Unauthenticated user"
}{
"code": "INSUFFICIENT_CREDITS",
"message": "Insufficient credits."
}{
"code": "PLATFORM_RATE_LIMIT_EXCEEDED",
"message": "Too many requests. Please try again later."
}{
"message": "Internal Server Error",
"requestID": "bkZqnHQepkgTOocTvyHWSlHcGzRqQbZk"
}{
"code": "KEYWORD_METRICS_PROVIDER_UNAVAILABLE",
"message": "Failed to retrieve keyword metrics. Try again shortly"
}{
"code": "KEYWORD_METRICS_NOT_CONFIGURED",
"message": "Keyword metrics feature is not enabled yet"
}Query Parameters
Response
OK