curl -X POST https://api.tryprofound.com/v2/reports/social/youtube/channels \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"group_by": ["channel", "source_type"],
"source_types": ["video", "short"],
"limit": 10
}'
{
"info": {
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"total_results": 137,
"count": 2,
"next_cursor": "eyJvIjoxMH0",
"limit": 10,
"interval": null,
"group_by": ["channel", "source_type"],
"models": ["ChatGPT", "Google Gemini"],
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"filter": null,
"source_types": ["video", "short"]
},
"data": [
{
"name": "Example Channel",
"handle": "examplechannel",
"url": "https://www.youtube.com/@examplechannel",
"rank": 1,
"source_type": "video",
"count": 128,
"videos": 14,
"citation_share": 0.37
},
{
"name": "Example Channel",
"handle": "examplechannel",
"url": "https://www.youtube.com/@examplechannel",
"rank": 1,
"source_type": "short",
"count": 42,
"videos": 8,
"citation_share": 0.12
}
]
}
Channels
Rank the YouTube channels cited in a category, or the video categories they publish in.
curl -X POST https://api.tryprofound.com/v2/reports/social/youtube/channels \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"group_by": ["channel", "source_type"],
"source_types": ["video", "short"],
"limit": 10
}'
{
"info": {
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"total_results": 137,
"count": 2,
"next_cursor": "eyJvIjoxMH0",
"limit": 10,
"interval": null,
"group_by": ["channel", "source_type"],
"models": ["ChatGPT", "Google Gemini"],
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"filter": null,
"source_types": ["video", "short"]
},
"data": [
{
"name": "Example Channel",
"handle": "examplechannel",
"url": "https://www.youtube.com/@examplechannel",
"rank": 1,
"source_type": "video",
"count": 128,
"videos": 14,
"citation_share": 0.37
},
{
"name": "Example Channel",
"handle": "examplechannel",
"url": "https://www.youtube.com/@examplechannel",
"rank": 1,
"source_type": "short",
"count": 42,
"videos": 8,
"citation_share": 0.12
}
]
}
- Source types:
video,short,channel,playlist, orother. Omitsource_typesto includevideo,short,channel, andplaylist. Provide a non-empty list; duplicate values are de-duplicated. Rollups cannot includeother, because those citations have no channel. group_by:channel(the default),video_category, orsource_type. Supported cross-tabs are["channel", "video_category"],["channel", "source_type"], and["channel", "model"]. Duplicate dimensions are rejected.- Time series: Set
intervaltoday,week, ormonthto return one row per entity per period.dateis the bucket start in ET, so a weekly or monthly bucket can start beforestart_date. Omit it for window totals. - Rows: Fields are conditional:
date,model,source_type, andvideo_categoryappear only with the matchingintervalorgroup_by. Withgroup_by: ["video_category"], the category is returned inname, notvideo_category. An unresolved video category is returned as"", notnull.rankis the leading channel’s rank in the full ranked set and is repeated across that channel’s cross-tab rows. - Pagination:
limitdefaults to 10 and accepts 1–50. Pass the opaqueinfo.next_cursorback as the requestcursorto get the next page;infoechoes yourcursoron pages after the first. The responseinfoechoescategory_id, the effectivelimit, andinterval. - Totals:
total_resultscounts distinct channels in the window, whilecountis the number of rows returned; they use different units. - Filters: Prompt-level fields are
model,topic,region,prompt,persona,tag, andanalysis_type. Thechannelfilter acceptsis,in,contains,not_contains,contains_case_insensitive, andnot_contains_case_insensitive:is/inselect exact handles, while the other operators match channel titles or handles.domainandpageare rejected. Achannelleaf cannot share anorornotwith a prompt-level leaf; put separate layers inandclauses.
limit counts leading channels, not returned rows. For
example, limit: 25 with group_by: ["channel", "video_category"] returns
25 channels but can return more than 25 rows.curl -X POST https://api.tryprofound.com/v2/reports/social/youtube/channels \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"group_by": ["channel", "source_type"],
"source_types": ["video", "short"],
"limit": 10
}'
{
"info": {
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"total_results": 137,
"count": 2,
"next_cursor": "eyJvIjoxMH0",
"limit": 10,
"interval": null,
"group_by": ["channel", "source_type"],
"models": ["ChatGPT", "Google Gemini"],
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"filter": null,
"source_types": ["video", "short"]
},
"data": [
{
"name": "Example Channel",
"handle": "examplechannel",
"url": "https://www.youtube.com/@examplechannel",
"rank": 1,
"source_type": "video",
"count": 128,
"videos": 14,
"citation_share": 0.37
},
{
"name": "Example Channel",
"handle": "examplechannel",
"url": "https://www.youtube.com/@examplechannel",
"rank": 1,
"source_type": "short",
"count": 42,
"videos": 8,
"citation_share": 0.12
}
]
}
Authorizations
Body
Channel and category rollups.
YYYY-MM-DD, ET, inclusive
YYYY-MM-DD, ET, inclusive
Advanced filter tree. Prompt-level dimensions are model, topic, region, prompt, persona, tag, analysis_type. channel covers both channel cases: in with a list of handles selects exactly those channels, resolving each handle to its channel so a renamed channel is never returned in pieces; contains matches a channel's title or handle by name. Combine with and/or/not up to 3 deep. An exact channel selection must be its own and clause, and a channel leaf cannot share an or or not with a prompt-level leaf, because those compile at different stages of the query. domain and page are rejected rather than approximated: every row here is one domain, and page is not a video id.
Show child attributes
Show child attributes
Page size; default 10, max 50.
0 < x <= 50Limit results to YouTube source types: video, short, channel, playlist, or other. Omit to include video, short, channel, and playlist; other is excluded because those citations have no channel. Requests containing other are rejected.
video, short, channel, playlist, other What each row represents. Empty or ["channel"] ranks channels; ["video_category"] ranks content categories; ["source_type"] ranks source types; ["channel", "video_category"], ["channel", "source_type"] and ["channel", "model"] return cross-tabs — a row per channel per category, or per answer engine. limit counts leading channels in every case, so ten channels across nine engines is ten channels and ninety rows.
channel, video_category, model, source_type Return a time series instead of window totals: one row per entity per period, each carrying date. citation_share is then relative to that period, so the series is comparable across periods. Omit for window totals.
day, week, month Was this page helpful?