Analysis Tools
Monetization checks, video analysis, and terminated-channel search.
Full monetization profile for one channel — what it sells, each method with its own evidence + source link, products, and store URLs. If the channel isn't classified yet it runs the classifier live (≤60s) and persists the result; pass ?skip_live=true to skip that and get an immediate unclassified response.
| Name | Type | Required | Description |
|---|---|---|---|
| channel_id | string | Required | YouTube channel id (UC…, 24 chars). Use /api/channels/resolve for handles/URLs. |
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| skip_live | boolean | Optional | false | Skip the live classifier and return immediately (classified:false if not already known). |
Check whether a channel is run through a CMS / multi-channel network — is it managed, which network runs it, and what other channels that network operates. Backed by a database of 327,000+ pre-checked longform channels, so most lookups return instantly. A channel we haven't checked yet triggers a live check (10–60 seconds) and the verdict is saved for next time; pass ?refresh=1 to force a fresh live check on an already-checked channel. Pass ?full_network=1 to get the network's complete roster instead of the 5-channel sample.
| Name | Type | Required | Description |
|---|---|---|---|
| channel_id | string | Required | YouTube channel id (UC…, 24 chars). Use /api/channels/resolve for handles/URLs. |
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| refresh | boolean | Optional | false | Run a fresh live check even if the channel already has a stored verdict. Counts against the hourly live-check limit. |
| full_network | boolean | Optional | false | Return the complete network roster as network.members — every managed channel we know under this owner, no cap — instead of the 5-channel other_members_sample. Professional and Ultimate only; ignored on Starter. |
owner.oid values match. Use the oid, not the name, to group channels.network object. Over the limit returns 429 with code upgrade_required (Starter daily cap) or rate_limited (hourly live-check cap).| Field | Type | Description |
|---|---|---|
| success | boolean | Whether the request succeeded |
| channel_id | string | YouTube channel ID that was checked |
| status | string | managed, not_managed, or unchecked. Unchecked responses include a hint explaining how to get a verdict (retry, or pass ?refresh=1). |
| checked_at | string | When the verdict was recorded (ISO 8601) |
| checked_live | boolean | Whether this request ran a live check (vs a stored verdict) |
| owner | object | The network running the channel: oid (stable owner id), name, and the owner's type / industry. name can be null for a network we've never seen before. |
| note | string | Occasional plain-language line explaining a verdict that could otherwise look surprising. |
| network | object | Managed channels only: member_count plus other_members_sample — the 5 biggest other channels the same network operates, each with channel_id, name, subscribers, avg_views. With ?full_network=1 the sample is replaced by members — the complete roster, same fields per channel. Not included on Starter. |
Browse and search CMS / multi-channel networks directly — the network-centric counterpart to /api/channel-cms, which starts from a channel. By default you get a list of networks matching your filters; pass ?oid= to switch to detail mode and see one network with its top member channels (up to 100, biggest first). Counts include only channels verified as managed by that owner. Owner emails are never included.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| q | string | Optional | — | Filter networks by name (case-insensitive substring match). |
| oid | string | Optional | — | Switch to detail mode: return that one network plus its top member channels, up to 100, biggest first. Use the oid values from list responses or from /api/channel-cms. |
| min_channels | integer | Optional | 2 | List mode: only include networks with at least this many known channels. |
| sort | string | Optional | channels | List mode ordering: channels (most member channels first) or subscribers (largest combined subscriber count first). |
| limit | integer | Optional | 25 | List mode: number of networks to return, max 100. |
upgrade_required.| Field | Type | Description |
|---|---|---|
| success | boolean | Whether the request succeeded |
| count | integer | List mode: number of networks returned |
| networks | array | List mode: networks matching your filters, each with oid, name, type, industry, member_count, total_subscribers. |
| network | object | Detail mode (?oid=): one network with the same fields as a list entry plus members — its member channels, up to 100, biggest first, each with channel_id, name, subscribers, avg_views, language, category. |
Analyze a YouTube video with AI vision — hooks, pacing, visual storytelling, on-screen text, B-roll usage, content strategy, and any other prompt-driven breakdown. Returns structured analysis text. Currently free during preview — no credit cost, no plan requirement — only an API key and the per-user concurrency cap apply. Repeat prompts on the same video within 2 hours reuse a cached upload automatically (faster on the backend, returns cached: true).
| Name | Type | Required | Description |
|---|---|---|---|
| video_url | string | Required | YouTube video URL. Accepts watch links, youtu.be short links, and Shorts URLs. |
| prompt | string | Required | Plain-English instruction describing what to analyze. Max 4,000 characters. |
| media_resolution | string | Optional | Analysis fidelity: low (default, recommended for hook / pacing / strategy prompts) or default (higher visual detail at greater backend cost — useful when fine on-screen text or subtle visual cues matter). |
/api/job-status/:job_id every 5 seconds for updates.video_url within 2 hours, the source video is reused from cache — the response includes cached: true. Cache is keyed per (user, video) so each user pays the cold-path cost once per video per 2 hours.Search terminated/deleted YouTube channels. Returns channel metadata, growth metrics at time of termination, and up to 3 top videos per channel. Supports keyword matching and advanced filters. Available on all plans.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| q | string | Required | — | Search query. Matches against channel titles and video titles. Comma-separated for multiple keywords. |
| languages | string | Optional | — | Filter by language. Comma-separated (e.g. English,Spanish) |
| sort | string | Optional | date_desc | Sort field and direction. Format: {field}_{asc|desc}. Fields: subs, views, videos, age, views_24h, subs_24h, views_48h, date, similarity (when using q) |
| page | integer | Optional | 1 | Page number (1-indexed, max 20) |
| 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_views | integer | Optional | — | Minimum total view count |
| max_views | integer | Optional | — | Maximum total view 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 |
| monetized | string | Optional | — | Filter by monetization status: yes or no |
| min_views_24h | integer | Optional | — | Minimum views gained in last 24h before termination |
| max_views_24h | integer | Optional | — | Maximum views gained in last 24h before termination |
| min_views_48h | integer | Optional | — | Minimum views gained in last 48h before termination |
| max_views_48h | integer | Optional | — | Maximum views gained in last 48h before termination |
| Field | Type | Description |
|---|---|---|
| channel_id | string | YouTube channel ID |
| channel_title | string | Channel name at time of termination |
| subscriber_count | integer | Subscriber count at termination |
| view_count | integer | Total channel views at termination |
| avg_views_per_video | integer | Average views per video |
| total_videos | integer | Number of videos on the channel |
| primary_language | string | Detected content language |
| monetized | boolean | Whether the channel was monetized |
| is_low_quality | boolean | Whether the channel was flagged as low quality |
| thumbnail_url | string | Channel profile picture URL |
| first_upload_date | string | Date of the channel's first upload (ISO 8601) |
| terminated_date | string | Date the channel was terminated (ISO 8601) |
| terminated_days_ago | integer | Days since the channel was terminated |
| view_increase_24h | integer|null | Views gained in last 24h before termination |
| sub_increase_24h | integer|null | Subscribers gained in last 24h before termination |
| view_increase_48h | integer|null | Views gained in last 48h before termination |
| sub_increase_48h | integer|null | Subscribers gained in last 48h before termination |
| similarity_score | integer|null | Similarity score (0–100) when using q search |
| recent_videos | array | Top 3 videos by views with video_id, title, view_count, thumbnail_url, url |
Algrow
Shorts Channels