curl --request GET \
--url https://api.radarkit.ai/v1/projects/{project}/competitors \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/competitors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.radarkit.ai/v1/projects/{project}/competitors', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"total_mentions": 1240,
"brand": {
"domain": "acme.com",
"mentions": 117,
"share": 9.4,
"average_position": 2.1,
"is_brand": true,
"is_configured_competitor": false,
"rank": 1
},
"competitors": [
{
"domain": "hubspot.com",
"mentions": 98,
"share": 7.9,
"average_position": 2.6,
"is_brand": false,
"is_configured_competitor": true,
"rank": 2
},
{
"domain": "pipedrive.com",
"mentions": 74,
"share": 6,
"average_position": 3.4,
"is_brand": false,
"is_configured_competitor": true,
"rank": 3
}
]
},
"meta": {
"project": "64f1a2b3c4d5e6f708192a3b",
"from": "2026-08-01",
"to": "2026-08-31",
"models": [
"chatgpt",
"gemini",
"perplexity"
],
"count": 2
},
"credits": {
"charged": 2,
"remaining": 2938
},
"request_id": "req_01j9x4v9l0m1n2o3p4q5r6s7u2"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"request_id": "req_01j9x4m2p7q8r9s0t1u2v3w4x5"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Missing or invalid API key. Send it as: Authorization: Bearer rk_live_YOUR_KEY"
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r6"
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Not enough API credits."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r7"
}{
"error": {
"code": "PROJECT_FORBIDDEN",
"message": "This key cannot access that project."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r9"
}{
"error": {
"code": "PROJECT_NOT_FOUND",
"message": "No project with that id."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5s0"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "One or more parameters are invalid.",
"details": [
{
"path": "from",
"message": "The from field must match the format Y-m-d."
}
]
},
"request_id": "req_01j9x4s6b7c8d9e0f1g2h3i4j5"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Slow down and retry.",
"details": {
"retry_after": 21
}
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a1"
}{
"error": {
"code": "QUERY_TIMEOUT",
"message": "The query took too long. Narrow the date range or use exports."
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a2"
}Get share of voice
Who the answers recommend, how often, and at what position. Domains are grouped by their registrable name, so www.hubspot.com and blog.hubspot.com count as one.
brand is your own entry with its rank. competitors is everyone else, most recommended first, up to 100. is_configured_competitor marks the ones you set up in the project.
Cost: 2 API credits. Results are cached for 10 minutes.
Limits: Up to 31 days in one call. 10 calls per minute per key.
Needs: Read.
curl --request GET \
--url https://api.radarkit.ai/v1/projects/{project}/competitors \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/competitors"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.radarkit.ai/v1/projects/{project}/competitors', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"total_mentions": 1240,
"brand": {
"domain": "acme.com",
"mentions": 117,
"share": 9.4,
"average_position": 2.1,
"is_brand": true,
"is_configured_competitor": false,
"rank": 1
},
"competitors": [
{
"domain": "hubspot.com",
"mentions": 98,
"share": 7.9,
"average_position": 2.6,
"is_brand": false,
"is_configured_competitor": true,
"rank": 2
},
{
"domain": "pipedrive.com",
"mentions": 74,
"share": 6,
"average_position": 3.4,
"is_brand": false,
"is_configured_competitor": true,
"rank": 3
}
]
},
"meta": {
"project": "64f1a2b3c4d5e6f708192a3b",
"from": "2026-08-01",
"to": "2026-08-31",
"models": [
"chatgpt",
"gemini",
"perplexity"
],
"count": 2
},
"credits": {
"charged": 2,
"remaining": 2938
},
"request_id": "req_01j9x4v9l0m1n2o3p4q5r6s7u2"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"request_id": "req_01j9x4m2p7q8r9s0t1u2v3w4x5"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Missing or invalid API key. Send it as: Authorization: Bearer rk_live_YOUR_KEY"
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r6"
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Not enough API credits."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r7"
}{
"error": {
"code": "PROJECT_FORBIDDEN",
"message": "This key cannot access that project."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r9"
}{
"error": {
"code": "PROJECT_NOT_FOUND",
"message": "No project with that id."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5s0"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "One or more parameters are invalid.",
"details": [
{
"path": "from",
"message": "The from field must match the format Y-m-d."
}
]
},
"request_id": "req_01j9x4s6b7c8d9e0f1g2h3i4j5"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Slow down and retry.",
"details": {
"retry_after": 21
}
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a1"
}{
"error": {
"code": "QUERY_TIMEOUT",
"message": "The query took too long. Narrow the date range or use exports."
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a2"
}Authorizations
Your API key. Create one in Settings, API keys. Send it as Authorization: Bearer rk_live_YOUR_KEY.
Path Parameters
The project id. 24 characters. From List projects.
^[0-9a-f]{24}$Query Parameters
First day, YYYY-MM-DD, in the project's timezone. Default: the window your dashboard shows, 7 or 30 days back.
Last day, YYYY-MM-DD, included. Default: today.
One model name, or several separated by commas: chatgpt, gemini, perplexity, copilot, aimode, aioverview. Default: every model the project tracks. Names the plan does not include are ignored.
120Response
Share of voice.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
What this call cost and what is left. Also in the X-RadarKit-Credits-Charged and X-RadarKit-Credits-Remaining headers.
Show child attributes
Show child attributes
A unique id for this call. Also in the X-Request-Id header. Quote it when you contact support.
"req_01j9x4m2p7q8r9s0t1u2v3w4x5"