curl --request POST \
--url https://api.snowseo.com/v3/rank-tracking/keywords \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"teamId": "<string>",
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>",
"items": [
{
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>"
}
],
"active": true
}
'import requests
url = "https://api.snowseo.com/v3/rank-tracking/keywords"
payload = {
"teamId": "<string>",
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>",
"items": [
{
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>"
}
],
"active": True
}
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({
teamId: '<string>',
keyword: '<string>',
countryId: '<string>',
languageId: '<string>',
locationCriteriaId: 123,
locationCanonicalName: '<string>',
items: [
{
keyword: '<string>',
countryId: '<string>',
languageId: '<string>',
locationCriteriaId: 123,
locationCanonicalName: '<string>'
}
],
active: true
})
};
fetch('https://api.snowseo.com/v3/rank-tracking/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://api.snowseo.com/v3/rank-tracking/keywords",
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([
'teamId' => '<string>',
'keyword' => '<string>',
'countryId' => '<string>',
'languageId' => '<string>',
'locationCriteriaId' => 123,
'locationCanonicalName' => '<string>',
'items' => [
[
'keyword' => '<string>',
'countryId' => '<string>',
'languageId' => '<string>',
'locationCriteriaId' => 123,
'locationCanonicalName' => '<string>'
]
],
'active' => true
]),
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.snowseo.com/v3/rank-tracking/keywords"
payload := strings.NewReader("{\n \"teamId\": \"<string>\",\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\",\n \"items\": [\n {\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\"\n }\n ],\n \"active\": true\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.snowseo.com/v3/rank-tracking/keywords")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"teamId\": \"<string>\",\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\",\n \"items\": [\n {\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\"\n }\n ],\n \"active\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/rank-tracking/keywords")
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 \"teamId\": \"<string>\",\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\",\n \"items\": [\n {\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\"\n }\n ],\n \"active\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"requested": 123,
"alreadyTracked": 123,
"reactivated": 123,
"created": 123
}{
"success": true,
"error": "<string>"
}{
"success": true,
"error": "<string>"
}{
"success": true,
"error": "<string>"
}Add Tracked Keyword
Start tracking a new keyword for your team.
curl --request POST \
--url https://api.snowseo.com/v3/rank-tracking/keywords \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"teamId": "<string>",
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>",
"items": [
{
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>"
}
],
"active": true
}
'import requests
url = "https://api.snowseo.com/v3/rank-tracking/keywords"
payload = {
"teamId": "<string>",
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>",
"items": [
{
"keyword": "<string>",
"countryId": "<string>",
"languageId": "<string>",
"locationCriteriaId": 123,
"locationCanonicalName": "<string>"
}
],
"active": True
}
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({
teamId: '<string>',
keyword: '<string>',
countryId: '<string>',
languageId: '<string>',
locationCriteriaId: 123,
locationCanonicalName: '<string>',
items: [
{
keyword: '<string>',
countryId: '<string>',
languageId: '<string>',
locationCriteriaId: 123,
locationCanonicalName: '<string>'
}
],
active: true
})
};
fetch('https://api.snowseo.com/v3/rank-tracking/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://api.snowseo.com/v3/rank-tracking/keywords",
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([
'teamId' => '<string>',
'keyword' => '<string>',
'countryId' => '<string>',
'languageId' => '<string>',
'locationCriteriaId' => 123,
'locationCanonicalName' => '<string>',
'items' => [
[
'keyword' => '<string>',
'countryId' => '<string>',
'languageId' => '<string>',
'locationCriteriaId' => 123,
'locationCanonicalName' => '<string>'
]
],
'active' => true
]),
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.snowseo.com/v3/rank-tracking/keywords"
payload := strings.NewReader("{\n \"teamId\": \"<string>\",\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\",\n \"items\": [\n {\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\"\n }\n ],\n \"active\": true\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.snowseo.com/v3/rank-tracking/keywords")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"teamId\": \"<string>\",\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\",\n \"items\": [\n {\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\"\n }\n ],\n \"active\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/rank-tracking/keywords")
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 \"teamId\": \"<string>\",\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\",\n \"items\": [\n {\n \"keyword\": \"<string>\",\n \"countryId\": \"<string>\",\n \"languageId\": \"<string>\",\n \"locationCriteriaId\": 123,\n \"locationCanonicalName\": \"<string>\"\n }\n ],\n \"active\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"requested": 123,
"alreadyTracked": 123,
"reactivated": 123,
"created": 123
}{
"success": true,
"error": "<string>"
}{
"success": true,
"error": "<string>"
}{
"success": true,
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Team ID
Keyword to track
1 - 255Country ID (ISO2) or null for worldwide. Set this alongside a location when targeting a place inside a country.
Language ID or null for default
Google Ads location criteria ID for local (sub-country) tracking - city, county, state, region or neighbourhood. Get it from search_locations; never guess it. Omit/null for country-only tracking.
Canonical location name from the same search_locations row (e.g. "Palm Beach County,Florida,United States"). Send it whenever locationCriteriaId is set; if omitted the stored canonical name is null.
Batch of keywords to track
Show child attributes
Show child attributes
Defaults to true. Set false to add the keywords to the team's list WITHOUT tracking them: no SERP allowance is consumed and no crawl is scheduled, and they can be tracked later. Batch (items) only.
Was this page helpful?

