curl --request POST \
--url https://api.rankspot.ai/v1/competitors \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Ahrefs",
"domain": "ahrefs.com"
}
'import requests
url = "https://api.rankspot.ai/v1/competitors"
payload = {
"name": "Ahrefs",
"domain": "ahrefs.com"
}
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({name: 'Ahrefs', domain: 'ahrefs.com'})
};
fetch('https://api.rankspot.ai/v1/competitors', 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.rankspot.ai/v1/competitors",
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([
'name' => 'Ahrefs',
'domain' => 'ahrefs.com'
]),
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.rankspot.ai/v1/competitors"
payload := strings.NewReader("{\n \"name\": \"Ahrefs\",\n \"domain\": \"ahrefs.com\"\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.rankspot.ai/v1/competitors")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Ahrefs\",\n \"domain\": \"ahrefs.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rankspot.ai/v1/competitors")
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 \"name\": \"Ahrefs\",\n \"domain\": \"ahrefs.com\"\n}"
response = http.request(request)
puts response.read_body{
"id": "clx...",
"name": "Ahrefs",
"domain": "ahrefs.com",
"isTracked": true,
"autoDiscovered": true,
"mentionCount": 123,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}Add a competitor
Adds a competitor domain to your workspace. After adding, RankSpot will begin discovering keywords and backlinks for this competitor on the next background sync — results will not appear immediately.
If RankSpot already discovered the domain in AI answers (scope=discovered), this promotes that brand to tracked and keeps the mentions already attributed to it, rather than creating a second row.
The number of competitors you can add is limited by your subscription plan. Returns 400 with type: "competitor-limit-exceeded" if the limit is reached, or type: "competitor-already-exists" if the domain is already tracked.
curl --request POST \
--url https://api.rankspot.ai/v1/competitors \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Ahrefs",
"domain": "ahrefs.com"
}
'import requests
url = "https://api.rankspot.ai/v1/competitors"
payload = {
"name": "Ahrefs",
"domain": "ahrefs.com"
}
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({name: 'Ahrefs', domain: 'ahrefs.com'})
};
fetch('https://api.rankspot.ai/v1/competitors', 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.rankspot.ai/v1/competitors",
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([
'name' => 'Ahrefs',
'domain' => 'ahrefs.com'
]),
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.rankspot.ai/v1/competitors"
payload := strings.NewReader("{\n \"name\": \"Ahrefs\",\n \"domain\": \"ahrefs.com\"\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.rankspot.ai/v1/competitors")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Ahrefs\",\n \"domain\": \"ahrefs.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rankspot.ai/v1/competitors")
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 \"name\": \"Ahrefs\",\n \"domain\": \"ahrefs.com\"\n}"
response = http.request(request)
puts response.read_body{
"id": "clx...",
"name": "Ahrefs",
"domain": "ahrefs.com",
"isTracked": true,
"autoDiscovered": true,
"mentionCount": 123,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
"clx..."
"Ahrefs"
"ahrefs.com"
Whether keywords and backlinks are being collected for it.
Found by RankSpot in an AI answer rather than added by hand.
How many AI answers have named this brand. The ranking signal.
