Get Citations by Domain
curl --request GET \
--url https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains', 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.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains",
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: <authorization>"
],
]);
$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://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"content": [
{
"domain": "<string>",
"citations": 123,
"citationsDelta": 123,
"uniqueUrls": 123,
"avgRank": 123,
"platforms": [
"<string>"
],
"category": "<string>"
}
],
"page": 123,
"size": 123,
"totalElements": 123,
"totalPages": 123,
"first": true,
"last": true,
"empty": true
}Analytics
Get Citations by Domain
Retrieve citation data grouped by domain with pagination.
GET
/
ai-analytics-service
/
api
/
public
/
v1
/
analytics
/
citations
/
domains
Get Citations by Domain
curl --request GET \
--url https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains', 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.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains",
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: <authorization>"
],
]);
$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://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"content": [
{
"domain": "<string>",
"citations": 123,
"citationsDelta": 123,
"uniqueUrls": 123,
"avgRank": 123,
"platforms": [
"<string>"
],
"category": "<string>"
}
],
"page": 123,
"size": 123,
"totalElements": 123,
"totalPages": 123,
"first": true,
"last": true,
"empty": true
}Returns citation data grouped by domain. Each domain entry includes citation count, unique URLs, average rank, and category. Results are paginated and include period-over-period deltas.
Parameters
string
required
Bearer token. Format:
Bearer slat_<your-token>.integer
Number of days for the analysis window. Range: 1–365. Default:
30.string
Start of date range. RFC 3339 timestamp (e.g.,
2026-02-01T00:00:00Z). Send together with to.string
End of date range. RFC 3339 timestamp. Send together with
from. Data through the end of this date (UTC) is included. The range can’t exceed 366 days.number
Brand ID. If omitted, uses the brand of the workspace’s most recently updated prompt.
number
Filter by topic ID.
string[]
Filter by one or more platforms.
string
Filter by citation category. Values include
OWNED, MENTIONED, COMPETITOR, SOCIAL, NOT_MENTIONED, and OTHER.string
Search by URL, domain, or page title. Case-insensitive partial match.
string
Filter by ISO country code.
integer
Number of results per page. Default:
20. Maximum: 100.integer
Number of results to skip. Default:
0.number
Filter by a single prompt ID.
number[]
Filter by multiple prompt IDs. Maximum 500 values.
Response
Returns200 OK with a paginated list of domain citation data, most-cited domains first.
object[]
required
Array of domain citation objects.
Show citation domain object
Show citation domain object
string
required
Domain name.
integer
required
Total citation count.
integer
required
Change from previous period.
integer
required
Number of unique URLs from the domain.
number
Average citation rank, rounded to a whole number.
null if no rank was recorded.string[]
required
Platforms that cited the domain.
string
required
Category of the domain’s most recent citation.
integer
required
Current page number (0-indexed), calculated as
offset divided by limit.integer
required
Page size. Equals
limit.integer
required
Total number of domains matching the filters.
integer
required
Total number of pages.
boolean
required
Whether this is the first page.
boolean
required
Whether this is the last page.
boolean
required
Whether
content is empty.Example
curl -s "https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains?dateRange=30&topicId=42&limit=10" \
-H "Authorization: Bearer slat_YOUR_TOKEN"
import requests
response = requests.get(
"https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains",
headers={
"Authorization": "Bearer slat_YOUR_TOKEN",
},
params={
"dateRange": 30,
"topicId": 42,
"limit": 10,
},
)
result = response.json()
for d in result["content"]:
print(f"{d['domain']}: {d['citations']} citations, {d['category']}")
const params = new URLSearchParams({
dateRange: "30",
topicId: "42",
limit: "10",
});
const response = await fetch(
`https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/domains?${params}`,
{
headers: {
"Authorization": "Bearer slat_YOUR_TOKEN",
},
}
);
const result = await response.json();
console.log(result.content.length, "domains,", result.totalElements, "total");
Response
{
"content": [
{
"domain": "example.com",
"citations": 45,
"citationsDelta": 5,
"uniqueUrls": 12,
"avgRank": 2,
"platforms": ["CHATGPT", "PERPLEXITY"],
"category": "OWNED"
},
{
"domain": "techreview.com",
"citations": 30,
"citationsDelta": -2,
"uniqueUrls": 8,
"avgRank": 3,
"platforms": ["CHATGPT", "GEMINI"],
"category": "MENTIONED"
}
],
"page": 0,
"size": 10,
"totalElements": 45,
"totalPages": 5,
"first": true,
"last": false,
"empty": false
}
Status codes
| Status | Description |
|---|---|
200 | Domain citations returned. |
400 | A filter is invalid, such as more than 500 promptIds, an unsupported platform, dateRange outside 1–365, or an invalid from/to range. |
401 | Missing or invalid Bearer token. See Authentication. |
500 | Internal server error. |
503 | The analytics store is temporarily unavailable (analytics store unavailable). |
What’s next
- Get Citations for Domain — Drill into URLs for a specific domain.
- Get Citations by URL — View all cited URLs.
Was this page helpful?