Docs
Channel Research
Search and filter YouTube channels with similarity search and realtime growth metrics.
Search and filter YouTube channels programmatically. Uses similarity search combined with keyword matching, advanced filters, and realtime 24h/48h growth metrics. No credits required — available on all plans.
Two channel databases: /api/channels/search queries Shorts channels (vertical short-form content creators). /api/longform-channels/search queries Longform channels (standard YouTube video creators). Both support the same search and filter capabilities.
GET/api/channels/search
Search Shorts channels with similarity search, keyword matching, and advanced filters. Returns channel metadata, realtime growth metrics (24h/48h), and recent videos. Results are paginated.
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| q | string | Required | — | Search query. Accepts a channel ID (e.g. UCXx6GV...), @handle (e.g. @MrBeast), a video URL (e.g. https://youtube.com/shorts/..., https://youtu.be/...), or a search term. Comma-separated for multiple keywords. Prefix with - to exclude (e.g. gaming,-minecraft). |
| sort | string | Optional | subs_desc | Sort field and direction. Format: {field}_{asc|desc}. Fields: subs, views, videos, age, added, views_24h, subs_24h, views_48h, similarity |
| page | integer | Optional | 1 | Page number (1-indexed) |
| per_page | integer | Optional | 20 | Results per page (max 50) |
| languages | string | Optional | English | Shorts only. Comma-separated full names: English, Spanish, Portuguese, German, French, Japanese, Korean (e.g. Spanish,Portuguese). Defaults to English. Longform is English only and ignores it. |
| min_subs | integer | Optional | — | Minimum subscriber count |
| max_subs | integer | Optional | — | Maximum subscriber count |
| min_avg_views | integer | Optional | — | Minimum average views per video |
| max_avg_views | integer | Optional | — | Maximum average views per video |
| min_age | integer | Optional | — | Minimum channel age in days |
| max_age | integer | Optional | — | Maximum channel age in days |
| min_uploads | integer | Optional | — | Minimum number of videos |
| max_uploads | integer | — | — | Maximum number of videos |
| min_views | integer | Optional | — | Minimum total view count |
| max_views | integer | Optional | — | Maximum total view count |
| min_views_24h | integer | Optional | — | Minimum views gained in last 24 hours |
| max_views_24h | integer | Optional | — | Maximum views gained in last 24 hours |
| min_views_48h | integer | Optional | — | Minimum views gained in last 48 hours |
| max_views_48h | integer | Optional | — | Maximum views gained in last 48 hours |
| min_similarity | integer | Optional | — | Minimum similarity score (0–100). Tightens the default similarity bar; only effective when q is a channel identifier or topic keyword and an embedding was generated. |
Response Fields
| Field | Type | Description |
|---|---|---|
| channel_id | string | YouTube channel ID |
| channel_title | string | Channel name |
| subscriber_count | integer | Current subscriber count |
| avg_views_per_video | integer | Average views across all videos |
| total_videos | integer | Number of videos on the channel |
| channel_age_days | integer | Days since first upload |
| view_count | integer | Total channel views |
| primary_language | string | Detected content language |
| thumbnail_url | string | Channel profile picture URL |
| view_increase_24h | integer|null | Views gained in last 24 hours |
| sub_increase_24h | integer|null | Subscribers gained in last 24 hours |
| view_increase_48h | integer|null | Views gained in last 48 hours |
| similarity_score | integer|null | Similarity score (0–100) when using q search. Higher = more relevant. |
| recent_videos | array | Up to 6 most recent videos with video_id, title, view_count, upload_date, thumbnail_url, url |
200 Success 401 Auth failed 500 Server error
# Similarity search for gaming channels curl "https://api.algrow.online/api/channels/search?q=gaming&per_page=5" \ -H "Authorization: Bearer YOUR_API_KEY" # Filter: young channels with high views, sorted by 24h growth curl "https://api.algrow.online/api/channels/search?max_age=90&min_avg_views=500000&sort=views_24h_desc" \ -H "Authorization: Bearer YOUR_API_KEY" # Exclude keywords: cooking channels but not baking curl "https://api.algrow.online/api/channels/search?q=cooking,-baking&per_page=10" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"success": true,
"page": 1,
"per_page": 5,
"count": 5,
"channels": [
{
"channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
"channel_title": "Epic Gaming Shorts",
"subscriber_count": 245000,
"avg_views_per_video": 1850000,
"total_videos": 47,
"channel_age_days": 182,
"view_count": 86950000,
"primary_language": "English",
"thumbnail_url": "https://yt3.ggpht.com/...",
"view_increase_24h": 320000,
"sub_increase_24h": 1200,
"view_increase_48h": 580000,
"similarity_score": 87,
"recent_videos": [
{
"video_id": "dQw4w9WgXcQ",
"title": "This game is INSANE",
"view_count": 4200000,
"upload_date": "2026-03-15",
"thumbnail_url": "https://i.ytimg.com/vi/...",
"url": "https://www.youtube.com/shorts/dQw4w9WgXcQ"
}
]
}
]
}GET/api/longform-channels/search
Search Longform channels (standard YouTube creators) with the same similarity search and filtering capabilities. Returns channel metadata, realtime growth metrics, and recent videos with duration info.
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| q | string | Optional | — | Search query. Accepts a channel ID, @handle, a video URL (e.g. https://youtube.com/shorts/..., https://youtu.be/...), or a search term. Comma-separated for multiple keywords, - to exclude. Omittable for browse mode when a sells/monetization/faceless/gender/age filter is present — combine with sort=age_asc for newest-first browsing. |
| sort | string | Optional | subs_desc | Sort field and direction. Fields: subs, views, videos, age, total_views, added, views_24h, subs_24h, views_48h, similarity |
| page | integer | Optional | 1 | Page number (1-indexed) |
| per_page | integer | Optional | 20 | Results per page (max 50) |
| min_subs | integer | Optional | — | Minimum subscriber count |
| max_subs | integer | Optional | — | Maximum subscriber count |
| min_avg_views | integer | Optional | — | Minimum average views per video |
| max_avg_views | integer | Optional | — | Maximum average views per video |
| min_age | integer | Optional | — | Minimum channel age in days |
| max_age | integer | Optional | — | Maximum channel age in days |
| min_uploads | integer | Optional | — | Minimum number of videos |
| max_uploads | integer | Optional | — | Maximum number of videos |
| min_duration | integer | Optional | — | Minimum average video duration in seconds |
| max_duration | integer | Optional | — | Maximum average video duration in seconds |
| monetized | string | Optional | — | Filter by monetization: yes or no |
| demonetized | string | Optional | — | yes = only channels that lost ad monetization and have not got it back, newest first, each with demonetized_at. $0.20 a search from credits. Combine with within (days) and any other filter. |
| faceless | string | Optional | — | Filter by faceless classification: yes = only faceless channels (no on-camera host), no = only on-camera channels. Channels not yet classified are excluded from both filtered views. |
| min_views_24h | integer | Optional | — | Minimum views gained in last 24 hours |
| max_views_24h | integer | Optional | — | Maximum views gained in last 24 hours |
| min_views_48h | integer | Optional | — | Minimum views gained in last 48 hours |
| max_views_48h | integer | Optional | — | Maximum views gained in last 48 hours |
| categories | string | Optional | — | Comma-separated content categories. Lowercase, from: tutorial, educational, documentary, gaming, reviews, commentary, compilation, stories, interview, challenge videos, diy, speeches, memes. Unknown values return 400. |
| min_similarity | integer | Optional | — | Minimum similarity score (0–100). Tightens the default 30% similarity floor; only effective when q is a channel identifier or topic keyword. Values below 30 are clamped to the default. |
Longform vs Shorts response differences: Longform channels use id and name instead of channel_id and channel_title. Videos include a duration field (in seconds). Longform also has monetized, url, and upload_day (days active) fields.
200 Success 401 Auth failed 500 Server error
# Search for finance channels under 1 year old curl "https://api.algrow.online/api/longform-channels/search?q=finance&max_age=365" \ -H "Authorization: Bearer YOUR_API_KEY" # High-growth longform channels sorted by 24h views curl "https://api.algrow.online/api/longform-channels/search?min_views_24h=50000&sort=views_24h_desc&per_page=10" \ -H "Authorization: Bearer YOUR_API_KEY" # Monetized channels with specific subscriber range curl "https://api.algrow.online/api/longform-channels/search?min_subs=10000&max_subs=100000&monetized=yes" \ -H "Authorization: Bearer YOUR_API_KEY" # Documentary channels only curl "https://api.algrow.online/api/longform-channels/search?q=ancient+civilizations&categories=documentary" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"success": true,
"page": 1,
"per_page": 20,
"count": 20,
"channels": [
{
"id": "UCxxxxxxxxxxxxxxxxxxxxxx",
"name": "Smart Money Moves",
"subscriber_count": 52000,
"avg_views_per_video": 185000,
"total_videos": 34,
"upload_day": 210,
"view_count": 6290000,
"primary_language": "English",
"profile_picture": "https://yt3.ggpht.com/...",
"monetized": true,
"category": "documentary",
"url": "https://youtube.com/@SmartMoneyMoves",
"views_24h": 18500,
"subs_24h": 340,
"views_48h": 31200,
"similarity_score": 92,
"recent_videos": [
{
"video_id": "abc123xyz",
"title": "How I Built a $10K/Month Side Income",
"view_count": 420000,
"upload_date": "2026-03-12",
"thumbnail_url": "https://i.ytimg.com/vi/...",
"url": "https://www.youtube.com/watch?v=abc123xyz",
"duration": 845
}
]
}
]
}GET/api/channel-trends
Browse the top-growing channels ranked by recent view or subscriber deltas — the leaderboard that powers the Channel Trends page. Use this for browse-by-filter queries with no real topic to anchor a similarity search (e.g. “newest channels”, “biggest by subs”, “started in last 90 days”). Optionally pass q to narrow the leaderboard to a niche via embedding similarity.
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| content_type | string | Optional | shorts | shorts or longform — which index to rank. |
| metric | string | Optional | views | Sort metric. 24h: views, subs. Rolling 48h: views_48h, subs_48h. similarity only when q is set. |
| q | string | Optional | — | Niche keyword or @handle to narrow the leaderboard. Comma-separated for multiple, - to exclude. Omit to browse the raw growth leaderboard. |
| page | integer | Optional | 1 | Page (1–20). |
| per_page | integer | Optional | 50 | Results per page (1–50). |
| languages | string | Optional | English | Shorts only. Comma-separated full names: English, Spanish, Portuguese, German, French, Japanese, Korean (e.g. Spanish,Portuguese). Defaults to English. Longform is English only and ignores it. |
| min_subs / max_subs | integer | Optional | — | Subscriber count range. |
| min_avg_views / max_avg_views | integer | Optional | — | Average views per video range. |
| min_age / max_age | integer | Optional | — | Channel age in days since first upload. max_age=60 = “started in last 2 months”. |
| min_videos / max_videos | integer | Optional | — | Video count range. |
| min_avg_duration / max_avg_duration | integer | Optional | — | Average video duration in seconds (longform only; floor of 420s/7min is enforced). |
| remove_low_quality | boolean | Optional | false | Exclude channels flagged low-quality. |
| remove_music | boolean | Optional | false | Exclude music channels (longform only). |
| faceless | string | Optional | — | yes = only faceless channels, no = only on-camera channels (longform only). Channels not yet classified are excluded from both filtered views. |
200 Success 400 Invalid metric/content_type 401 Auth failed 500 Server error
# Fastest-growing longform channels in the last 90 days curl "https://api.algrow.online/api/channel-trends?content_type=longform&metric=views_48h&max_age=90&per_page=20" \ -H "Authorization: Bearer YOUR_API_KEY" # Top growing Shorts channels in a specific niche curl "https://api.algrow.online/api/channel-trends?q=cooking&metric=subs_48h&content_type=shorts" \ -H "Authorization: Bearer YOUR_API_KEY"
GET/api/trending/subjects
Subjects (topics, people, games, shows) gaining YouTube views right now, this week vs last. Each row has its views a day, the change vs last week, how many videos and channels are behind it, and its top 5 videos. The same lists as the Trending page, rebuilt once a day. Limit 20 / 50 / 100 calls a day on Starter / Professional / Ultimate.
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sort | string | Optional | rising | rising (biggest jump in views vs last week), views or biggest (most views a day), total (most views all time), outlier (top outlier videos), channels or videos (most behind it). With channel, only rising or biggest. |
| niche | string | Optional | all | A niche key, e.g. gaming, true_crime, food_cooking. |
| q | string | Optional | — | Only subjects whose name holds this word, any size, most views first. |
| limit | integer | Optional | 20 | Rows per call, 1–50. |
| offset | integer | Optional | 0 | Skip this many rows, to page through total. |
| min_videos | integer | Optional | 0 | Only subjects with at least this many videos behind them. |
| min_channels | integer | Optional | 0 | Only subjects with at least this many channels behind them. |
| sub_niche | string | Optional | — | A sub-niche inside niche. A niche's list without one returns its biggest sub_niches (name, views_per_day). |
| win | integer | Optional | the week | Days the list counts, 1–30 (1 = last 24 hours, 2 = 48 hours, 7 = a week). Not with channel. |
| channel | string | Optional | — | @handle, channel link, UC id or channel name: the subjects among the videos most like that channel's latest titles that are gaining views, instead of a niche. The response adds channel and search_status; while search_status.complete is false, call again for more. |
200 Success 401 Auth failed 429 Daily limit
No example for this one.
GET/api/trending/title-formats
Title formats (fill-in-the-blank title shapes, like Eat [FOOD] in a [PLACE] Win [PRIZE]) gaining YouTube views right now, this week vs last. Each row also has its template. Each row has its views a day, the change vs last week, how many videos and channels are behind it, and its top 5 videos. The same lists as the Trending page, rebuilt once a day. Limit 20 / 50 / 100 calls a day on Starter / Professional / Ultimate.
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sort | string | Optional | rising | rising (biggest jump in views vs last week), views or biggest (most views a day), total (most views all time), outlier (top outlier videos), channels or videos (most behind it). With channel, only rising or biggest. |
| niche | string | Optional | all | A niche key, e.g. gaming, true_crime, food_cooking. |
| q | string | Optional | — | Only formats whose name holds this word, any size, most views first. |
| limit | integer | Optional | 20 | Rows per call, 1–50. |
| offset | integer | Optional | 0 | Skip this many rows, to page through total. |
| min_videos | integer | Optional | 0 | Only formats with at least this many videos behind them. |
| min_channels | integer | Optional | 0 | Only formats with at least this many channels behind them. |
| sub_niche | string | Optional | — | A sub-niche inside niche. A niche's list without one returns its biggest sub_niches (name, views_per_day). |
| win | integer | Optional | the week | Days the list counts, 1–30 (1 = last 24 hours, 2 = 48 hours, 7 = a week). Not with channel. |
| channel | string | Optional | — | @handle, channel link, UC id or channel name: the formats among the videos most like that channel's latest titles that are gaining views, instead of a niche. The response adds channel and search_status; while search_status.complete is false, call again for more. |
| used | string | Optional | — | With channel: new = formats the channel has not used yet, used = ones it has (each row has used). |
200 Success 401 Auth failed 429 Daily limit
No example for this one.
GET/api/trending/videos
Every video behind one row of /api/trending/subjects or /api/trending/title-formats, biggest gainers this period first (videos in the list's niche first), each with its views, the views it gained this period, channel, upload date, niche and sub-niche. total is how many there are. Counts toward the viral video search limit (300 / 600 / 1,200 a day).
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| kind | string | Optional | subjects | subjects or formats, the list the row is from. |
| key | string | Required | — | The row: its template (formats) or its key, else its name (subjects). |
| niche | string | Optional | — | The niche the list was for, if any. |
| sub_niche | string | Optional | — | The sub-niche the list was for, if any. |
| channel | string | Optional | — | The channel the list was for, if any: its videos like the channel's behind the row. |
| limit | integer | Optional | 20 | Videos to return, 1–50. |
200 Success 404 Not trending now 429 Daily limit
curl "https://api.algrow.online/api/trending/videos?kind=formats&key=i+tried+every+%7B%7D&niche=food_cooking&limit=10" \ -H "Authorization: Bearer YOUR_API_KEY"
GET/api/title-formats
Title formats trending on YouTube Shorts, the Chrome extension's Title Ideas. Title patterns like can [X] stop a, mined nightly from recent videos, where [X] is the topic words; ranked by their videos' average outlier score (1.3× and up) and how recently they took off. Each pattern has its slot_count, video_count, avg_outlier, avg_views and up to 3 examples (video_id, title, view_count). For long-form use /api/trending/title-formats. Limit 20 / 50 / 100 calls a day on Starter / Professional / Ultimate, shared with /api/trending/title-formats.
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| content_type | string | Optional | shorts | shorts or longform. |
| language | string | Optional | English | The channels' language, e.g. Spanish. Falls back to every language (all) when there are none; the response's language says which. |
| limit | integer | Optional | 30 | Patterns to return, 1–100. |
200 Success 429 Daily limit
curl "https://api.algrow.online/api/title-formats?content_type=shorts&limit=20" \ -H "Authorization: Bearer YOUR_API_KEY"
GET/api/channel-title-formats
One channel's title formats. Its long-form videos grouped by title shape (e.g. Never Boil Your {thing} Again. Try This {thing} Instead), each with how many videos use it, total and average views, views gained in the last 7 days against the 7 before and in the last 48 hours, its highest and average outlier scores, when the channel first and last used it, and its top 3 videos. Each format is labelled new (first used in the last 30 days), hit (averages at least twice the channel's usual video) or used_once. Long-form only. The first call for a channel can take a few seconds; later calls are quick, and asking for the same channel again within 24 hours is free. Limit 100 / 200 / 400 a day on Starter / Professional / Ultimate, then $0.20 a call with pay-per-call. GET /api/channels/{channel_id}/title-formats works too.
Query Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| channel | string | Required | — | The channel: a UC... ID, @handle, channel link or video link. |
| sort | string | Optional | this_week | this_week (most views gained in the last 7 days), growing (biggest rise against the 7 days before), gained_48h (most views gained in 48 hours), outlier_score (highest outlier), views, average (views per video), newest (used most recently) or videos (used most often). |
| limit | integer | Optional | 50 | Formats to return, 1–100. |
| min_videos | integer | Optional | 1 | Only formats used at least this many times. 1 keeps one-offs, which can be a hit or a format the channel has just started. |
200 Success 404 Channel not found or no long-form videos
curl "https://api.algrow.online/api/channel-title-formats?channel=@CookTheMexicanWay&sort=this_week&limit=10" \ -H "Authorization: Bearer YOUR_API_KEY"
