# Breakout Radar: YouTube Viral & Trending Video Finder (`eliteaisociety/youtube-viral-finder`) Actor

Find YouTube videos and Shorts going viral right now in any niche. Ranks by views per hour, breakout ratio and engagement.

- **URL**: https://apify.com/eliteaisociety/youtube-viral-finder.md
- **Developed by:** [John King](https://apify.com/eliteaisociety) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 ranked videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Breakout Radar: YouTube Viral & Trending Video Finder

**Find the YouTube videos and Shorts taking off in your niche right now, ranked by how fast they're growing.**

Raw scrapers give you views and likes. This Actor tells you *what's taking off and how fast*, including small channels that are suddenly blowing up.

### Who it's for

- **Faceless page owners** looking for proven topics and formats to remake
- **Creators** who want to spot trends in their niche before they peak
- **Marketers & agencies** doing content research and competitor monitoring

### How it works

1. Searches YouTube for your keywords (via Apify's YouTube Scraper).
2. Scores every video:
   - **Views per hour** = views ÷ hours since posting (min 1 hour): speed
   - **Breakout ratio** = views ÷ channel subscribers: outperformance (blank if subs are hidden)
   - **Engagement rate** = (likes + comments) ÷ views
   - **Viral score (0–100)**: 50% views/hour, 35% breakout, 15% engagement. Each part is log-scaled against fixed caps (50,000 views/hour, 100× breakout, 10% engagement), so scores are comparable across runs and niches. If subscriber count is hidden, the breakout weight is shared out to the other two parts.
3. Ranks the videos and labels each one: **Exploding** (≥70), **Rising** (≥40), **Steady**. Videos are flagged as **small-channel breakouts** when the channel has under 10k subscribers and the breakout ratio is 10× or more.

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `keywords` | string (required) | — | e.g. `elderly caregiving`. Separate multiple searches with commas, e.g. `AI news, ChatGPT, Claude, Grok` (up to 10). |
| `maxVideos` | integer | 50 | 1–200. **Total** budget shared evenly across all searches (at least 1 each), so adding terms doesn't multiply cost. |
| `videoType` | `shorts` / `long` / `both` | `both` | Shorts = ≤60s or `/shorts/` URL |
| `timeWindow` | `24h` / `7d` / `30d` | `7d` | |
| `minViews` | integer | 0 | |

Duplicates found by several searches are merged, and everything is ranked in one combined list. Each row has a `searchTerm` showing which search found it.

```json
{ "keywords": "AI news, ChatGPT, Claude", "maxVideos": 30, "videoType": "both", "timeWindow": "7d", "minViews": 1000 }
```

### Example output

*Example data for illustration only. These are not real videos.*

| rank | searchTerm | title | channel | subscribers | views | ageHours | viewsPerHour | breakoutRatio | engagementRate | viralScore | label | smallChannelBreakout | isShort |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | caregiving | Mom's reaction to her new caregiver | TinyCare | 5,000 | 500,000 | 20 | 25,000 | 100 | 0.084 | 94.5 | Exploding | ✅ | ✅ |
| 2 | dementia care | 5 dementia care tips nobody tells you | CareCoach | 48,000 | 310,000 | 70 | 4,429 | 6.46 | 0.051 | 61.9 | Rising | ❌ | ❌ |
| 3 | caregiving | Day in the life of a caregiver | BigCo Health | 2,000,000 | 20,000 | 150 | 133 | 0.01 | 0.016 | 25.2 | Steady | ❌ | ❌ |

Each row also includes `url`, `thumbnail`, `likes` and `comments`. Export as CSV, Excel or JSON from the dataset tab.

### Pricing

Pay per event: **$0.01 per ranked video** (event `ranked-video`). A default 50-video run costs about $0.50. You only pay for videos that appear in your results.

### FAQ

**Why is breakout ratio empty?** The channel hides its subscriber count. The score then uses views/hour and engagement only.

**Why fewer results than maxVideos?** Results are filtered by time window, video type and minimum views, and duplicates are removed. YouTube search can also return fewer videos than requested.

**How are Shorts detected?** A video counts as a Short if it is 60 seconds or shorter, or its URL contains `/shorts/`.

**Why log scale with fixed caps?** A video scores the same no matter which other videos are in the run, so scores can be compared across niches and days.

**Is this legal?** It only uses public YouTube data. Follow YouTube's terms and local law.

# Actor input Schema

## `keywords` (type: `string`):

Search keywords or niche, e.g. 'elderly caregiving'. Separate multiple searches with commas, e.g. AI news, ChatGPT, Claude, Grok (max 10). maxVideos is shared across all searches.

## `maxVideos` (type: `integer`):

Total videos to fetch and score across all searches (split evenly per search; cost scales with this).

## `videoType` (type: `string`):

Shorts are 60s or shorter (or /shorts/ URLs).

## `timeWindow` (type: `string`):

Only videos published within this window.

## `minViews` (type: `integer`):

Skip videos with fewer views than this.

## Actor input object example

```json
{
  "keywords": "elderly caregiving",
  "maxVideos": 10,
  "videoType": "both",
  "timeWindow": "7d",
  "minViews": 0
}
```

# Actor output Schema

## `rankedVideos` (type: `string`):

No description

# 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 = {
    "keywords": "elderly caregiving",
    "maxVideos": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("eliteaisociety/youtube-viral-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 = {
    "keywords": "elderly caregiving",
    "maxVideos": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("eliteaisociety/youtube-viral-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 '{
  "keywords": "elderly caregiving",
  "maxVideos": 10
}' |
apify call eliteaisociety/youtube-viral-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,eliteaisociety/youtube-viral-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/Ekicb4CjZWXx9kAiR/builds/asjEOtnjB5paVgK35/openapi.json
