GET AI Crawl Analytics
Retrieve AI crawler activity and paginated page-level crawl analytics.
GET AI Crawl Analytics
These endpoints return AI crawler analytics for the site attached to your API key. Both require Bearer Token authentication.
When no dates are provided, both endpoints return the most recent 24 hours. Custom dates must be valid ISO 8601 values, the start date must not be later than the end date, and the requested range cannot exceed 366 days.
AI crawl overview
GET https://api.faurya.com/api/v1/analytics/ai-crawls
Returns overall AI crawler activity, including provider totals, categories, top pages, provider time series, and recent crawl events.
Query parameters
startDate(string, optional): Inclusive range start in ISO 8601 format. Defaults to 24 hours beforeendDate.endDate(string, optional): Inclusive range end in ISO 8601 format. Defaults to the current time.granularity(string, optional): Time-series grouping. Usehourly,daily,weekly, ormonthly. Defaults tohourly.
Example request
The default request needs no query parameters and returns the latest 24 hours grouped hourly.
const response = await fetch(
"https://api.faurya.com/api/v1/analytics/ai-crawls",
{
headers: {
Authorization: `Bearer ${process.env.FAURYA_API_KEY}`,
},
},
);
const result = await response.json();Response
{
"success": true,
"data": {
"total": 148,
"providers": [
{
"key": "ai_0",
"provider": "OpenAI",
"agent": "ChatGPT-User",
"category": "answer_fetch",
"label": "ChatGPT",
"count": 82,
"percentage": 0.5541
}
],
"categories": {
"answer_fetch": 82,
"ai_crawler": 66
},
"pages": [],
"seriesPages": [],
"timeseries": [],
"rows": [],
"interval": "hour",
"timezone": "UTC",
"websiteDomain": "example.com"
}
}Paginated AI crawl pages
GET https://api.faurya.com/api/v1/analytics/ai-crawls/pages
Returns page-level AI crawl totals, crawler and status-code breakdowns, and chart data. This endpoint is always paginated.
Query parameters
startDate(string, optional): Inclusive range start in ISO 8601 format. Defaults to 24 hours beforeendDate.endDate(string, optional): Inclusive range end in ISO 8601 format. Defaults to the current time.granularity(string, optional): Chart grouping. Usehourly,daily,weekly, ormonthly. Defaults tohourly.limit(number, optional): Number of pages to return. Defaults to40; accepted values are30through40.offset(number, optional): Number of page records to skip. Defaults to0; maximum100000.category(string, optional):all,answer_fetch,training, orindexing.indexingincludes bothsearch_indexandai_crawlerevents.search(string, optional): Case-insensitive search across page path, URL, and hostname.
Example request
const params = new URLSearchParams({
granularity: "hourly",
category: "all",
offset: "0",
limit: "40",
});
const response = await fetch(
`https://api.faurya.com/api/v1/analytics/ai-crawls/pages?${params}`,
{
headers: {
Authorization: `Bearer ${process.env.FAURYA_API_KEY}`,
},
},
);
const result = await response.json();Response
The pagination object is always present, including when no pages match the query. pagination.total is the number of matching page records, while data.total is the total number of matching crawl events.
{
"success": true,
"data": {
"total": 148,
"pages": [
{
"id": "example.com::/pricing",
"hostname": "example.com",
"path": "/pricing",
"href": "https://example.com/pricing",
"count": 34,
"statusCounts": {
"200": 32,
"404": 2
},
"crawlers": []
}
],
"chartPages": [],
"chartData": [],
"hasMore": false,
"resultCount": 1,
"offset": 0,
"limit": 40,
"interval": "hour",
"timezone": "UTC",
"websiteDomain": "example.com"
},
"pagination": {
"limit": 40,
"offset": 0,
"total": 1,
"hasMore": false
}
}To request the next page, add the current limit to offset while pagination.hasMore is true.