# Youtube Growth Scraper (`bakkeshks/youtube-growth-scraper`) Actor

Scrape YouTube channel growth metrics like average views, trend %, and activity status from recent long form videos. No API key needed. Ideal for sponsorship vetting, creator research, and brand deal insights.

- **URL**: https://apify.com/bakkeshks/youtube-growth-scraper.md
- **Developed by:** [Bakkesh KS](https://apify.com/bakkeshks) (community)
- **Categories:** Social media, Videos, Automation
- **Stats:** 37 total users, 4 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 channels

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

## 🔍 **What is YouTube Growth Scraper?**

**YouTube Growth Scraper** analyzes YouTube channel performance by scraping recent long-form videos to extract growth metrics—no API key required.

**What you provide:** YouTube channel URLs (up to 500 per run)
**What you get:** Average views, median views, trend percentage, subscriber count, activity status, and recent video performance data

It provides actionable insights for sponsorship vetting, creator research, and competitive analysis by measuring channel growth patterns from recent uploads.

**⚠️ Important:** This actor **only scrapes long-form videos**, not YouTube Shorts.

This scraper is designed for creator sponsorship checks, competitor research, channel vetting, and rapid performance estimation.
This Scraper is a fast, proxy enabled YouTube data extractor that focuses on **channel performance insights**.

It answers:

- Is this channel view trend going up or down?
- What is the average views?
- Is this creator active or inactive?
- Are the recent videos performing worse or better?
- Should my brand work with this creator?

Perfect for **agencies**, **UGC creators**, **brands**, and **marketers**.

***

## 📊 **What does YouTube Growth Scraper do?**

It analyzes each YouTube channel to extract reliable performance data:

#### You get for every channel:

- 📺 **Channel name**
- 🔗 **Channel URL**
- 👥 **Subscriber count**
- 📊 **Total views (last 6 to 8 videos)**
- 📈 **Average views**
- 🎯 **Median views**
- 📉 **Trend percentage (improving or declining)**
- ⏳ **Last video upload date**
- 🟢 **Is the channel active (last 30 days)?**
- ❗ **Error states (invalid, no videos, missing fields)**

**⚠️ Note:** Metrics are based on **long-form videos only**. YouTube Shorts are not included in the analysis.

This gives the *exact insight* needed to judge recent performance.

#### 🧮 **Calculation Logic**

All metrics are based on **recent videos in YouTube's order** (most recent first, unsorted):

**Video Selection:**

- Default: 6 recent videos (min), Max: 8 videos
- If channel has fewer videos, all available videos are used
- Minimum 2 videos required for trend calculation

**How We Calculate:**

**1. Average Views**

```
Total Views ÷ Number of Videos
Example: (100K + 80K + 90K + 70K + 85K + 75K) ÷ 6 = 83.3K avg views
```

**2. Median Views**

```
Sort all view counts → pick middle value
Example: [75K, 80K, 85K, 90K, 100K, 70K]
Sorted: [70K, 75K, 80K, 85K, 90K, 100K]
Median = (80K + 85K) ÷ 2 = 82.5K
```

**3. Trend % (Recent vs Older Performance)**

```
Split videos in half → compare recent half vs older half
```

**Example with 6 videos:**

```
[100K, 80K, 90K, 70K, 85K, 75K]
Recent 3: avg(100K, 80K, 90K) = 90K
Older 3: avg(70K, 85K, 75K) = 76.7K
Trend = ((90K - 76.7K) / 76.7K) × 100 = +17.3% ✅ improving
```

**Example with 3 videos:**

```
[50K, 60K, 100K]
Recent 2: avg(50K, 60K) = 55K
Older 1: 100K
Trend = ((55K - 100K) / 100K) × 100 = -45% ❌ declining
```

**Example with 2 videos:**

```
[80K, 120K]
Recent: 80K
Older: 120K
Trend = ((80K - 120K) / 120K) × 100 = -33% ❌ declining
```

***

## 🎯 **How to use this data**

You can use the output to:

#### ✅ **Calculate creator sponsorship pricing**

Avg views = strongest predictor of brand deal cost.

#### ✅ **Check if a channel is growing or dying**

Trend % tells you if recent uploads are performing better or worse.

#### ✅ **Compare creators in your niche**

Sort by avg views, trend %, activity.

#### ✅ **Vet channels for collabs or UGC projects**

Instantly screen low-performing or inactive channels.

#### ✅ **Monitor creators for agencies or brands**

Daily/weekly insights for selection and decision-making.

***

## ⚙️ **How to use the YouTube Growth Scraper**

#### **1. Create a free Apify account & open YouTube Growth Scraper**

Sign up for a [free Apify account](https://apify.com/sign-up) and navigate to the YouTube Growth Scraper Actor page.

#### **2. Add channel URLs**

You can enter up to:

🔥 **Maximum 500 YouTube channels per run**

#### **3. Choose how many videos to analyze**

- Default = **6**
- Max = **8**

#### **4. Run the actor**

The scraper runs automatically and handles all technical requirements for you.

You don't need API keys or technical setup.

***

## 📝 **Input**

For input, you can use the fields in **Apify Console** or enter it directly via **JSON**. head over to the **Input Schema** tab for details.

**Maximum:** 500 YouTube channel URLs per run.

#### **Example Input JSON:**

```json
{
  "channelUrls": [
    "https://www.youtube.com/@matthew_berman",
    "https://www.youtube.com/@ThePrimeTimeagen"
  ],
  "maxVideosToAnalyze": 6
}
```

#### ⚠️ **Important: Duplicate URL Handling**

**This actor automatically removes duplicate URLs from your input.**

If you provide the same channel URL multiple times, it will only be scraped once.

**Example:**

```json
{
  "channelUrls": [
    "https://www.youtube.com/@matthew_berman",
    "https://www.youtube.com/@ThePrimeTimeagen",
    "https://www.youtube.com/@matthew_berman"
  ]
}
```

**Output:** Only **2 records** (not 3)

- matthew_berman: processed once
- ThePrimeTimeagen: processed once

This ensures you don't waste compute resources on duplicate requests and keeps your dataset clean.

***

## 📤 **Output**

The scraped results are saved as a **dataset** which you can find in the **Storage** tab.

Note that the output is organized as a **table** for viewing convenience, but it doesn't display all fields in the preview.

You can **preview all fields** and **download the file** with YouTube data in various formats (JSON, CSV, Excel, and more).

Here are a few **JSON examples** of different YouTube scraping cases:

#### ✅ **Successful channel analysis**

```json
{
  "channelId": "UCawZsQWqfGSbCI5yjkdVkTA",
  "channelName": "Matthew Berman",
  "channelUrl": "https://www.youtube.com/@matthew_berman",
  "subCount": "527K subscribers",
  "analyzedVideos": 6,
  "totalViews": "584.8K",
  "avgViews": "97.5K",
  "medianViews": "67.6K",
  "trendPercent": "-49.6%",
  "lastVideoUploadDate": "14 Nov 2025",
  "lastScrapedDate": "15 Nov 2025",
  "isActive": true,
  "status": "ok"
}
```

```json
{
  "channelId": "UCUyeluBRhGPCW4rPe_UvBZQ",
  "channelName": "ThePrimeTimeagen",
  "channelUrl": "https://www.youtube.com/@ThePrimeTimeagen",
  "subCount": "850K subscribers",
  "analyzedVideos": 6,
  "totalViews": "1.2M",
  "avgViews": "200K",
  "medianViews": "185K",
  "trendPercent": "+15.2%",
  "lastVideoUploadDate": "15 Nov 2025",
  "lastScrapedDate": "15 Nov 2025",
  "isActive": true,
  "status": "ok"
}
```

#### ❌ **Error states**

```json
{
  "channelUrl": "https://www.youtube.com/@ricardotaipe",
  "status": "unavailable"
},
{
  "channelUrl": "https://www.youtube.com/@ruaiinfo",
  "channelId": "UCwueCjyfv1b8rdRDknABtNQ",
  "status": "missing_fields"
},
{
  "channelUrl": "https://www.youtube.com/@Dankieft",
  "channelId": "UCdNj_PP__5kKtjZabuEjbqA",
  "status": "no_valid_videos"
}
```

***

## 🔐 **Proxy Usage**

This actor **automatically uses Apify Datacenter Proxy**, which:

- improves stability
- avoids YouTube blocks
- allows larger batches
- requires no setup by users

Users do **not** need to configure proxy manually.

***

## 💰 **How much will YouTube channel scraping cost you?**

YouTube Growth Scraper uses our pay-per-event (PPE) model, meaning you are charged a fee for specific events, such as starting the Actor, scraping a channel, or using a [proxy](https://apify.com/proxy). You can find more details of how all this works on the Actor's pricing tab.

Also note that all fees can have discounts applied depending on your plan. Check out our [pricing page](https://apify.com/pricing) for more details.

***

## ❓ FAQ

#### **Does it require a YouTube API key?**

No, it works without any API keys.

#### **How many channels can I scrape?**

Up to **500 per run** with stable performance.

#### **Can I upload a file of URLs?**

Not yet - **CSV/TXT upload is coming in the next version**.

#### **Does it scrape engagement rate?**

No, this tool focuses on recent video performance and growth signals.

#### **Can brands use this for sponsorship pricing?**

Yes - avg views, median views, and trend % are ideal for estimating rates.

# Actor input Schema

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

Enter up to 500 YouTube channel URLs (e.g., https://www.youtube.com/@tseries). Maximum allowed: 500 URLs.

## `videosToAnalyze` (type: `integer`):

Choose between 6 and 8 recent videos.

## Actor input object example

```json
{
  "channels": [
    "https://www.youtube.com/@tseries"
  ],
  "videosToAnalyze": 6
}
```

# Actor output Schema

## `dataset` (type: `string`):

Link to the dataset containing the analyzed YouTube channel metrics.

# 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 = {
    "channels": [
        "https://www.youtube.com/@tseries"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("bakkeshks/youtube-growth-scraper").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 = { "channels": ["https://www.youtube.com/@tseries"] }

# Run the Actor and wait for it to finish
run = client.actor("bakkeshks/youtube-growth-scraper").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 '{
  "channels": [
    "https://www.youtube.com/@tseries"
  ]
}' |
apify call bakkeshks/youtube-growth-scraper --silent --output-dataset

```

## MCP server setup

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

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/MhdgApn8o4UfeIHtH/builds/gdu3wy5tuvWe5KTDo/openapi.json
