Obtenir les analytics des crawlers
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/crawler-analytics \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/crawler-analytics"
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}/crawler-analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"brand": {},
"connected": true,
"lifecycle": {},
"health": {},
"range": {},
"coverage": {
"hasObservations": true,
"dataStatus": "<string>",
"ingestCoverageFlags": 123,
"countPrecision": "<string>",
"deliveryContinuity": "<string>"
},
"totalOccurrences": {},
"identifiedPageOccurrences": 123,
"redirectOccurrences": 123,
"notFoundOccurrences": 123,
"otherErrorOccurrences": 123,
"buckets": [
{}
],
"crawlerStats": [
{}
],
"pages": [
{
"pathId": "<string>",
"path": "<string>",
"isPseudonymized": true,
"firstSeenAt": "<string>",
"lastSeenAt": "<string>",
"lifetimeCount": 123,
"states": [
{}
],
"occurrences": 123,
"crawlerOccurrences": {},
"uniqueCrawlers": 123,
"statusGroups": {},
"crawlerTypes": {}
}
],
"pagination": {},
"rawEventsAvailable": true,
"humanTrafficIncluded": true
}Suivi et mesure
Obtenir les analytics des crawlers
Récupérez l’activité conservée des crawlers IA, la couverture de livraison et les observations par page d’une marque.
GET
https://www.qwairy.co
/
api
/
v1
/
brands
/
{brandId}
/
crawler-analytics
Obtenir les analytics des crawlers
curl --request GET \
--url https://www.qwairy.co/api/v1/brands/{brandId}/crawler-analytics \
--header 'Authorization: <authorization>'import requests
url = "https://www.qwairy.co/api/v1/brands/{brandId}/crawler-analytics"
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}/crawler-analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"brand": {},
"connected": true,
"lifecycle": {},
"health": {},
"range": {},
"coverage": {
"hasObservations": true,
"dataStatus": "<string>",
"ingestCoverageFlags": 123,
"countPrecision": "<string>",
"deliveryContinuity": "<string>"
},
"totalOccurrences": {},
"identifiedPageOccurrences": 123,
"redirectOccurrences": 123,
"notFoundOccurrences": 123,
"otherErrorOccurrences": 123,
"buckets": [
{}
],
"crawlerStats": [
{}
],
"pages": [
{
"pathId": "<string>",
"path": "<string>",
"isPseudonymized": true,
"firstSeenAt": "<string>",
"lastSeenAt": "<string>",
"lifetimeCount": 123,
"states": [
{}
],
"occurrences": 123,
"crawlerOccurrences": {},
"uniqueCrawlers": 123,
"statusGroups": {},
"crawlerTypes": {}
}
],
"pagination": {},
"rawEventsAvailable": true,
"humanTrafficIncluded": true
}Récupère l’activité des crawlers IA observée via l’intégration de journaux configurée pour la marque. L’endpoint renvoie des agrégats quotidiens et des observations par page. Il ne renvoie jamais d’événements de journaux bruts ni de trafic humain.
Tous les totaux d’occurrences, ventilations par crawler et classements de pages utilisent l’ensemble public des identités User-Agent propres à l’IA, observables et prises en charge. Le registre d’ingestion peut reconnaître d’autres identités pour la classification et la compatibilité, mais l’endpoint les exclut de ses analytics publics. La classification se fonde sur le jeton User-Agent reçu ; elle ne vérifie ni l’IP source ni le DNS inverse.
Consultez Analytics des crawlers pour la configuration et l’interface produit, et Limites de débit pour la gestion des nouvelles tentatives.
Cet endpoint exige une offre Business, Enterprise ou Agency Business active, ou une activation explicite de la fonctionnalité Analytics des crawlers pour l’équipe. Les résultats sont des observations : vérifiez
coverage avant d’interpréter des volumes ou de comparer des périodes.string
requis
Jeton bearer. Exemple :
Bearer qw-api-xxxParamètres de chemin
string
requis
Identifiant unique de la marque.
Paramètres de requête
string
défaut:"30d"
Préréglage de jours d’analyse inclus, dans le fuseau horaire IANA de l’intégration :
24h est le jour d’analyse en cours, 7d ce jour et les six précédents, 30d ce jour et les 29 précédents. 24h n’est pas une fenêtre glissante de 24 heures.string
défaut:"all"
Filtre d’état des pages :
all, new, hot ou neglected.number
défaut:"1"
Numéro de page, à partir de 1. Maximum :
10000.number
défaut:"50"
Taille de page. Maximum :
100.Signification des états de page
new: la première observation conservée de la page date des 7 derniers jours, borne incluse (firstSeenAt >= now - 7 days).hot: la page fait partie du premier décile en occurrences de crawlers pris en charge sur les 7 jours d’analyse en cours, a de l’activité sur au moins 2 de ces jours et n’est pas délaissée.neglected: la dernière observation conservée de la page est strictement antérieure à la limite de 30 jours.
new et hot peuvent coexister. neglected est exclusif. La fenêtre de hot ne dépend pas du range demandé.
Réponse
boolean
Indique si la requête a réussi.
object
id, name et domain de la marque.boolean
Indique si l’intégration est active, non désactivée, et dispose d’au moins une clé active non révoquée.
string | null
Cycle de vie actuel de l’intégration, ou
null s’il n’y a pas d’intégration.string | null
Santé actuelle de l’intégration, ou
null s’il n’y a pas d’intégration.object
Dates demandées et effectives, nombres de tranches observées et vérifiées, état de troncature et horodatage
asOf.object
Afficher Détail de la couverture
Afficher Détail de la couverture
boolean
Indique si la plage sélectionnée contient au moins une occurrence publique prise en charge.
string
observed lorsque des observations prises en charge existent sans lacune connue ; not_measured lorsqu’il n’y en a aucune et qu’aucune lacune n’est connue ; incomplete_ingestion en cas de limite de quota ou de lacune du fournisseur, avec ou sans observations.number
Indicateurs binaires :
1 livraison non vérifiée, 2 quota limité et 4 lacune du fournisseur.string
exact ; at_least_once lorsque des renvois reconditionnés peuvent dupliquer des observations ; ou capped lorsqu’un volume dépasse la précision numérique sûre.string
verified lorsque chaque tranche écoulée est vérifiée ; incomplete en cas de lacune connue ou de changement de profil ; sinon unverified.number | null
Occurrences observées de l’ensemble public des crawlers pris en charge sur la plage effective. Une valeur numérique n’est renvoyée que si au moins une synthèse publique prise en charge a un nombre de requêtes positif ; sinon la valeur est
null, et non un zéro mesuré. En cas d’ingestion incomplète, une valeur numérique peut rester partielle.number
Occurrences associées à une identité de page conservée.
number
Requêtes ayant renvoyé une redirection.
number
Requêtes ayant renvoyé
404.number
Autres réponses d’erreur observées.
array
Totaux quotidiens, ventilations par crawler, totaux d’erreurs et métadonnées de couverture.
array
Totaux par crawler de l’ensemble public pris en charge, avec son nom affiché, son type de robot et sa ventilation des erreurs.
array
Afficher Observation de page
Afficher Observation de page
string
Identité stable de la page.
string
Chemin observé ou pseudonyme interne.
boolean
Si
true, ne reconstituez pas d’URL à partir de path et n’y faites pas de lien.string
Horodatage de la première observation.
string
Horodatage de l’observation la plus récente.
number
Nombre d’occurrences conservé sur toute la durée.
array
États calculés.
new et hot peuvent coexister ; neglected est exclusif.number
Occurrences sur la plage sélectionnée.
object
Nombre d’occurrences par nom de crawler.
number
Crawlers distincts observés.
object
Totaux par groupe de statuts HTTP.
object
Totaux des crawlers de recherche en direct, d’entraînement et autres.
Les synthèses quotidiennes par page et par crawler conservent 30 jours d’analyse. Les identités de pages durables conservent la première et la dernière observation ainsi que le total sur toute la durée au-delà de cette fenêtre. Les paramètres de requête et les fragments sont supprimés ; les chemins d’apparence sensible ou trop longs peuvent être remplacés par un pseudonyme irréversible propre à l’intégration.
object
page (à partir de 1), limit, totalItems, totalPages et hasMore.boolean
Toujours
false. Cet endpoint n’expose pas les événements de journaux bruts.boolean
Toujours
false.Exemple de requête
curl "https://www.qwairy.co/api/v1/brands/cm1234567890abcdef/crawler-analytics?range=7d&state=hot&limit=25" \
-H "Authorization: Bearer qw-api-your-token-here"
Interpréter les données manquantes ou incomplètes
- Considérez
totalOccurrences: nullcomme non mesuré. Ne le convertissez pas en zéro. - Vérifiez
coverage.dataStatus,countPrecisionetdeliveryContinuityavant de comparer des périodes. - Utilisez
range.startDateetrange.endDatecomme fenêtre de comparaison effective. - Ne construisez pas d’URL publique à partir d’une page dont
isPseudonymizedvauttrue.
Erreurs
| Statut | Signification |
|---|---|
400 | Valeur de plage, d’état ou de pagination invalide |
401 | Jeton d’API manquant ou invalide |
403 | L’équipe n’a ni offre active éligible ni activation explicite d’Analytics des crawlers |
404 | Marque introuvable ou inaccessible à l’équipe du jeton |
429 | Limite de débit dépassée ; respectez Retry-After |

