Generate Keyword Ideas
curl --request POST \
--url https://public.plai.io/gads/generate_keyword_ideas \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"keyword": "<string>",
"languageId": "<string>",
"locationIds": [
"<string>"
]
}
'import requests
url = "https://public.plai.io/gads/generate_keyword_ideas"
payload = {
"keyword": "<string>",
"languageId": "<string>",
"locationIds": ["<string>"]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({keyword: '<string>', languageId: '<string>', locationIds: ['<string>']})
};
fetch('https://public.plai.io/gads/generate_keyword_ideas', 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://public.plai.io/gads/generate_keyword_ideas",
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([
'keyword' => '<string>',
'languageId' => '<string>',
'locationIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public.plai.io/gads/generate_keyword_ideas"
payload := strings.NewReader("{\n \"keyword\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://public.plai.io/gads/generate_keyword_ideas")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"keyword\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public.plai.io/gads/generate_keyword_ideas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keyword\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"results": {
"success": true,
"keywords": [
{
"keyword": "<string>",
"searchVolume": 123,
"cpc": 123
}
],
"error": "<string>"
}
}Utilities
Generate Keyword Ideas
This endpoint generates keyword ideas related to a given input keyword. It helps users discover relevant search terms along with useful insights such as search volume, cost-per-click (CPC), and monthly trends. Ideal for planning and optimizing Google Ads campaigns based on real search behavior.
POST
/
gads
/
generate_keyword_ideas
Generate Keyword Ideas
curl --request POST \
--url https://public.plai.io/gads/generate_keyword_ideas \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"keyword": "<string>",
"languageId": "<string>",
"locationIds": [
"<string>"
]
}
'import requests
url = "https://public.plai.io/gads/generate_keyword_ideas"
payload = {
"keyword": "<string>",
"languageId": "<string>",
"locationIds": ["<string>"]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({keyword: '<string>', languageId: '<string>', locationIds: ['<string>']})
};
fetch('https://public.plai.io/gads/generate_keyword_ideas', 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://public.plai.io/gads/generate_keyword_ideas",
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([
'keyword' => '<string>',
'languageId' => '<string>',
'locationIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public.plai.io/gads/generate_keyword_ideas"
payload := strings.NewReader("{\n \"keyword\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://public.plai.io/gads/generate_keyword_ideas")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"keyword\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public.plai.io/gads/generate_keyword_ideas")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keyword\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"results": {
"success": true,
"keywords": [
{
"keyword": "<string>",
"searchVolume": 123,
"cpc": 123
}
],
"error": "<string>"
}
}Request Body
string
required
Keyword for generating similar keyword ideas.
string
languageId for generating keyword ideas.You can find supported `languageIds` by downloading the file and use the column `Criterion ID` as the `languageId`
Default
languageId is English.string[]
Location IDs for generating keyword ideasYou can retrieve the appropriate
locationId using the Get Location API.Default
locationId is United States.Response
boolean
Indicates that the HTTP response was successful (status code 200 OK).
object
Show Results Object
Show Results Object
boolean
Indicates whether the specific operation or API action was successful.
object[]
string
Error string if something went wrong