# YouTube Outlier Finder: Videos That Beat Their Channel (`zaiq/youtube-outlier-finder`) Actor

Find the YouTube videos that beat their own channel's normal: each video's views against the median of the channel's recent uploads (outlier score), with views per day. Score a channel's videos, or search a niche and score every result against its own channel. Shorts too. No API key.

- **URL**: https://apify.com/zaiq/youtube-outlier-finder.md
- **Developed by:** [Zaiq](https://apify.com/zaiq) (community)
- **Categories:** Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 scored videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## YouTube Outlier Finder: videos that beat their own channel, for any channel or search

Find the **YouTube videos that beat their own channel's normal**: each video's **views against the median views of that channel's recent uploads** (the **outlier score**), with **views per day** and age. Give **channels** to score their uploads, or give **searches** and every result is scored **against its own channel**, so a small channel's breakout ranks above a big channel's average video.

That is the method behind paid outlier tools, as a pay-per-video Actor: research a niche, find the ideas and titles that over-performed, and ignore the noise. **Videos or Shorts**. For **YouTubers, editors, agencies and content strategists**. No API key, no quota.

### What you get

| Field | What it holds |
|---|---|
| Video rows | `outlierScore`, `rank`, `views`, `viewsPerDay`, `publishedAgo`, `ageDays`, `title`, `channel`, `channelId`, `channelMedianViews`, `baselineVideos`, `durationSeconds` or `length`, `thumbnail`, `url`, `tooNewToJudge`, and in searches `search`, `searchPosition`, `channelVerified` |
| SUMMARY | what each channel and search returned, notes, channels read and what was charged |

### What people use it for

- **Niche research:** the videos in a niche that beat their channel
- **Title and thumbnail ideas:** what the breakouts have in common
- **Competitor tracking:** which of a rival's uploads took off
- **Shorts research:** the Shorts that over-performed
- **Sponsor and creator vetting:** how a channel's views really behave

### How to use it

1. Add **searches** (a niche, a product, a topic) and/or **channels**.
2. Pick **Videos or Shorts**, how many results or uploads, and a minimum score if you want only outliers.
3. Click **Start**, then sort the **Outliers** table by score.

### Input

| Field | Example | Notes |
|---|---|---|
| Searches | `home espresso machine review` | Every result scored against its own channel |
| Channels | `@handle` | Their latest uploads scored |
| Videos or Shorts | Videos |  |
| Results per search | `20` | Up to 200 |
| Videos per channel | `50` | Up to 100 |
| Only videos scoring at least | `0` | e.g. 3 |

### Output

Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):

```json
{
  "kind": "video",
  "mode": "search",
  "search": "home espresso machine review",
  "searchPosition": 7,
  "rank": 1,
  "title": "Should You Buy …? 4 Year Review of …",
  "channel": "Example channel",
  "views": 177455,
  "outlierScore": 11.09,
  "channelMedianViews": 16000,
  "baselineVideos": 27,
  "publishedAgo": "2 years ago",
  "viewsPerDay": 243,
  "durationSeconds": 550
}
```

From runs on 17 October 2026 (names and titles shortened): for the search "home espresso machine review", the 7th result scored 11.09 (177,455 views on a channel whose recent median is 16,000) and another result 34.48 (3.1 million views against a 91,000 median); 12 results and 13 channel baselines took 29 seconds. A record named `SUMMARY` in the run's key-value store says what each input returned and what was charged.

### Pricing

- **$0.003 per scored video** ($3 per 1,000), with its outlier score, views per day and its channel's median
- Channel baselines are included; channels with no public uploads cost nothing; videos below your minimum score are not charged

What typical jobs cost at the list price:

| Job | Cost |
|---|---|
| 20 search results | $0.06 |
| A channel's latest 50 uploads | $0.15 |
| 10 searches, 20 results each | $0.60 |
| 25 channels, 50 uploads each | $3.75 |

On Apify's Scale and Business plans the per-event prices are lower (Store discounts). Set **Maximum cost per run** and the Actor stops cleanly when it is reached: you never pay more than that.

### Tips

- Search a niche and set Only videos scoring at least to 3: what is left are the ideas that worked.
- Use Search: uploaded in the last month to find what is breaking out now.
- Videos younger than 3 days are marked `tooNewToJudge` and left out of channel medians.

