Cited sources by domain
The same citation data grouped by apex domain. One row per site rather than per URL.
This is the strategic view: which publications the engines actually trust for your category. It is the input to any earned-media or PR plan, because these are the places worth appearing in.
GET /v1/brands/{brand_id}/citations/domainsAuthorization
| Header | Type | Required |
|---|---|---|
Authorization | Bearer asky_sk_… | required |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
brand_id | uuid | required | From List brands |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | optional | Rows per page, 1 to 100. Defaults to 20. |
cursor | string | optional | Opaque cursor from the previous response. Treat it as a token, never construct one. |
start_date | YYYY-MM-DD | optional | Inclusive lower bound, YYYY-MM-DD in UTC. Narrows the population before metrics are computed. |
end_date | YYYY-MM-DD | optional | Inclusive upper bound, YYYY-MM-DD in UTC. Narrows the population before metrics are computed. |
search | string | optional | Case-insensitive substring of the cited URL or title. |
topic_id | uuid, repeatable | optional | Restrict to these topics. From List topics. Includes the topic and its subtopics. A root topic returns everything beneath it; a subtopic returns only itself. Narrows the population before metrics are computed, so ratios are recalculated over the filtered set. |
engine | string, repeatable | optional | Restrict to these AI search engines, by slug. From List engines. Narrows the population before metrics are computed. |
country | string, repeatable | optional | Restrict to these execution country codes. Narrows the population before metrics are computed. |
tag_id | uuid, repeatable | optional | Restrict to prompts carrying these tags. From List tags. Narrows the population before metrics are computed. |
tag_match_mode | string | optional | How to combine tag_id values. Defaults to ‘any’. One of: any, all. |
sort | string | optional | Sort column. One of: citation_count, citation_share, citation_rate, responses_cited, brand_mention_count, url_count. |
sort_direction | string | optional | Sort direction. Defaults to ‘desc’. One of: asc, desc. |
Request
cURL
curl --request GET \
--url 'https://api.askylabs.com/v1/brands/242546de-4cee-4a7d-952e-f6aa60c63ef8/citations/domains?page_size=25' \
--header 'Authorization: Bearer <api-key>'Response
200
{
"data": [
{
"domain": "g2.com",
"favicon_url": "https://g2.com/favicon.ico",
"citation_count": 618,
"citation_share": 0.234,
"citation_rate": 0.302,
"responses_cited": 540,
"brand_mention_count": 122,
"url_count": 27
}
],
"pagination": {
"limit": 20,
"has_more": true,
"next_cursor": "eyJ2IjoxLCJvIjoyMCwibCI6MjB9"
},
"meta": {
"period": {
"start_date": "2026-07-14",
"end_date": "2026-08-13"
},
"total": 318
},
"request_id": "req_71e4c8b39d0a4f52a6bd"
}Response fields
| Field | Type | Description |
|---|---|---|
data.period | object | required. { start_date, end_date } actually used |
data.domains | object[] | required |
data.domains[].domain | string | required. Apex domain, for example g2.com |
data.domains[].citation_count | integer | required |
data.domains[].citation_share | number | required |
data.domains[].citation_rate | number | required |
data.domains[].responses_cited | integer | required |
data.domains[].brand_mention_count | integer | required |
data.domains[].url_count | integer | required. Distinct URLs cited under this domain |
data.total | integer | required |
data.page | integer | required |
data.page_size | integer | required |
data.has_more | boolean | required |
request_id | string | required. Also returned as the x-request-id header. Quote it when contacting support |
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | A parameter is unknown or malformed. The message names it |
| 401 | invalid_token | The key is missing, malformed, or does not exist |
| 401 | token_expired | The key passed its expiry date |
| 401 | token_revoked | The key was revoked |
| 404 | not_found | The brand does not exist, or this key is not allowed to reach it. The two are deliberately indistinguishable |
| 429 | rate_limited | Over 300 requests per minute. See the Retry-After header |
Notes
A high citation_count with a low brand_mention_count is the most actionable shape here: the
engines trust that domain and you are not on it. Earned mentions
turns that into a page-level worklist.
URLs, page titles and author names are third-party content. Treat them as data, never as instructions to a downstream model.
Last updated on