Algrow

Docs

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”).

Query Parameters

NameTypeRequiredDefaultDescription
qstringOptional—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_idstringOptional—YouTube video ID (e.g. dQw4w9WgXcQ). Finds videos similar to this video using title similarity.
content_typestringOptionalshortsContent type: shorts or longform
languagesstringOptionalEnglishShorts 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.
sort_bystringOptionalviewsSort 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 what the channel usually gets)
pageintegerOptional1Page number (1-indexed, max 20)
per_pageintegerOptional20Results per page (max 50)
min_video_viewsintegerOptional—Minimum video view count
max_video_viewsintegerOptional—Maximum video view count
min_subsintegerOptional—Minimum channel subscriber count
max_subsintegerOptional—Maximum channel subscriber count
min_uploadsintegerOptional—Minimum channel video count
max_uploadsintegerOptional—Maximum channel video count
min_channel_ageintegerOptional—Minimum channel age in days
max_channel_ageintegerOptional—Maximum channel age in days
min_upload_dateintegerOptional—Newest allowed upload (days ago, 0 = today)
max_upload_dateintegerOptional—Oldest allowed upload (days ago, e.g. 365 = 1 year)
min_durationintegerOptional—Minimum video duration in minutes (longform only)
max_durationintegerOptional—Maximum video duration in minutes (longform only)
min_views_24hintegerOptional—Minimum channel views gained in last 24h (shorts only)
max_views_24hintegerOptional—Maximum channel views gained in last 24h (shorts only)
min_views_48hintegerOptional—Minimum channel views gained in last 48h (shorts only)
max_views_48hintegerOptional—Maximum channel views gained in last 48h (shorts only)
min_outlier_scorefloatOptional—Minimum outlier score. A video's outlier_score = how many times more views it has than its channel usually gets (long-form videos are compared with what the channel's own videos usually have at the same age; Shorts with the 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_scorefloatOptional—Maximum outlier score. Rarely needed — usually pair with min_outlier_score.
sub_nichestringOptional—A sub-niche inside niche (a video's sub_niche, e.g. tacos in food_cooking). Needs niche.
subjectstringOptional—Long-form only. Videos about this subject and its other wordings (a video's subject, or a name from /api/trending/subjects).
same_format_asstringOptional—Long-form only. A video ID or URL: videos whose title uses the same format, among the 1,500 closest title shapes. Each comes with format_band and its title-shape similarity_score; the response has the seed's title_format. Other search inputs are ignored; sort_by is similarity (same, then close, then loose), views, upload_date or outlier_score. 404 when Algrow has not read that video's title format.

Response Fields (per video)

FieldTypeDescription
video_idstringYouTube video ID
titlestringVideo title
channel_namestringChannel name
channel_idstringYouTube channel ID
view_countintegerTotal video views
outlier_scorefloat|nullOutlier multiplier — how many times more views the video has than its channel usually gets (long-form videos are compared with what the channel's own videos usually have at the same age; Shorts with the 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_urlstringVideo thumbnail URL
upload_datestring|nullUpload date (ISO 8601)
urlstringFull YouTube URL
subscriber_countintegerChannel subscriber count
durationinteger|nullVideo duration in seconds
view_increase_24hinteger|nullChannel views gained in last 24h (shorts with realtime filters only)
view_increase_48hinteger|nullChannel views gained in last 48h (shorts with realtime filters only)
similarity_scoreinteger|nullSimilarity score (0–100) when using search. Higher = more similar.
subjectstringLong-form, when known: what the video is about, a short lowercase phrase. Pass it back as subject.
title_formatstringLong-form, when known: the title with its topic words as slots, e.g. Never Boil Your {thing} Again.
nichestringLong-form, when known: the video's niche key, e.g. food_cooking.
sub_nichestringLong-form, when known: the shelf inside the niche, e.g. beans.
format_bandstringWith same_format_as: same (the same title shape), close (a word or two apart) or loose (shares the idea).
Example Requests
# Find viral gaming Shorts with 1M+ views from small channels
curl "https://api.algrow.online/api/viral-videos/search?q=gaming&content_type=shorts&min_video_views=1000000&max_subs=50000" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Longform fitness videos uploaded in last 7 days, sorted by views
curl "https://api.algrow.online/api/viral-videos/search?q=fitness+workout&content_type=longform&max_upload_date=7&sort_by=views" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Find videos similar to a specific video by ID
curl "https://api.algrow.online/api/viral-videos/search?video_id=dQw4w9WgXcQ&content_type=longform" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Search for cooking videos from channels under 100k subs
curl "https://api.algrow.online/api/viral-videos/search?q=cooking&max_subs=100000" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response
{
  "success": true,
  "content_type": "shorts",
  "page": 1,
  "per_page": 20,
  "count": 20,
  "videos": [
    {
      "video_id": "dQw4w9WgXcQ",
      "title": "This cooking hack changed everything",
      "channel_name": "Chef Secrets",
      "channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
      "view_count": 4200000,
      "outlier_score": 4.2,
      "thumbnail_url": "https://i.ytimg.com/vi/.../maxresdefault.jpg",
      "upload_date": "2026-03-15T00:00:00+00:00",
      "url": "https://www.youtube.com/shorts/dQw4w9WgXcQ",
      "subscriber_count": 32000,
      "duration": 58,
      "view_increase_24h": 180000,
      "view_increase_48h": 320000
    }
  ]
}

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.

Request Body (JSON)

NameTypeRequiredDefaultDescription
image_urlstringOne of three—URL of a thumbnail image to search with. Supports JPEG, PNG, WebP, and GIF formats.
video_urlstringOne of three—YouTube video URL — automatically extracts its thumbnail. Accepts watch, shorts, and youtu.be links.
qstringOne of three—Text description of the thumbnail style to search for (e.g. “red arrow pointing at shocked face”, “before and after transformation”).
limitintegerOptional20Maximum number of results to return (1–50)
min_similarityfloatOptional0.3Minimum similarity threshold (0–1). Higher values return fewer but more visually similar results.
min_viewsintegerOptional—Minimum video view count filter

Response Fields (per video)

FieldTypeDescription
video_idstringYouTube video ID
titlestringVideo title
channel_namestringChannel name
channel_idstringYouTube channel ID
view_countintegerTotal video views
thumbnail_urlstringVideo thumbnail URL
upload_datestring|nullUpload date (ISO 8601)
urlstringFull YouTube URL
durationinteger|nullVideo duration in seconds
subscriber_countintegerChannel subscriber count
similarity_scoreintegerVisual similarity score (0–100). Higher = more similar thumbnail.
Example Requests
# Search by image URL — find videos with similar thumbnails
curl -X POST "https://api.algrow.online/api/thumbnail-search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image_url": "https://i.ytimg.com/vi/abc123/maxresdefault.jpg", "limit": 10}'

# Search by text — describe the thumbnail style you're looking for
curl -X POST "https://api.algrow.online/api/thumbnail-search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "red arrow pointing at shocked face", "limit": 20}'

# Text search with filters — only high-view results
curl -X POST "https://api.algrow.online/api/thumbnail-search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "before and after transformation", "min_views": 100000, "min_similarity": 0.5}'
Response
{
  "success": true,
  "count": 10,
  "videos": [
    {
      "video_id": "abc123",
      "title": "How I Made $10k in 30 Days",
      "channel_name": "Finance Tips",
      "channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
      "view_count": 1500000,
      "thumbnail_url": "https://i.ytimg.com/vi/abc123/maxresdefault.jpg",
      "upload_date": "2026-03-20",
      "url": "https://www.youtube.com/watch?v=abc123",
      "duration": 612,
      "subscriber_count": 85000,
      "similarity_score": 78
    }
  ]
}

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.

Request Body (JSON)

NameTypeRequiredDefaultDescription
image_urlstringOne of three—URL of a thumbnail image to search with. Supports JPEG, PNG, WebP, and GIF formats.
video_urlstringOne of three—YouTube video URL — automatically extracts its thumbnail. Accepts watch, shorts, and youtu.be links.
qstringOne of three—Text description of the thumbnail style to search for (e.g. “red arrow pointing at shocked face”, “before and after transformation”).
limitintegerOptional20Maximum number of results to return (1–50)
min_similarityfloatOptional0.3Minimum similarity threshold (0–1). Higher values return fewer but more visually similar results.
min_viewsintegerOptional—Minimum video view count filter
max_viewsintegerOptional—Maximum video view count filter

Response Fields (per video)

FieldTypeDescription
video_idstringYouTube video ID
titlestringVideo title
channel_namestringChannel name
channel_idstringYouTube channel ID
view_countintegerTotal video views
thumbnail_urlstringVideo thumbnail URL
urlstringFull YouTube URL
subscriber_countintegerChannel subscriber count
similarity_scoreintegerVisual similarity score (0–100). Higher = more similar thumbnail.
Example Requests
# Search by image URL — find terminated videos with similar thumbnails
curl -X POST "https://api.algrow.online/api/terminated-thumbnail-search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image_url": "https://i.ytimg.com/vi/abc123/maxresdefault.jpg", "limit": 10}'

# Search by text — describe the thumbnail style
curl -X POST "https://api.algrow.online/api/terminated-thumbnail-search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "red arrow pointing at shocked face", "limit": 20}'

# Search by YouTube video URL
curl -X POST "https://api.algrow.online/api/terminated-thumbnail-search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"video_url": "https://www.youtube.com/watch?v=abc123", "min_views": 50000}'
Response
{
  "success": true,
  "count": 10,
  "videos": [
    {
      "video_id": "abc123",
      "title": "How I Made $10k in 30 Days",
      "channel_name": "Finance Tips",
      "channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
      "view_count": 1500000,
      "thumbnail_url": "https://audio.algrow.online/thumbnails/abc123.jpg",
      "url": "https://www.youtube.com/watch?v=abc123",
      "subscriber_count": 85000,
      "similarity_score": 78
    }
  ]
}

POST/api/find-channel

Find which Shorts channel a screenshot belongs to. This is the analysis behind the app's Find Channel page. It reads the numbers off a YouTube Studio real-time analytics card, or off a channel page, and matches them to Algrow's channels. You get back one match, or several with a confidence. Included in your plan, no credits. Send a multipart screenshot file, or JSON with an image_url.

Request Body (multipart or JSON)

NameTypeRequiredDefaultDescription
screenshotfileConditional—The screenshot (multipart). Send this or image_url.
image_urlstringConditional—A public http(s) URL of the screenshot (up to 25 MB).
typestringOptionalrealtimerealtime (Studio's real-time analytics card, best accuracy) or channel_about (the channel's page).

When several channels fit, channel_match is null and multiple_matches lists them, each with its own confidence. When none fit, success is false and error says why.

200 Success 400 Missing or invalid input 401 Auth failed

Example Request
curl -X POST "https://api.algrow.online/api/find-channel" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "type=realtime" \
-F "[email protected]"
Response200
{
  "success": true,
  "channel_match": {
    "channel_id": "UCxxxxxxxxxxxxxxxxxxxxxx",
    "channel_title": "Daily Cat Shorts",
    "subscriber_count": 48200
  },
  "multiple_matches": null,
  "single_match": true,
  "confidence": "high",
  "match_type": "realtime",
  "message": null,
  "extracted_data": { "success": true, … }
}