List source URLs
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/source-urls \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/source-urls"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://www.qwairy.co/api/v1/brands/{brandId}/source-urls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"pagination": {
"total": 123,
"count": 123,
"limit": 123,
"offset": 123
},
"sourceUrls": [
{
"url": "<string>",
"title": "<string>",
"domain": "<string>",
"isSelf": true,
"isCompetitor": true,
"competitors": [
{}
],
"totalMentions": 123,
"avgPosition": 123,
"shareOfVoice": 123,
"topics": [
{}
],
"tags": [
{}
]
}
]
}Sources
List source URLs
Track individual page citations.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
source-urls
List source URLs
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/source-urls \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/source-urls"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://www.qwairy.co/api/v1/brands/{brandId}/source-urls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"pagination": {
"total": 123,
"count": 123,
"limit": 123,
"offset": 123
},
"sourceUrls": [
{
"url": "<string>",
"title": "<string>",
"domain": "<string>",
"isSelf": true,
"isCompetitor": true,
"competitors": [
{}
],
"totalMentions": 123,
"avgPosition": 123,
"shareOfVoice": 123,
"topics": [
{}
],
"tags": [
{}
]
}
]
}Lists cited URLs with occurrence counts, average position, taxonomy, and relationship flags for the selected answer scope.
string
required
Bearer token. Example:
Bearer qw-api-xxxGET /api/v1/brands/{brandId}/source-urls
Path parameters
string
required
The unique identifier of the brand
Query parameters
number
Number of days to include. If not specified, returns all data.
string
Start date in
YYYY-MM-DD. Provide it with endDate; a lone boundary is currently ignored. Choose either period or the complete date pair.string
End date in
YYYY-MM-DD. Provide it with startDate; a lone boundary is currently ignored. Do not combine the complete date pair with period.string
Filter by AI provider. Supports comma-separated multi-select (e.g.,
chatgpt,claude).string
Filter by specific domain
string
Filter by self domains:
true or falsestring
Filter by competitor domains:
true or falsenumber
default:"50"
Maximum number of URLs to return (max: 100)
number
default:"0"
Number of results to skip for pagination
string
default:"mentions"
Field to sort by:
mentions, position, shareOfVoice, urlstring
default:"desc"
Sort order:
asc or descResponse
boolean
Indicates if the request was successful
object
array
Show Source URL object
Show Source URL object
string
Full URL of the cited page
string
Page title (if available)
string
Domain name
boolean
Whether this is your domain
boolean
Whether this is a direct competitor’s domain
array
Names of direct competitors associated with this URL
number
Total citation count
number
Average position in source lists
number
Share of all citations (0-100)
array
Associated topic objects with
id and textarray
Associated tag objects with
id and nameSynthetic request
curl "https://www.qwairy.co/api/v1/brands/YOUR_BRAND_ID/source-urls?isSelf=true&limit=10" \
-H "Authorization: Bearer $QWAIRY_API_TOKEN"
Synthetic response
{
"success": true,
"pagination": {
"total": 156,
"count": 2,
"limit": 10,
"offset": 0
},
"sourceUrls": [
{
"url": "https://acme.example/guides/warehouse-exports",
"title": "Warehouse export guide",
"domain": "acme.example",
"isSelf": true,
"isCompetitor": false,
"competitors": [],
"totalMentions": 45,
"avgPosition": 2.1,
"shareOfVoice": 3.5,
"topics": [{ "id": "topic_01", "text": "Data exports" }],
"tags": [{ "id": "tag_01", "name": "integrations" }]
},
{
"url": "https://rival.example/docs/export-review",
"title": "Export integration overview",
"domain": "rival.example",
"isSelf": false,
"isCompetitor": true,
"competitors": ["Rival Labs"],
"totalMentions": 32,
"avgPosition": 3.4,
"shareOfVoice": 2.1,
"topics": [{ "id": "topic_01", "text": "Data exports" }],
"tags": []
}
]
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | gateway error | Missing or invalid API token |
| 404 | BRAND_NOT_FOUND | Brand doesn’t exist or not accessible |
| 429 | gateway error | Rate limit exceeded; honor Retry-After |
shareOfVoice is the URL’s citation occurrences divided by all citation occurrences in the selected scope. See Rate limits for retry behavior.
