# YouTube Channel Video Scraper \[From $0.15/1K 💰] Official API (`cybermax/youtube-channel-scraper`) Actor

💰 $0.15 per 1,000 videos + $0.001 per run; channel rows and channels not found are free. Every upload of any YouTube channel with views, likes, comments, duration and tags, through the official YouTube Data API with your own free API key. Shorts, long videos or live; new-videos monitor.

- **URL**: https://apify.com/cybermax/youtube-channel-scraper.md
- **Developed by:** [CyberMax](https://apify.com/cybermax) (community)
- **Categories:** Videos, Social media, MCP servers
- **Features:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## Chanroll: YouTube Channel Video Scraper (Official API)

#### Every video of any YouTube channel with views, likes, comments, duration and tags, from the official YouTube Data API with your own free key

Chanroll is a **YouTube channel video scraper** that does not scrape: it reads the **official YouTube Data API v3** with **your own free API key**, so counts are exact, nothing breaks when YouTube changes its pages, and there are no proxies, cookies or blocks. Give it channel URLs, **@handles** or channel IDs and get **every upload** (or just the newest N) with **views, likes, comment count, duration, publish date, tags, topics, captions flag and thumbnail**, plus one free row per channel with **subscribers, total views and video count**. Filter to **Shorts, long-form videos or live streams**, keep only recent uploads, or switch on **monitor mode** to get only new videos on every scheduled run.

**[▶ Try it now](https://apify.com/cybermax/youtube-channel-scraper)** (run it empty for a free demo of the output format) · $0.15 per 1,000 videos + $0.001 per run · Apify's free plan includes $5 of credit a month

**Built for:** creator-economy and influencer-marketing teams sizing up channels before a sponsorship · content strategists tracking competitors' uploads and what performs · analysts and researchers building video datasets · agencies reporting on client channels · AI agents that need a channel's catalogue as clean JSON

**Real output** (real run on Apify, 12 Nov 2026: 2 channels found, 2 not found, 200 videos in 6.1 s, 12 API units):

| Row | Title | Published | Length | Views | Likes | Comments |
|---|---|---|---|---|---|---|
| channel | Google for Developers (@googledevelopers): 2,680,000 subscribers, 6,125 videos | | | | | |
| video | Accelerate shipping to scale with Google Antigravity | 2026-10-29 | 2:35 | 14,180 | 112 | 14 |
| video | 🪴 Building an autonomous plant rover with Gemini Live | 2026-10-29 | 2:06 | 3,316 | 136 | 6 |
| channel | Marques Brownlee (@mkbhd): 21,400,000 subscribers, 1,866 videos | | | | | |
| channel | `@thishandledoesnotexist12345xyz`: Channel not found (free) | | | | | |

```json
{
  "type": "video",
  "query": "@GoogleDevelopers",
  "videoId": "rsOiZE19RVo",
  "url": "https://www.youtube.com/watch?v=rsOiZE19RVo",
  "title": "Accelerate shipping to scale with Google Antigravity",
  "description": "Building software to move tens of millions of vehicles requires massive infrastructure. …",
  "publishedAt": "2026-10-29T20:00:20Z",
  "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
  "channelTitle": "Google for Developers",
  "channelHandle": "@googledevelopers",
  "channelSubscribers": 2680000,
  "durationSeconds": 155,
  "duration": "2:35",
  "views": 14180,
  "likes": 112,
  "comments": 14,
  "tags": ["Google", "developers"],
  "categoryId": "28",
  "language": "en",
  "definition": "hd",
  "hasCaptions": true,
  "madeForKids": false,
  "embeddable": true,
  "topics": ["Business", "Knowledge", "Technology"],
  "thumbnail": "https://i.ytimg.com/vi/rsOiZE19RVo/maxresdefault.jpg",
  "position": 1,
  "retrievedAt": "2026-11-12T03:00:08.442Z"
}
```

### What it costs

| What | Price |
|---|---|
| Video returned | **$0.00015** ($0.15 per 1,000) |
| Run started (once per run, after YouTube accepts your key) | **$0.001** |
| Channel rows, channels not found, API errors, videos already seen in monitor mode, demo runs, runs with a refused key | free |

Example: the 500 newest videos of 10 channels cost **$0.076**. On your side it uses about 30 of your 10,000 free daily API units (2 units per 50 videos). Prices of other Store Actors for the same job on 12 Nov 2026 (their Free-plan tier): streamers/youtube-channel-scraper $1.30 per 1,000, grow_media/youtube-channel-video-scraper $1.00 per 1,000, apidojo/youtube-channel-information-scraper $0.50 per 1,000. Those need no API key; Chanroll needs your free key, and in exchange its per-video price is below each of theirs at every plan tier (very small runs can cost about the same because of the $0.001 run fee).

### Get your free YouTube Data API key (about 3 minutes, once)

1. Open [Google Cloud Console](https://console.cloud.google.com/) and create a project (any name; no billing account is needed for this API).
2. Go to **APIs & Services → Library**, search **YouTube Data API v3** and press **Enable**.
3. Go to **APIs & Services → Credentials → Create credentials → API key**.
4. Optional but wise: edit the key, set **API restrictions → YouTube Data API v3**, and leave **Application restrictions** on *None* (the Actor calls Google from Apify's servers).
5. Paste the key into the **YouTube Data API key** field. It is a secret input: Apify stores it encrypted, the Actor sends it only to `googleapis.com` and never writes it to the log or the dataset.

Google gives every project **10,000 API units a day for free**; the quota resets at midnight Pacific time. If you run out, the run stops cleanly, keeps what it has and tells you; you can ask Google for a higher quota in the same console.

### How to use it

1. Paste your **YouTube Data API key**.
2. Add **channels**: `https://www.youtube.com/@mkbhd`, `@mkbhd`, `https://www.youtube.com/channel/UC…` or a bare `UC…` ID.
3. Set **Videos per channel** (0 = every upload) and, if you like, a **video type** or a **published after** date.
4. Run. Download the dataset as JSON, CSV or Excel, or read it through the API.

### Ready-made inputs

```json
{ "apiKey": "YOUR_KEY", "channels": ["@GoogleDevelopers", "@mkbhd"], "maxVideosPerChannel": 50 }
```

```json
{ "apiKey": "YOUR_KEY", "channels": ["@mkbhd"], "maxVideosPerChannel": 0, "videoType": "shorts" }
```

```json
{ "apiKey": "YOUR_KEY", "channels": ["@GoogleDevelopers"], "publishedAfter": "30 days", "videoType": "videos" }
```

### Run it on a schedule (only new uploads)

Turn on **Monitor mode** and schedule the Actor hourly or daily. The first run delivers the newest videos and remembers everything currently on the channel; every later run returns **only uploads it has not delivered before**. A run with nothing new costs only the $0.001 run fee. Connect the run to Slack, Google Sheets, Make, n8n or a webhook from Apify's Integrations tab for an upload alert.

### Integrations

- **API:** `POST https://api.apify.com/v2/acts/cybermax~youtube-channel-scraper/run-sync-get-dataset-items` with the input as JSON and your Apify token.
- **Python / JavaScript:** `apify-client` (`client.actor("cybermax/youtube-channel-scraper").call(run_input=…)`).
- **AI agents (MCP):** `https://mcp.apify.com/?tools=cybermax/youtube-channel-scraper` exposes it as one tool with this input schema.
- **No code:** Make, Zapier and n8n through their Apify apps.

### Why Chanroll

- **Official data.** Counts come from YouTube's own API, not from parsed pages.
- **Dependable.** No proxies, no browser, no anti-bot arms race; a run of 200 videos took 6 seconds.
- **Exact Shorts / long-form / live split**, using YouTube's own per-type upload lists.
- **You pay for videos, not for misses.** Channels that do not exist, private channels and API hiccups are reported and free.
- **Honest limits.** It returns what the API returns: no transcripts, no comment text, no subscriber lists, no downloads.

### FAQ

**Why do I need my own API key?** YouTube's terms forbid scraping its site, so the only legitimate route is its official API, and Google issues the free quota per project. With your own key you also keep full control: you can revoke it at any time.

**How many videos can I get per day?** A page of 50 videos costs 2 API units, so the free 10,000 units cover roughly 250,000 videos a day.

**Does it return every video of a big channel?** Yes, with **Videos per channel = 0**. YouTube's upload lists go back to the first upload.

**Does it get comments or transcripts?** No. Comment counts are included; comment text and captions are not.

**Is the view count live?** It is the number the API returns at run time (`retrievedAt` is on every row).

**Why not just use a page scraper?** They work without a key, and some are very good. Choose this one if you want official numbers, the lowest price per video, or a tool whose method YouTube's terms allow.

**Can an AI agent use it?** Yes, through Apify's MCP server; pass the key in the tool input.

### Terms and data source

This Actor is an API client for **YouTube API Services**: every row comes from the official [YouTube Data API v3](https://developers.google.com/youtube/v3), called with your own key and your own quota. It does not load youtube.com pages or feeds and does not download videos, audio or captions. By using it you agree to be bound by the [YouTube Terms of Service](https://www.youtube.com/t/terms); Google's handling of data is described in the [Google Privacy Policy](https://policies.google.com/privacy). Your Google Cloud project is the API client of record, so the [YouTube API Services Terms](https://developers.google.com/youtube/terms/api-services-terms-of-service) and [Developer Policies](https://developers.google.com/youtube/terms/developer-policies) apply to how you store and use the results (for example, refresh or delete stored statistics after 30 days). CyberMax is not affiliated with, endorsed by or sponsored by YouTube or Google. YouTube is a trademark of Google LLC.

### Also from CyberMax

- [Vidtrawl: YouTube Search Scraper](https://apify.com/cybermax/youtube-search-scraper) · keyword search and trending videos with full statistics.
- [Vidvett: YouTube Video Details Scraper](https://apify.com/cybermax/youtube-video-details) · bulk stats for video links and playlists, with growth deltas.
- [Gripeline: App Reviews Scraper](https://apify.com/cybermax/app-reviews) · App Store and Google Play reviews.
- [Rowmold: Dataset Filter & Transform](https://apify.com/cybermax/dataset-filter-transform) · filter the results and export Excel.

Found this useful? A quick rating helps others find it.

© 2026 CyberMax. All rights reserved.

# Actor input Schema

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

Channel URLs (youtube.com/@handle, /channel/UC…, /user/name), @handles or UC… channel IDs, one per line. Channels that are not found are reported and free.

## `apiKey` (type: `string`):

Your own YouTube Data API v3 key from Google Cloud Console (free, about 3 minutes: create a project, enable 'YouTube Data API v3', create an API key; steps in the README). It is stored encrypted, sent only to googleapis.com and never logged. Leave empty for a free demo that returns illustrative rows.

## `maxVideosPerChannel` (type: `integer`):

Newest first. 0 = every upload of the channel (a channel with 5,000 videos uses about 200 of your 10,000 free daily API units).

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

Uses YouTube's own per-type upload lists, so the filter is exact and filtered-out videos cost nothing.

## `publishedAfter` (type: `string`):

A date (2026-01-31) or an age (7 days, 3 months, 1 year). Empty = no limit.

## `includeChannelInfo` (type: `boolean`):

One free row per channel with subscribers, total views, video count, country, description and keywords.

## `maxItems` (type: `integer`):

Stop after this many videos across the whole run. Empty = no total cap. You can also cap the cost with the run's 'Maximum charge' option.

## `monitor` (type: `boolean`):

Remembers which videos it has already delivered for these channels and returns only new uploads on the next run. Schedule it hourly or daily for an upload feed; a run with nothing new costs nothing.

## `monitorKey` (type: `string`):

Optional name for this watchlist, so two schedules with different inputs keep separate memories. Leave empty to use one memory per unique input.

## `accessToken` (type: `string`):

For developers who already use Google OAuth: an access token with a YouTube read scope. Tokens expire after about an hour, so an API key is simpler for scheduled runs.

## Actor input object example

```json
{
  "channels": [
    "@GoogleDevelopers"
  ],
  "maxVideosPerChannel": 50,
  "videoType": "all",
  "includeChannelInfo": true,
  "monitor": false
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "channels": [
        "@GoogleDevelopers"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cybermax/youtube-channel-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": ["@GoogleDevelopers"] }

# Run the Actor and wait for it to finish
run = client.actor("cybermax/youtube-channel-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": [
    "@GoogleDevelopers"
  ]
}' |
apify call cybermax/youtube-channel-scraper --silent --output-dataset

```

## MCP server setup

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