Reports
The following examples are provided as reference to recreate the metrics in the dashboard for your own purposes. Please note:- The endpoints have far larger capacity than the
/v1/logs/*endpoints. With millions of logs, querying 10,000 at a time is cumbersome. These endpoints retrieve pre-aggregated data. - Response times will be much faster than the
/v1/logs/*endpoints. - Pre-aggregation happens at the daily level. Only day-by-day data is available via these endpoints, finer granularity requires querying the
/v1/logs/*endpoints. - Timestamps are converted to start of day, EST.
Bot Reports
- Bot Highlights
- Citations by Day
- Page Visits by Provider
Use the following request to get a count of visits by bot type:

Copy
Ask AI
POST /v1/reports/bots HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"metrics": ["citations", "training", "indexing"]
}
Copy
Ask AI
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
20640,
8450,
3646
],
"dimensions": []
}
]
}
Use the following request to get a count of ChatGPT citations by day:

Note you can easily retrieve the full daily list broken down by bot by substituting:
Copy
Ask AI
"dimensions": ["date", "bot_name"],
"filters": [],
Copy
Ask AI
POST /v1/reports/bots HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["date"],
"filters": [
{"field": "bot_name", "operator": "is", "value": "ChatGPT-User"}
],
"order_by": {
"date": "desc"
},
"metrics": ["citations"]
}
Copy
Ask AI
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
2698
],
"dimensions": [
"2025-12-18"
]
},
{
"metrics": [
2847
],
"dimensions": [
"2025-12-17"
]
},
{
"metrics": [
2986
],
"dimensions": [
"2025-12-16"
]
},
{
"metrics": [
3029
],
"dimensions": [
"2025-12-15"
]
},
{
"metrics": [
2075
],
"dimensions": [
"2025-12-14"
]
},
{
"metrics": [
1881
],
"dimensions": [
"2025-12-13"
]
},
{
"metrics": [
2717
],
"dimensions": [
"2025-12-12"
]
}
]
}
Use the following request to get a count of page visits by bot type, scoped to a provider:
Note the OpenAI Platforms selection in the top right.

See metrics for all providers by removing the filter.
Copy
Ask AI
POST /v1/reports/bots HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["path"],
"filters": [
{"field": "bot_provider", "operator": "is", "value": "openai"}
],
"order_by": {"citations": "desc"},
"metrics": ["citations", "indexing", "training"],
"pagination": {
"limit": 10,
"offset": 0
}
}
Copy
Ask AI
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
1255,
1614,
38
],
"dimensions": [
"/"
]
},
{
"metrics": [
643,
5,
1
],
"dimensions": [
"/guides/generative-engine-optimization-geo-guide-2025"
]
},
{
"metrics": [
603,
18,
3
],
"dimensions": [
"/blog/now-tracking-gpt-5-2-in-chatgpt"
]
},
{
"metrics": [
584,
7,
3
],
"dimensions": [
"/blog/ai-platform-citation-patterns"
]
},
{
"metrics": [
445,
1,
0
],
"dimensions": [
"/blog/best-generative-engine-optimization-tools"
]
},
{
"metrics": [
396,
14,
1
],
"dimensions": [
"/profound-index"
]
},
{
"metrics": [
385,
6,
1
],
"dimensions": [
"/guides/what-is-answer-engine-optimization"
]
},
{
"metrics": [
376,
2,
0
],
"dimensions": [
"/blog/semrush-ai-visibility-toolkit-review"
]
},
{
"metrics": [
372,
5,
2
],
"dimensions": [
"/blog/understanding-grok-a-comprehensive-guide-to-grok-websearch-grok-deepsearch"
]
},
{
"metrics": [
371,
7,
1
],
"dimensions": [
"/blog/choosing-ai-visibility-provider"
]
}
]
}
Referral Reports
- Referrals By Platform
- Bot Referrals By Day
- Page Level Referrals
- Referrals By Bot
Use the following request to get a count of refferals broken down by platform:
Note:
other represents referrals from Traditional Sources, e.g. LinkedIn, Facebook, etc.internal represents referrals from within your website, e.g. a blog post linking to another blog post.
Copy
Ask AI
POST /v1/reports/referrals HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["referral_source"],
"filters": [
{"field": "referral_source", "operator": "not_in", "value": ["none", "internal"]}
],
"metrics": ["visits"]
}
Copy
Ask AI
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
222022
],
"dimensions": [
"other"
]
},
{
"metrics": [
5171
],
"dimensions": [
"openai"
]
},
{
"metrics": [
102
],
"dimensions": [
"perplexity"
]
},
{
"metrics": [
39
],
"dimensions": [
"gemini"
]
},
{
"metrics": [
22
],
"dimensions": [
"anthropic"
]
},
{
"metrics": [
2
],
"dimensions": [
"deepseek"
]
}
]
}
Use the following request to get a count of referrals from AI bots broken down by day:

Copy
Ask AI
POST /v1/reports/referrals HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["date"],
"filters": [
{"field": "referral_source", "operator": "not_in", "value": ["none", "other", "internal"]}
],
"order_by": {"date": "desc"},
"metrics": ["visits"]
}
Copy
Ask AI
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
977
],
"dimensions": [
"2025-12-18"
]
},
{
"metrics": [
906
],
"dimensions": [
"2025-12-17"
]
},
{
"metrics": [
719
],
"dimensions": [
"2025-12-16"
]
},
{
"metrics": [
571
],
"dimensions": [
"2025-12-15"
]
},
{
"metrics": [
665
],
"dimensions": [
"2025-12-14"
]
},
{
"metrics": [
655
],
"dimensions": [
"2025-12-13"
]
},
{
"metrics": [
844
],
"dimensions": [
"2025-12-12"
]
}
]
}
Use the following request to get a count of referrals broken down by a given page:
Note
/blog in the search bar.
% of Bot Referrals can be calculated by summing the total number of referrals, and dividing each bot’s referrals by the total.
Copy
Ask AI
POST /v1/reports/referrals HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["path"],
"filters": [
{"field": "referral_source", "operator": "not_in", "value": ["none", "other", "internal"]},
{"field": "path", "operator": "contains", "value": "/blog"}
],
"metrics": ["visits"],
"order_by": {"visits": "desc"},
"pagination": {"limit": 10, "offset": 0}
}
Copy
Ask AI
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
915
],
"dimensions": [
"/blog/ai-platform-citation-patterns"
]
},
{
"metrics": [
350
],
"dimensions": [
"/blog/bring-profound-data-directly-into-your-ai-workflow-with-mcp"
]
},
{
"metrics": [
99
],
"dimensions": [
"/blog/citation-overlap-strategy"
]
},
{
"metrics": [
87
],
"dimensions": [
"/blog/the-data-on-reddit-and-ai-search"
]
},
{
"metrics": [
65
],
"dimensions": [
"/blog/best-generative-engine-optimization-tools"
]
},
{
"metrics": [
58
],
"dimensions": [
"/blog/chatgpt-entity-update"
]
},
{
"metrics": [
56
],
"dimensions": [
"/blog/prompt-volumes-the-new-way-to-see-what-customers-ask-answer-engines"
]
},
{
"metrics": [
50
],
"dimensions": [
"/blog/seeing-what-customers-see-direct-ai-search-engine-monitoring-vs-api-limitations"
]
},
{
"metrics": [
40
],
"dimensions": [
"/blog/choosing-ai-visibility-provider"
]
},
{
"metrics": [
33
],
"dimensions": [
"/blog/ai-search-volatility"
]
}
]
}
Use the following request to get a count of referrals broken down by bot:

% of Referrals here means the proportion of referred visits from non-internal sources that came from this bot.To calculate this, sum the total number of referrals in the response:
total_referrals = 222126 + 5172 + 102 + 39 + 22 + 2 = 227481Then, for each bot, divide its referrals by the total:ChatGPT % = (5172 / 227481) * 100 = 2.27%…Copy
Ask AI
POST /v1/reports/referrals HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["referral_source"],
"filters": [
{"field": "referral_source", "operator": "not_in", "value": ["none", "internal"]}
],
"metrics": ["visits"],
"order_by": {"visits": "desc"}
}
Copy
Ask AI
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
222126
],
"dimensions": [
"other"
]
},
{
"metrics": [
5172
],
"dimensions": [
"openai"
]
},
{
"metrics": [
102
],
"dimensions": [
"perplexity"
]
},
{
"metrics": [
39
],
"dimensions": [
"gemini"
]
},
{
"metrics": [
22
],
"dimensions": [
"anthropic"
]
},
{
"metrics": [
2
],
"dimensions": [
"deepseek"
]
}
]
}
Raw Data
The API also exposes endpoints for retreiving raw data. Raw data is not pre-aggregated. This means that the response times will be slower than the pre-aggregated endpoints, and response sizes will be significantly larger. Moreover, for sites with millions of visits per day, querying 10,000 at a time is infeasible. Use the pre-aggregated endpoints for most use cases.Raw data is not cleaned. Raw data may include duplicate entries, logs to static assets (e.g. “_next/static/chunks/…”) and other non-user-facing logs.
These are deduplicated, filtered, and cleaned in the pre-aggregation process. This also includes removing non-200 requests, non-GET requests, etc.
- Get Live Bot Log Stream
- Get Live Log Stream
- Count All Logs
- Count Citations
- Training Data
Use the following request to recreate the live log stream:
Note the filters applied in the top right. The dashboard is showing a live log stream with,
- Status Codes:
2xx - Visit Types:
Bot Visits - Bot Types:
AI Assistant - Platforms:
NOT ChatGPT

Copy
Ask AI
POST /v1/logs/raw HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-17T23:59:59",
"dimensions": ["timestamp", "bot_provider", "bot_name", "bot_types", "user_agent", "path", "query_params"],
"filters": [
{"field": "status_code", "operator": "is", "value": 200},
{"field": "bot_types", "operator": "contains", "value": "ai_assistant"},
{"field": "bot_name", "operator": "not_is", "value": "ChatGPT-User"}
],
"metrics": [],
"pagination": {"limit": 10, "offset": 0},
"order_by": {"timestamp": "desc"}
}
Copy
Ask AI
[
{
"timestamp": "2025-12-19T04:10:59",
"path": "/blog/technology",
"user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)",
"query_params": {},
"bot_name": "PerplexityBot",
"bot_provider": "perplexity",
"bot_types": [
"index",
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T04:10:37",
"path": "/customers/1840-co-answer-engine-optimization-case-study",
"user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)",
"query_params": {},
"bot_name": "PerplexityBot",
"bot_provider": "perplexity",
"bot_types": [
"index",
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:43:25",
"path": "/blog/what-is-claude-web-search-explained",
"user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)",
"query_params": {},
"bot_name": "PerplexityBot",
"bot_provider": "perplexity",
"bot_types": [
"index",
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:36:44",
"path": "/_next/static/chunks/6d678fe91afd78f8.js",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)",
"query_params": {
"dpl": "..."
},
"bot_name": "Applebot",
"bot_provider": "apple",
"bot_types": [
"index",
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:35:13",
"path": "/blog/best-generative-engine-optimization-tools",
"user_agent": "DuckAssistBot/1.2; (+http://duckduckgo.com/duckassistbot.html)",
"query_params": {},
"bot_name": "DuckAssistBot",
"bot_provider": "duckduckgo",
"bot_types": [
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:34:31",
"path": "/blog/9-best-answer-engine-optimization-platforms",
"user_agent": "DuckAssistBot/1.2; (+http://duckduckgo.com/duckassistbot.html)",
"query_params": {},
"bot_name": "DuckAssistBot",
"bot_provider": "duckduckgo",
"bot_types": [
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:34:31",
"path": "/robots.txt",
"user_agent": "DuckAssistBot/1.2; (+http://duckduckgo.com/duckassistbot.html)",
"query_params": {},
"bot_name": "DuckAssistBot",
"bot_provider": "duckduckgo",
"bot_types": [
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:30:50",
"path": "/careers/technical-operations-engineer",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)",
"query_params": {},
"bot_name": "Applebot",
"bot_provider": "apple",
"bot_types": [
"index",
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:29:42",
"path": "/",
"user_agent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
"query_params": {},
"bot_name": "Google-CloudVertexBot",
"bot_provider": "google",
"bot_types": [
"ai_assistant"
]
},
{
"timestamp": "2025-12-19T03:29:19",
"path": "/",
"user_agent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.7390.122 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
"query_params": {
"_rsc": "..."
},
"bot_name": "Google-CloudVertexBot",
"bot_provider": "google",
"bot_types": [
"ai_assistant"
]
}
]
Use the following request to recreate the live log stream:
Note the filter applied: Visit Types:
Bot Visits
You can still use filters to apply limited sanitation of the data. E.g.:
Copy
Ask AI
{"field": "method", "operator": "is", "value": "GET"},
{"field": "status_code", "operator": "is", "value": 200},
{"field": "path", "operator": "not_contains", "value": "_next"}
Copy
Ask AI
POST /v1/logs/raw HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-17T23:59:59",
"dimensions": [
"timestamp",
"method",
"status_code",
"referer",
"user_agent",
"path",
"query_params"
],
"filters": [
{"field": "path", "operator": "not_contains", "value": "_next"}
],
"metrics": [],
"pagination": {"limit": 10, "offset": 0},
"order_by": {"timestamp": "desc"}
}
Copy
Ask AI
[
{
"timestamp": "2025-12-19T04:29:05",
"method": "GET",
"path": "/solutions/aeo-teams",
"status_code": 200,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
"referer": "https://www.tryprofound.com/solutions/aeo-teams",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:29:03",
"method": "GET",
"path": "/solutions/aeo-teams",
"status_code": 504,
"user_agent": "nginx-ssl early hints",
"referer": "",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:57",
"method": "GET",
"path": "/",
"status_code": 200,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"referer": "https://www.tryprofound.com/blog/the-data-on-reddit-and-ai-search",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:56",
"method": "GET",
"path": "/enterprise",
"status_code": 200,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"referer": "https://www.tryprofound.com/blog/the-data-on-reddit-and-ai-search",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:56",
"method": "GET",
"path": "/pricing",
"status_code": 200,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"referer": "https://www.tryprofound.com/blog/the-data-on-reddit-and-ai-search",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:56",
"method": "GET",
"path": "/enterprise",
"status_code": 504,
"user_agent": "nginx-ssl early hints",
"referer": "",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:56",
"method": "GET",
"path": "/pricing",
"status_code": 504,
"user_agent": "nginx-ssl early hints",
"referer": "",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:55",
"method": "GET",
"path": "/blog",
"status_code": 200,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"referer": "https://www.tryprofound.com/blog/the-data-on-reddit-and-ai-search",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:55",
"method": "GET",
"path": "/blog",
"status_code": 200,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"referer": "https://www.tryprofound.com/blog/the-data-on-reddit-and-ai-search",
"query_params": {
"_rsc": "..."
}
},
{
"timestamp": "2025-12-19T04:28:55",
"method": "GET",
"path": "/careers",
"status_code": 200,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"referer": "https://www.tryprofound.com/blog/the-data-on-reddit-and-ai-search",
"query_params": {
"_rsc": "..."
}
}
]
Retrieve total log count
Copy
Ask AI
POST /v1/logs/raw HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": [],
"filters": [
{"field": "method", "operator": "is", "value": "GET"},
{"field": "status_code", "operator": "is", "value": 200}
],
"metrics": ["count"],
"pagination": {"limit": 100, "offset": 0}
}
Count citations for a given path by bot
Copy
Ask AI
POST /v1/logs/raw/bots HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["path", "bot_name"],
"filters": [
{"field": "method", "operator": "is", "value": "GET"},
{"field": "status_code", "operator": "is", "value": 200},
{"field": "path", "operator": "is", "value": "/blog"},
{"field": "bot_types", "operator": "contains", "value": "ai_assistant"}
],
"metrics": ["count"],
"pagination": {"limit": 1000, "offset": 0},
"order_by": {"count": "desc"}
}
Get top 5 pages used for training
Copy
Ask AI
POST /v1/logs/raw/bots HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-12",
"end_date": "2025-12-18",
"dimensions": ["path"],
"filters": [
{"field": "method", "operator": "is", "value": "GET"},
{"field": "status_code", "operator": "is", "value": 200},
{"field": "bot_types", "operator": "contains", "value": "ai_training"}
],
"metrics": ["count"],
"order_by": {"count": "desc"},
"pagination": {"limit": 5, "offset": 0}
}