List keywords
curl --request GET \
--url https://app.keupera.com/api/v1/keywords \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.keupera.com/api/v1/keywords"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.keupera.com/api/v1/keywords', 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://app.keupera.com/api/v1/keywords",
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://app.keupera.com/api/v1/keywords"
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://app.keupera.com/api/v1/keywords")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.keupera.com/api/v1/keywords")
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{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"term": "best seo tools",
"volume": 12000,
"difficulty": 45,
"cpc": 2.5,
"intent": "Commercial",
"opportunity": "High",
"is_starred": true,
"funnel_stage": "consideration",
"language": "en",
"group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"keyword_groups": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"blog_posts": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"status": "<string>"
},
"created_at": "2023-11-07T05:31:56Z"
}
],
"meta": {
"total": 150,
"page": 1,
"limit": 100
}
}{
"error": "Invalid or missing API key"
}{
"error": "Your plan does not include Public API access"
}Keywords
List keywords
Returns a paginated list of keywords for the authenticated website.
GET
/
keywords
List keywords
curl --request GET \
--url https://app.keupera.com/api/v1/keywords \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.keupera.com/api/v1/keywords"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.keupera.com/api/v1/keywords', 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://app.keupera.com/api/v1/keywords",
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://app.keupera.com/api/v1/keywords"
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://app.keupera.com/api/v1/keywords")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.keupera.com/api/v1/keywords")
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{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"term": "best seo tools",
"volume": 12000,
"difficulty": 45,
"cpc": 2.5,
"intent": "Commercial",
"opportunity": "High",
"is_starred": true,
"funnel_stage": "consideration",
"language": "en",
"group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"keyword_groups": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
},
"blog_posts": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"status": "<string>"
},
"created_at": "2023-11-07T05:31:56Z"
}
],
"meta": {
"total": 150,
"page": 1,
"limit": 100
}
}{
"error": "Invalid or missing API key"
}{
"error": "Your plan does not include Public API access"
}Authorizations
Pass your Keupera API key as a Bearer token: Authorization: Bearer YOUR_KEUPERA_API_KEY. Generate keys from Account → API Keys in your Keupera dashboard.
Query Parameters
Target website. Defaults to the website bound to your API key. Must belong to one of your organizations.
Results per page.
Required range:
1 <= x <= 500Page number for paginated endpoints.
Required range:
x >= 1Filter by keyword status.
Available options:
active, planned, ignored Filter by keyword group ID.
⌘I