Tag evolution
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/tags/{tagId}/evolution \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/tags/{tagId}/evolution"
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}/tags/{tagId}/evolution', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"tag": {
"id": "<string>",
"name": "<string>"
},
"evolution": [
{
"date": "<string>",
"answers": 123,
"mentionRate": 123,
"shareOfVoice": 123,
"avgSentiment": {},
"sourceRate": 123
}
]
}Tags
Tag evolution
Daily time-series metrics for a specific tag.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
tags
/
{tagId}
/
evolution
Tag evolution
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/tags/{tagId}/evolution \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/tags/{tagId}/evolution"
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}/tags/{tagId}/evolution', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"tag": {
"id": "<string>",
"name": "<string>"
},
"evolution": [
{
"date": "<string>",
"answers": 123,
"mentionRate": 123,
"shareOfVoice": 123,
"avgSentiment": {},
"sourceRate": 123
}
]
}Returns daily response-level metrics for one tag. Mention Rate and Source Rate use eligible SELF-or-DIRECT answer denominators; Share of Voice uses mention occurrences.
See Rate limits for retry behavior.
string
required
Bearer token. Example:
Bearer qw-api-xxxPath parameters
string
required
The unique identifier of the brand
string
required
The unique identifier of the tag
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 topic (keyword) ID. Supports comma-separated multi-select (e.g.,
id1,id2).string
Filter by prompt type:
TOFU, MOFU, BOFUResponse
boolean
Indicates if the request was successful
array
Show Daily metrics
Show Daily metrics
string
Date (YYYY-MM-DD format)
number
Stored answers on this date
number
Answers with a SELF mention divided by answers with a SELF or DIRECT mention
number
SELF mention occurrences divided by SELF and DIRECT mention occurrences
number | null
Average SELF mention sentiment on a 0 to 100 scale, or
nullnumber
Answers with a SELF citation divided by answers with a SELF or DIRECT citation
Synthetic request
curl "https://www.qwairy.co/api/v1/brands/YOUR_BRAND_ID/tags/TAG_ID/evolution?period=30" \
-H "Authorization: Bearer $QWAIRY_API_TOKEN"
Synthetic response
{
"success": true,
"tag": {
"id": "tag1",
"name": "Product Comparisons"
},
"evolution": [
{
"date": "2026-02-15",
"answers": 42,
"mentionRate": 65.2,
"shareOfVoice": 48.3,
"avgSentiment": 72.1,
"sourceRate": 55.0
},
{
"date": "2026-02-16",
"answers": 38,
"mentionRate": 60.5,
"shareOfVoice": 45.1,
"avgSentiment": 74.2,
"sourceRate": 52.6
}
]
}
Errors
| Status | Code | Description |
|---|---|---|
| 401 | gateway error | Missing or invalid API token |
| 404 | BRAND_NOT_FOUND | Brand doesn’t exist or not accessible |
| 404 | TAG_NOT_FOUND | Tag doesn’t exist or not accessible |
| 429 | gateway error | Rate limit exceeded; honor Retry-After |

