Catalog / Social, content & reviews
SOCIAL, CONTENT & REVIEWS
YouTube Outlier Finder: Videos That Beat Their Channel
Find YouTube videos that beat their channel's typical views.
About this data
Find YouTube videos that beat their channel's typical views. Give channels or a search term; each recent upload gets an outlier score (views ÷ the channel's median views), views per day, publish date, duration and a rank. Filter by days back and minimum score.
From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.
Buy per call over x402
One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.
POST /v1/youtube/business-outliers
Compare videos from the latest upload page of Google, Microsoft or Apify against a five-video typical-view baseline.
Returns titles, video links, views, publication dates and precision, outlier scores, views per day, duration and thumbnails.
Up to three videos; this is a page snapshot, not exhaustive channel history.
Input
Send a JSON body to POST https://api.ssh.autos/v1/youtube/business-outliers.
| Field | Type | Required | Notes |
|---|---|---|---|
channel | string | required | one of @Google, @Microsoft, @Apify |
lookbackDays | integer | optional | 1–30; default 30 |
maxResults | integer | optional | 1–3; default 3 |
minOutlierScore | number | optional | 0–1000; default 0 |
Returned fields
The answer is JSON: records, a list of up to 3, and summary, the run status and counts. Each record has these 38 fields; a field the source does not publish comes back null.
38 fields per record
| Field | Type | Notes |
|---|---|---|
rank | integer | Position in this run, 1 = highest outlier score |
videoId | string | 11-character YouTube video ID |
url | string | Watch link (source URL); a /shorts/ link on Shorts rows |
channelId | string | Channel ID (UC…) |
channelName | string | Channel name |
channelHandle | string | Channel @handle |
channelUrl | string | Channel link |
publishedAt | string | Exact publish time (ISO 8601, UTC) when YouTube lists it; otherwise null (always null on Shorts rows) |
publishedDate | string | Publish date, YYYY-MM-DD (UTC) |
publishedDatePrecision | string | exact = publish time known to the second; day = publish day known; estimated = worked out from the upload age YouTube shows (e.g. 2 weeks ago) one of exact, day, estimated |
publishedText | string | Upload age as YouTube shows it, e.g. 6 days ago |
ageDays | number | Days since publishing at scrape time; on Shorts rows whole days from the run's start date (UTC) |
viewCount | integer | Views |
channelMedianViews | number | Median views of the channel's latest long-form uploads (the baseline); on Shorts rows the median of the Shorts baseline labels, without the row's own Short; can end in .5 |
outlierScore | number | viewCount ÷ channelMedianViews (a median of 0 counts as 1); informational on Shorts rows, which are gated on scoreLowerBound |
viewsPerDay | number | viewCount ÷ ageDays (age counted as at least 1 day) |
duration | integer | Length in seconds |
durationText | string | Length as m:ss or h:mm:ss |
baselineVideos | integer | How many uploads the channel median was taken over (Shorts rows: after leaving the row's own Short out) |
thumbnailUrl | string | Thumbnail image link |
source | string | Which input kind found the video one of channel, search |
input | string | The channel or search term that produced the row |
searchQuery | string | The search term, on search rows |
scrapedAt | string | When the row was collected (ISO 8601, UTC) |
contractVersion | string | Shorts rows: output contract version one of shorts-mode/1 |
contractRevision | integer | Shorts rows: output contract revision |
contentType | string | Shorts rows: shorts (long-form rows carry no contentType) one of shorts |
isShort | boolean | Shorts rows: always true |
shortsIdentity | string | Shorts rows: how the video is known to be a Short (listed on the channel's own Shorts tab) one of shortsTab |
tabPosition | integer | Shorts rows: position on the channel's Shorts tab, 0 = newest |
viewCountPrecision | string | Shorts rows: exact = the full view count from the video's page one of exact |
viewLabel | string | Shorts rows: the rounded-down view label shown on the Shorts tab, e.g. 1.4K views |
shortsMedianViews | number | Shorts rows: same as channelMedianViews |
medianViewsUpperBound | integer | Shorts rows: the baseline median taken over each label's upper bound (1.4K counts as 1,500), without the row's own Short |
scoreLowerBound | number | Shorts rows: viewCount ÷ medianViewsUpperBound, truncated to 2 decimals; rows are returned only when it reaches max(minOutlierScore, 10) |
leaveOneOut | boolean | Shorts rows: true when the row's own Short was in the baseline and was left out of it |
baselineNewestAgeDays | integer | Shorts rows: age in days of the newest Short in the baseline |
baselineOldestAgeDays | integer | Shorts rows: age in days of the oldest Short in the baseline |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/youtube/business-outliers -m POST -b '{"channel": "@Google", "maxResults": 3}'
The example values come from the API spec or the actor’s own sample input. Running it is a paid call.
What is and isn’t charged
You pay the call price for
- An answer, including a definitive “not found” or an empty result.
- Confirmed no matches returns records: [] (charged: it is an answer).
Free
- Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
- Invalid input and source failures are not charged.
Prefer a subscription? Run it on Apify
This data source is a public actor on the Apify Store: YouTube Outlier Finder: Videos That Beat Their Channel. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.
How x402 payment works
- Your client sends the request. The API answers
402 Payment Requiredwith the price and where to pay. - The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
- The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.
The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.
Recipes that use this
-
Find the videos that beat their channel, then read them
Pick a niche, find the recent videos that pulled far more views than their channel usually gets, and pull their transcripts to see how they open and what they promise.
Machine-readable: openapi.json · llms.txt