### Use it through the API

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zaiq/youtube-outlier-finder").call(run_input={"searches": ["budget travel tips"], "resultsPerSearch": 50, "minScore": 3})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)
```

**JavaScript**

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zaiq/youtube-outlier-finder').call({"searches": ["budget travel tips"], "resultsPerSearch": 50, "minScore": 3});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**HTTP (one call, results back)**

```bash
curl -X POST 'https://api.apify.com/v2/acts/zaiq~youtube-outlier-finder/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{"searches": ["budget travel tips"], "resultsPerSearch": 50, "minScore": 3}'
```

### Integrations and schedules

- **Schedules:** run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
- **Make, Zapier, n8n, Google Sheets, Slack, Airtable:** connect it through Apify's integrations, or send each finished run to a **webhook**.
- **Datasets:** results stay in the run's dataset; export them or read them by API whenever you need them.

### Use it with AI agents (MCP)

Add Apify's MCP server (`https://mcp.apify.com`) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "find YouTube videos about budget travel that got at least 5 times their channel's normal views". AI agents can also pay for runs directly through Apify's agentic payments.

### Limits

- Each channel's median is of its latest uploads (up to about 100, leaving out the last 3 days); an old video is compared with the channel's normal today.
- Views on the uploads list are YouTube's rounded figures (120K); search results carry exact views.
- Public videos only, signed out.

### FAQ

**What is an outlier score?**

A video's views divided by the median views of its channel's recent uploads: 5 means five times that channel's normal.

**Do I need a YouTube API key?**

No. No key and no quota.

**Why does a small channel rank above a big one?**

Because the score is relative: 100,000 views on a channel that usually gets 10,000 is a bigger outlier than 2 million on one that usually gets 1.5 million.

**Does it work for Shorts?**

Yes: pick Shorts.

### Related Actors from Zaiq

- [instagram-reels-outlier-finder](https://apify.com/zaiq/instagram-reels-outlier-finder): the same for Instagram creators
- [youtube-comments-scraper](https://apify.com/zaiq/youtube-comments-scraper): YouTube comments with insights
- [youtube-transcript-scraper](https://apify.com/zaiq/youtube-transcript-scraper): YouTube transcripts
- [tiktok-video-script-analyzer](https://apify.com/zaiq/tiktok-video-script-analyzer): TikTok videos as their script

### Support

Questions, a site that changed, or a field you need? Open an issue on this Actor's **Issues** tab: we answer there, usually within a day.

***

Also found as: youtube outlier finder, youtube outliers, viral youtube videos, youtube video research, youtube niche research, youtube views analysis, youtube competitor analysis, 1of10 alternative.

# Actor input Schema

## `searches` (type: `array`):

Search YouTube for these and score every result against its own channel (e.g. espresso machine review).

## `channels` (type: `array`):

Channel @handles, links or ids, one per line: their latest uploads, scored against the channel's median.

## `content` (type: `string`):

Score long videos or Shorts.

## `resultsPerSearch` (type: `integer`):

How many search results to score ($0.003 each).

## `videosPerChannel` (type: `integer`):

How many of each channel's latest uploads to score ($0.003 each).

## `uploaded` (type: `string`):

Only search results uploaded in this time.

## `searchSort` (type: `string`):

YouTube's order for the search.

## `minScore` (type: `integer`):

Return only videos with at least this many times their channel's median views (e.g. 3); 0 returns them all. Videos left out are not charged.

## Actor input object example

```json
{
  "searches": [
    "home espresso machine review"
  ],
  "content": "videos",
  "resultsPerSearch": 20,
  "videosPerChannel": 50,
  "uploaded": "any",
  "searchSort": "relevance",
  "minScore": 0
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset: the results.

## `summary` (type: `string`):

What each input returned, and notes.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searches": [
        "home espresso machine review"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaiq/youtube-outlier-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searches": ["home espresso machine review"] }

# Run the Actor and wait for it to finish
run = client.actor("zaiq/youtube-outlier-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searches": [
    "home espresso machine review"
  ]
}' |
apify call zaiq/youtube-outlier-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaiq/youtube-outlier-finder"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mG1SRclYX5onwnEFO/builds/UxbTYHMH7hdDfia9O/openapi.json
