Skip to main content
POST
/
v2
/
reports
/
query-fanouts
curl -X POST https://api.tryprofound.com/v2/reports/query-fanouts \
  -H "X-API-Key: <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "start_date": "2026-06-09",
    "end_date": "2026-06-15"
  }'
{
  "info": {
    "total_results": 322,
    "count": 10,
    "next_cursor": "Z0FBQUFBQnFQcVJ3R1RlcGtXc0g5eTZT...",
    "models": ["ChatGPT", "Google Gemini", "Perplexity", "Claude", "..."],
    "metrics": ["total_fanouts", "fanouts_per_execution", "query_variations"],
    "start_date": "2026-06-09",
    "end_date": "2026-06-15",
    "coverage_note": "Fanout metrics cover only runs that emitted query-fanout data.",
    "filter": null
  },
  "data": [
    { "prompt": "AI search optimization startups...", "rank": 1, "total_fanouts": 190, "fanouts_per_execution": 3.0, "query_variations": 143 },
    { "prompt": "Best AI visibility products...", "rank": 2, "total_fanouts": 168, "fanouts_per_execution": 2.7, "query_variations": 143 }
    // ...8 more rows in this page (count: 10, total_results: 322); paginate with next_cursor
  ]
}
The search queries an AI generates behind the scenes when answering a prompt. Coverage is partial: metrics cover only runs that emitted fanout data (see info.coverage_note).
  • Metrics: total_fanouts (query count), fanouts_per_execution (avg queries per execution), query_variations (distinct fanout queries), share.
  • group_by: prompt (default), query, model, region, date.
  • query requires prompt in group_by; share requires query; query_variations can’t be combined with query.
  • analysis_type filter defaults to visibility.
New to the v2 reports? See Filtering & concepts for the shared request shape, filter tree, grouping, and pagination.
POST /v2/reports/query-fanouts/stream takes the same request body and returns Server-Sent Events: one summary event (the info block), then one result event per row. limit/cursor are ignored; it returns everything by default. Pass max_results to cap.
Response (text/event-stream)
event: summary
data: { ...the info block... }

event: result    ← one per row, same shape as data[] above
data: {"prompt": "AI search optimization startups...", "rank": 1, "total_fanouts": 190, "fanouts_per_execution": 3.0, "query_variations": 143}
curl -X POST https://api.tryprofound.com/v2/reports/query-fanouts \
  -H "X-API-Key: <your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "start_date": "2026-06-09",
    "end_date": "2026-06-15"
  }'
{
  "info": {
    "total_results": 322,
    "count": 10,
    "next_cursor": "Z0FBQUFBQnFQcVJ3R1RlcGtXc0g5eTZT...",
    "models": ["ChatGPT", "Google Gemini", "Perplexity", "Claude", "..."],
    "metrics": ["total_fanouts", "fanouts_per_execution", "query_variations"],
    "start_date": "2026-06-09",
    "end_date": "2026-06-15",
    "coverage_note": "Fanout metrics cover only runs that emitted query-fanout data.",
    "filter": null
  },
  "data": [
    { "prompt": "AI search optimization startups...", "rank": 1, "total_fanouts": 190, "fanouts_per_execution": 3.0, "query_variations": 143 },
    { "prompt": "Best AI visibility products...", "rank": 2, "total_fanouts": 168, "fanouts_per_execution": 2.7, "query_variations": 143 }
    // ...8 more rows in this page (count: 10, total_results: 322); paginate with next_cursor
  ]
}

Authorizations

X-API-Key
string
header
required

Body

application/json
category_id
string
required
start_date
string
required

YYYY-MM-DD, ET, inclusive

end_date
string
required

YYYY-MM-DD, ET, inclusive

group_by
enum<string>[]
Available options:
date,
model,
region,
prompt,
query
metrics
enum<string>[] | null
Available options:
fanouts_per_execution,
total_fanouts,
share,
query_variations
interval
enum<string>
default:day
Available options:
day,
week,
month
filter
FilterNode · object

A leaf (field/op/value) or an and/or/not group.

sort
SortSpec · object
limit
integer | null

Page size; default 10, max 50.

Required range: 0 < x <= 50
max_results
integer | null

Stream endpoint only: cap the number of streamed rows (default: all).

Required range: x > 0
cursor
string | null

Response

Successful Response

The response is of type Response Query Fanouts V2 V2 Reports Query Fanouts Post · object.