Viral & Thumbnail Search
Find outlier videos and search channels by thumbnail image.
Search for viral videos across Shorts and Longform channels, find videos similar to a specific video, or browse by filters alone. Filter by video views, channel size, growth metrics, upload recency, outlier score, and more. q, video_id, and video_url are all optional — omit them to browse by filters (e.g. “biggest outliers from the last 7 days”).
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| q | string | Optional | — | Search query. Matches video titles and channel names with similarity scoring. Also accepts search as an alias. Omit along with video_id / video_url to browse by filters alone. |
| video_id | string | Optional | — | YouTube video ID (e.g. dQw4w9WgXcQ). Finds videos similar to this video using title similarity. |
| content_type | string | Optional | shorts | Content type: shorts or longform |
| sort_by | string | Optional | views | Sort by: views (most viewed), recent (newest fetched), upload_date (newest uploaded), similarity (most similar — requires q/video_id/video_url; auto-selected when one is given), outlier_score (biggest over-performers — video views vs channel average) |
| page | integer | Optional | 1 | Page number (1-indexed, max 20) |
| per_page | integer | Optional | 20 | Results per page (max 50) |
| min_video_views | integer | Optional | — | Minimum video view count |
| max_video_views | integer | Optional | — | Maximum video view count |
| min_subs | integer | Optional | — | Minimum channel subscriber count |
| max_subs | integer | Optional | — | Maximum channel subscriber count |
| min_uploads | integer | Optional | — | Minimum channel video count |
| max_uploads | integer | Optional | — | Maximum channel video count |
| min_channel_age | integer | Optional | — | Minimum channel age in days |
| max_channel_age | integer | Optional | — | Maximum channel age in days |
| min_upload_date | integer | Optional | — | Newest allowed upload (days ago, 0 = today) |
| max_upload_date | integer | Optional | — | Oldest allowed upload (days ago, e.g. 365 = 1 year) |
| min_duration | integer | Optional | — | Minimum video duration in minutes (longform only) |
| max_duration | integer | Optional | — | Maximum video duration in minutes (longform only) |
| min_views_24h | integer | Optional | — | Minimum channel views gained in last 24h (shorts only) |
| max_views_24h | integer | Optional | — | Maximum channel views gained in last 24h (shorts only) |
| min_views_48h | integer | Optional | — | Minimum channel views gained in last 48h (shorts only) |
| max_views_48h | integer | Optional | — | Maximum channel views gained in last 48h (shorts only) |
| min_outlier_score | float | Optional | — | Minimum outlier score. A video's outlier_score = its view count ÷ its channel's average views per video, so 2.5 means “video got 2.5× the channel's typical views.” Use to surface videos over-performing their channel. |
| max_outlier_score | float | Optional | — | Maximum outlier score. Rarely needed — usually pair with min_outlier_score. |
| Field | Type | Description |
|---|---|---|
| video_id | string | YouTube video ID |
| title | string | Video title |
| channel_name | string | Channel name |
| channel_id | string | YouTube channel ID |
| view_count | integer | Total video views |
| outlier_score | float|null | Outlier multiplier — video's view count ÷ its channel's average views per video. 4.2 = video got 4.2× the channel's typical views. null for brand-new uploads before the channel average is computed. |
| thumbnail_url | string | Video thumbnail URL |
| upload_date | string|null | Upload date (ISO 8601) |
| url | string | Full YouTube URL |
| subscriber_count | integer | Channel subscriber count |
| duration | integer|null | Video duration in seconds |
| view_increase_24h | integer|null | Channel views gained in last 24h (shorts with realtime filters only) |
| view_increase_48h | integer|null | Channel views gained in last 48h (shorts with realtime filters only) |
| similarity_score | integer|null | Similarity score (0–100) when using search. Higher = more similar. |
What to make next for a channel, taken from the channels most like it. Resolves the channel, finds the closest channels by what they cover, reads what actually worked on them, groups the same topic (or the same title shape) written different ways, and removes what this channel has already made. Ranked by how many separate channels made an idea work, not by raw views, so a big channel covering something does not crowd out a real idea.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| channel | string | Required | — | A channel ID (UCxxx), @handle, bare handle, or channel URL. |
| kind | string | Optional | subjects | subjects: topics to make next. formats: title shapes to steal, e.g. How To Make {thing} PUFF and Why It Happens. |
| sort | string | Optional | proven | proven: worked on several different channels, ranked by how many channels made it work, then by size. best: the single biggest win, whoever got it. |
| limit | integer | Optional | 40 | Rows back. Max 200. |
# Subjects worth making next, proven across several channels curl "https://api.algrow.online/api/viral-videos/channel-ideas?channel=@CookTheMexicanWay" \ -H "Authorization: Bearer YOUR_API_KEY" # Title formats worth stealing, biggest single wins first curl "https://api.algrow.online/api/viral-videos/channel-ideas?channel=UCEpgRWDUGVu7UaYc7fB1Idw&kind=formats&sort=best" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"success": true,
"channel_id": "UCEpgRWDUGVu7UaYc7fB1Idw",
"kind": "subjects",
"sort": "proven",
"peer_channels": 75,
"peer_videos": 1026,
"results": [
{
"name": "carne asada tacos",
"variants": ["carne asada taco recipe", "authentic carne asada tacos"],
"videos": 5,
"channels": 5,
"hits": 2,
"hit_channels": 2,
"best_multiple": 15.3,
"median_multiple": 0.6,
"best_views": 439951,
"example_title": "Taqueria Style Carne Asada Tacos - Blackstone Griddle",
"example_url": "https://www.youtube.com/watch?v=...",
"example_channel": "TexMex at Home",
"example_thumbnail": "https://i.ytimg.com/vi/.../maxresdefault.jpg"
}
]
}
Read hits against videos: 2 hits in 5 tries is a crowded topic where most attempts sink; 3 hits on 3 channels is one that travels. A 422 with "code": "not_enough" means the channel resolved but too little is held behind it to say anything honest. It is not an error; show the reason rather than an empty list.
| Field | Type | Description |
|---|---|---|
| name | string | The topic in its best-performing wording, or the title template. |
| variants | array | Other wordings (or near-identical templates) folded into this row. |
| videos | integer | How many videos on the peer channels tried this. |
| channels | integer | How many separate channels tried it. |
| hits | integer | Videos that beat their own channel’s average by 2× or more. |
| hit_channels | integer | Separate channels with at least one hit. This is what sort=proven ranks on. |
| best_multiple | float | The biggest single win, as a multiple of that channel’s average. |
| median_multiple | float | The middle result across every attempt. |
| best_views | integer | Views on the best video. |
| example_title | string | Title of the best video. |
| example_url | string | YouTube URL of the best video. |
| example_channel | string | Channel name of the best video. |
| example_thumbnail | string | Thumbnail of the best video. |
Search for longform videos by thumbnail similarity. Provide a YouTube video URL, an image URL, or a text description to find videos with visually similar thumbnails using similarity matching.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| image_url | string | One of three | — | URL of a thumbnail image to search with. Supports JPEG, PNG, WebP, and GIF formats. |
| video_url | string | One of three | — | YouTube video URL — automatically extracts its thumbnail. Accepts watch, shorts, and youtu.be links. |
| q | string | One of three | — | Text description of the thumbnail style to search for (e.g. “red arrow pointing at shocked face”, “before and after transformation”). |
| limit | integer | Optional | 20 | Maximum number of results to return (1–50) |
| min_similarity | float | Optional | 0.3 | Minimum similarity threshold (0–1). Higher values return fewer but more visually similar results. |
| min_views | integer | Optional | — | Minimum video view count filter |
| Field | Type | Description |
|---|---|---|
| video_id | string | YouTube video ID |
| title | string | Video title |
| channel_name | string | Channel name |
| channel_id | string | YouTube channel ID |
| view_count | integer | Total video views |
| thumbnail_url | string | Video thumbnail URL |
| upload_date | string|null | Upload date (ISO 8601) |
| url | string | Full YouTube URL |
| duration | integer|null | Video duration in seconds |
| subscriber_count | integer | Channel subscriber count |
| similarity_score | integer | Visual similarity score (0–100). Higher = more similar thumbnail. |
Search terminated/deleted channel videos by thumbnail similarity. Same as /api/thumbnail-search but searches the terminated channels archive instead of active longform channels. Provide a YouTube video URL, an image URL, or a text description.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| image_url | string | One of three | — | URL of a thumbnail image to search with. Supports JPEG, PNG, WebP, and GIF formats. |
| video_url | string | One of three | — | YouTube video URL — automatically extracts its thumbnail. Accepts watch, shorts, and youtu.be links. |
| q | string | One of three | — | Text description of the thumbnail style to search for (e.g. “red arrow pointing at shocked face”, “before and after transformation”). |
| limit | integer | Optional | 20 | Maximum number of results to return (1–50) |
| min_similarity | float | Optional | 0.3 | Minimum similarity threshold (0–1). Higher values return fewer but more visually similar results. |
| min_views | integer | Optional | — | Minimum video view count filter |
| max_views | integer | Optional | — | Maximum video view count filter |
| Field | Type | Description |
|---|---|---|
| video_id | string | YouTube video ID |
| title | string | Video title |
| channel_name | string | Channel name |
| channel_id | string | YouTube channel ID |
| view_count | integer | Total video views |
| thumbnail_url | string | Video thumbnail URL |
| url | string | Full YouTube URL |
| subscriber_count | integer | Channel subscriber count |
| similarity_score | integer | Visual similarity score (0–100). Higher = more similar thumbnail. |
Algrow
Shorts Channels