Reports
- Daily Reports (V1)
- Hourly Reports (V2)
Examples for V1 report endpoints (
/v1/reports/*): daily pre-aggregated data in EST.
For hourly granularity, use the Hourly Reports (V2) tab above.Raw Agent Analytics log endpoints are retired. For raw per-execution
prompt-answer rows, use
POST /v2/prompts/answers. For bot and referral
traffic, use the aggregated /v2/reports/bots and /v2/reports/referrals
endpoints.- Capacity: Full date ranges in one request using aggregated report endpoints.
- Granularity: Data is bucketed by day. Timestamps are normalized to the start of each day in EST.
Bot Reports
- Bot Highlights
- Citations by Day
- Page Visits by Provider
Get a count of visits by bot type:

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"]
}
{
"info": {}, // removed for brevity
"data": [
{
"metrics": [
20640,
8450,
3646
],
"dimensions": []
}
]
}
Get a count of ChatGPT citations by day:

Note you can easily retrieve the full daily list broken down by bot by substituting:
"dimensions": ["date", "bot_name"],
"filters": [],
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"]
}
{
"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"
]
}
]
}
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.
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
}
}
{
"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
Get a count of referrals 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.
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"]
}
{
"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"
]
}
]
}
Get a count of referrals from AI bots broken down by day:

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"]
}
{
"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"
]
}
]
}
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.
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}
}
{
"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"
]
}
]
}
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%…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"}
}
{
"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"
]
}
]
}
V2 endpoints provide reports at hourly granularity, with data bucketed by UTC hour. They support all the same dimensions, metrics and filters as V1, plus new fields unique to the hourly tables - UTM and referral traffic distinction.V1 daily aggregates are fixed to ET, which means users in other timezones had no way to get data bucketed into their own local days. V2 solves this: because data is bucketed by UTC hour, you can convert your local day boundaries to UTC and query data that lines up with your own calendar days.
V1 vs V2: Use the V1 (daily) tab for daily pre-aggregated reports
(EST-based). V2 is for hour-level granularity (UTC). Raw per-execution
prompt-answer rows are available through
POST /v2/prompts/answers.Fractional-offset timezones: If your local timezone uses a fractional UTC offset (e.g. IST +5:30, Nepal +5:45), a single local hour spans two UTC hour buckets. When querying at hour-level granularity, request 2 consecutive hours to get complete data for that local hour. See Date Ranges & Timezones for details.
Bot Reports
Returns bot traffic data aggregated from the hourly bot breakdown table.- Bot Highlights
- Citations by Day
- Page Visits by Provider
- Hourly Bot Traffic
Get a count of visits by bot type:

POST /v2/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"]
}
Get a count of ChatGPT citations by day:

POST /v2/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"]
}
Get top paths by citations for a specific provider:

POST /v2/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 }
}
Get hourly bot traffic breakdown for a UTC day. Use UTC timestamps to align the query to your local calendar day:
POST /v2/reports/bots HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-16T00:00:00Z",
"end_date": "2025-12-16T23:59:59Z",
"dimensions": ["hour"],
"metrics": ["count", "citations"],
"order_by": { "hour": "asc" }
}
Request body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | yes | - | Domain to query (e.g. www.tryprofound.com) |
start_date | string | yes | - | Start date in UTC. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, YYYY-MM-DD HH:MM:SS, or full ISO timestamp |
end_date | string | no | now (UTC) | End date in UTC. Same formats as start_date |
metrics | string[] | yes | - | One or more metrics to return (see below) |
dimensions | string[] | no | [] | Fields to group results by (see below) |
filters | filter[] | no | [] | Filters to narrow results (see below) |
date_interval | string | no | ”day” | Bucket size for date dimension: “hour” or “day” |
order_by | object | no | first metric desc | Map of field -> “asc” or “desc” |
pagination | object | no | limit: 10000, offset: 0 | Pagination settings |
Metrics
| Metric | Description |
|---|---|
count | Total unique bot visits (all bot types) |
citations | Unique visits from AI assistant bots (e.g. ChatGPT-User, Perplexity-User) |
indexing | Unique visits from web indexing bots (e.g. Googlebot, bingbot) |
training | Unique visits from AI training bots (e.g. GPTBot, ClaudeBot) |
last_visit | Most recent visit timestamp |
Dimensions
| Dimension | Description |
|---|---|
date | Bucketed by date_interval (day or hour). UTC-based |
hour | Raw UTC hour bucket — equivalent to date + date_interval: "hour" with no extra aggregation |
path | URL path |
bot_name | Bot name (e.g. ChatGPT-User, GPTBot) |
bot_provider | Bot provider (e.g. openai, anthropic) |
bot_type | Bot category: ai_assistant, index, ai_training, ai_agent |
Filters
| Field | Operators | Values |
|---|---|---|
path | is, not_is, contains, not_contains, in, not_in | URL path string |
bot_name | is, not_is, contains, not_contains, in, not_in | Bot name string |
bot_provider | is, not_is, contains, not_contains, in, not_in | Provider string |
bot_type | is, not_is, in, not_in | ai_assistant, index, ai_training, ai_agent |
Referral Reports
Returns referral traffic data aggregated from the hourly referral breakdown table.- Referrals By Platform
- Bot Referrals By Day
- Page Level Referrals
- Referrals By Bot
- UTM Traffic
Get a count of referrals broken down by platform (excluding internal traffic):

POST /v2/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"]
}
Get a count of referrals from AI bots broken down by day:

POST /v2/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"]
}
Get top blog paths by external referral visits:

POST /v2/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 }
}
Get top referral sources ranked by visits:

POST /v2/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" }
}
Get UTM referral traffic by Hour:

POST /v2/reports/referrals HTTP/1.1
Content-Type: application/json
X-API-Key: your_api_key
{
"domain": "www.tryprofound.com",
"start_date": "2025-12-16",
"end_date": "2025-12-17",
"dimensions": ["hour"],
"filters": [
{ "field": "referral_type", "operator": "is", "value": "utm" }
],
"metrics": ["visits"],
"order_by": { "hour": "asc" }
}
Request body
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | yes | - | Domain to query |
start_date | string | yes | - | Start date in UTC. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, YYYY-MM-DD HH:MM:SS, or full ISO timestamp |
end_date | string | no | now (UTC) | End date in UTC. Same formats as start_date |
metrics | string[] | yes | - | One or more metrics to return (see below) |
dimensions | string[] | no | [] | Fields to group results by (see below) |
filters | filter[] | no | [] | Filters to narrow results (see below) |
date_interval | string | no | ”day” | Bucket size for date dimension: “hour” or “day” |
order_by | object | no | first metric desc | Map of field -> “asc” or “desc” |
pagination | object | no | limit: 10000, offset: 0 | Pagination settings |
Metrics
| Metric | Description |
|---|---|
visits | Unique page visits |
last_visit | Most recent visit timestamp |
Dimensions
| Dimension | Description |
|---|---|
date | Bucketed by date_interval (day or hour). UTC-based |
hour | Raw UTC hour bucket — equivalent to date + date_interval: "hour" with no extra aggregation |
path | URL path |
referral_source | Referral source (e.g. openai, perplexity, anthropic, other, internal, none) |
referral_type | Traffic category: internal, referer, utm, none |
Filters
| Field | Operators | Values |
|---|---|---|
path | is, not_is, contains, not_contains, in, not_in | URL path string |
referral_source | is, not_is, contains, not_contains, in, not_in | Referral source string |
referral_type | is, not_is, in, not_in | internal, referer, utm, none |
Raw Data
The raw Agent Analytics endpoints
POST /v1/logs/raw and
POST /v1/logs/raw/bots were retired on 2026-06-10. Use the V2 bot and
referral report examples for aggregated traffic data,
or V2 prompt answers for raw
per-execution rows.