# Fast YouTube Channel Scraper (`streamers/youtube-channel-scraper`) Actor

This alternative YouTube Data API has no limits or quotas. Use it to scrape one or multiple YouTube channels: channel info, URL, total number of subscribers, videos and views, creation date. Try it and get basic video data. You can download extracted data in JSON, CSV, and Excel.

- **URL**: https://apify.com/streamers/youtube-channel-scraper.md
- **Developed by:** [Streamers](https://apify.com/streamers) (Apify)
- **Categories:** Videos, Social media
- **Stats:** 21,129 total users, 2,228 monthly users, 99.6% runs succeeded, 432 bookmarks
- **User rating**: 4.63 out of 5 stars

## Pricing

from $0.50 / 1,000 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Fast YouTube Channel Scraper Readme

### What is Fast YouTube Channel Scraper?

Fast YouTube Channel Scraper is a data extraction tool created for scraping channel information from YouTube, going beyond the limitations of YouTube Data API.

- Extract **all channel information**
- Also includes the **creator’s bio** and **number of subscribers**
- Allows for bulk extraction of multiple channels, making for easy comparison

### Which YouTube channel data can I extract using this tool?

<table>
<tr>
<td>📁 Channel name</td>
<td>➕ Number of subscribers </td>
</tr>
<tr>
<td>🌐 Channel URL</td>
<td>📝 Channel description</td>
</tr>
<tr>
<td>📍 Location</td>
<td>⏳ Video duration</td>
</tr>
<tr>
<td>📺 Video title</td>
<td>🎥 Video URL</td>
</tr>
<tr>
<td>📅 Date of posting</td>
<td>🖼️ Thumbnail URL</td>
</tr>
<tr>
<td>📊 Total view count</td>
<td>🔗 Links in video description</td>
</tr>
</table>

### How to use data after web scraping YouTube channels?

The data extracted from Fast YouTube Channel Scraper can be used in all kinds of ways, such as:

- Keeping **track of competitors' channels** and monitoring activity on them
- Enrich your **lead generation** data with YouTube channel information
- Understanding a **channel audience's interests**
- Analyzing **engagement statistics** to improve performance
- Tracking **trends** in the channel's popularity
- Developing marketing and advertising campaigns based on the above data

### How do I use Fast YouTube Channel Scraper?

Fast YouTube Channel Scraper is designed to be user-friendly, even for those who have never extracted data from the web before. Here’s how you can use YouTube Channel Scraper to extract data from any number of YouTube channels:

1. [Create](https://console.apify.com/actors/67Q6fmd8iedTVcCwY) an Apify account
2. Open [Fast YouTube Channel Scraper.](https://apify.com/streamers/youtube-channel-scraper)
3. Add one or more YouTube channel URLs to scrape channel info.
4. Click the “Start” button and wait for the data to be extracted.
5. Download your data in JSON, XML, CSV, Excel, or HTML.

### ⬇️ Input example

To use Fast YouTube Channel Scraper, all you need as input is one or more **YouTube channel URLs.** Simply add these to the top field in the Console, then add how many videos, shorts, or streams you want to scrape.

<a href="https://console.apify.com/actors/67Q6fmd8iedTVcCwY/">
<img src="https://github.com/apify-projects/actor-readme-images/blob/master/youtube-channel-scraper-input.png?raw=true" alt="Fast YouTube Channel Scraper input" style="width:70%;">
</a>

💡 If you want only channel information without videos, input "0" to the maximum number of videos, shorts, and streams fields.

Click on the [input tab](https://apify.com/streamers/youtube-channel-scraper/input-schema) for more advanced parameters, below an example in JSON.

```json
{
    "maxResultStreams": 0,
    "maxResults": 10,
    "maxResultsShorts": 0,
    "oldestPostDate": "100 days",
    "sortVideosBy": "NEWEST",
    "startUrls": [
        {
            "url": "https://www.youtube.com/@Apify",
            "method": "GET"
        }
    ]
}
```

### ⬆️ Output example

The scraped YouTube channel data will be shown 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 show **all the fields**:

<a href="https://console.apify.com/actors/67Q6fmd8iedTVcCwY/">
<img src="https://github.com/apify-projects/actor-readme-images/blob/master/youtube-channel-scraper-output.png?raw=true" alt="Fast YouTube Channel Scraper output" style="width:100%;">
</a>

You can preview all the fields, or export the data in JSON, Excel, HTML table, CSV, or XML. Here is what it would look like in JSON:

```json
	{
    "id": "kwWeUpLAG0I",
    "title": "How to Scrape Facebook Reels for Infinite Content Ideas",
    "duration": "5:13",
    "channelName": "Apify",
    "channelUsername": "Apify",
    "channelUrl": "https://www.youtube.com/channel/UCTgwcoeGGKmZ3zzCXN2qo_A",
    "date": "6 days ago",
    "url": "https://www.youtube.com/watch?v=kwWeUpLAG0I",
    "viewCount": 402,
    "fromYTUrl": "https://www.youtube.com/@Apify/videos",
    "type": "video",
    "thumbnailUrl": "https://i9.ytimg.com/vi/kwWeUpLAG0I/hqdefault_custom_1.jpg?sqp=COjs6sIG-oaymwEiCKgBEF5IWvKriqkDFQgBFQAAAAAYASUAAMhCPQCAokN4AQ==&rs=AOn4CLCjizgVGFlvoWlFH4qZAY7eXIcKFw",
    "input": "https://www.youtube.com/@Apify",
    "order": 0,
    "aboutChannelInfo": {
      "channelDescription": "Welcome to Apify’s official YouTube channel!\n\nApify is a web scraping and automation platform, which lets you automate anything you can do in a web browser 🚀\n\nGather data with pre-built tools we call Actors and further use it to feed generative AI or for lead generation, machine learning, market research, and a myriad of other use cases 🤖\n\nAre you a developer? Build your own Actors and publish them on Apify Store to earn passive income 💸\n\nSubscribe now for tutorials on how to use our Actors, build your own ones, utilize our open-source libraries, or learn about various web scraping technologies 📖",
      "channelJoinedDate": "Jan 4, 2017",
      "channelDescriptionLinks": [
        {
          "text": "Try Apify for FREE",
          "url": "https://apify.com/"
        },
        {
          "text": "Join our Discord",
          "url": "https://discord.com/invite/jyEM2PRvMU"
        },
        {
          "text": "LinkedIn",
          "url": "https://www.linkedin.com/company/apifytech"
        },
        {
          "text": "Twitter X",
          "url": "https://twitter.com/apify"
        },
        {
          "text": "GitHub",
          "url": "https://github.com/apify"
        },
        {
          "text": "Apify Docs",
          "url": "https://docs.apify.com/"
        },
        {
          "text": "Schedule demo",
          "url": "https://apify.com/professional-services"
        }
      ],
      "channelLocation": "Czechia",
      "channelUsername": "Apify",
      "channelAvatarUrl": "https://yt3.googleusercontent.com/mcMDz5bXyewUKn5L1RQu8_dYHq3PTdc-AfL4rWUwmYwJr37WikQCE7Ek9M38yucDNh1vyvJTcw=s160-c-k-c0x00ffffff-no-rj",
      "channelBannerUrl": "https://yt3.googleusercontent.com/y6R2IxD_CkgaHgkSEpqaU6Pe1U4O2QtP2XOK47jEszZTqH5LTuXzadO704MsQMLOXvLannhLCw=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
      "channelTotalVideos": 169,
      "channelTotalViews": 660763,
      "numberOfSubscribers": 8390,
      "isChannelVerified": false,
      "channelName": "Apify",
      "channelUrl": "https://www.youtube.com/channel/UCTgwcoeGGKmZ3zzCXN2qo_A",
      "channelId": "UCTgwcoeGGKmZ3zzCXN2qo_A",
      "inputChannelUrl": "https://www.youtube.com/@Apify",
      "isAgeRestricted": false
    },
```

### ▶️ Want to try other YouTube APIs and scrapers?

If you want to extract specific YouTube data, you can use one of these specialized scrapers:

- ▶️ [YouTube Scraper](https://apify.com/streamers/youtube-scraper)
- 💬 [YouTube Comments Scraper](https://apify.com/streamers/youtube-comments-scraper)
- ▶️ [YouTube Shorts Scraper](https://apify.com/streamers/youtube-shorts-scraper)
- 📽️ [YouTube Video Scraper by Hashtag](https://apify.com/streamers/youtube-video-scraper-by-hashtag)

If you need to download scraped YouTube videos, you can use [YouTube Video Downloader](https://apify.com/pocesar/download-youtube-video).

You can also combine YouTube data with that from other social networks. Try:

- [TikTok scrapers](https://apify.com/clockworks)
- [Instagram scrapers](https://apify.com/store/categories?search=instagram\&managedBy=APIFY)
- [Facebook scrapers](https://apify.com/store/categories?search=facebook\&managedBy=APIFY)
- Or any of our [social media scrapers](https://apify.com/store?category=SOCIAL_MEDIA)

Furthermore, you can use the power of AI agents to do multiple tasks at one. For example, our [Comments Analyzer Agent](https://apify.com/apify/comments-analyzer-agent) can perform sentiment analysis of YouTube videos, or you could try our [Influencer Discovery Agent](https://apify.com/apify/influencer-discovery-agent) for lead generation on TikTok videos.

### Integrating YouTube Shorts Scraper with other apps

YouTube Scraper can be connected with almost any cloud service or web app thanks to [integrations](https://apify.com/integrations) on the Apify platform. These include [Make](https://docs.apify.com/platform/integrations/make), [Zapier](https://docs.apify.com/platform/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive), and [plenty more](https://docs.apify.com/platform/integrations).

Alternatively, you can use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to carry out an action whenever an event occurs, e.g. get a notification whenever YouTube Scraper successfully finishes a run, or initiate a new process, like ordering your data.

### Error items

When the scraper cannot retrieve data for a given input — for example a channel does not exist or is age-restricted — it pushes an **error item** to the dataset instead of silently skipping it. Normal output items are never affected; you can tell them apart by the presence of an `error` field.

#### Error item structure

```json
{
    "url": "https://www.youtube.com/@somechannel",
    "input": "somechannel",
    "error": "CHANNEL_DOES_NOT_EXIST",
    "note": "Channel does not exist"
}
```

#### Error codes reference

| `error`                      | Meaning                                                             |
| ---------------------------- | ------------------------------------------------------------------- |
| `CHANNEL_DOES_NOT_EXIST`     | Channel URL points to a channel that does not exist                 |
| `NOT_FOUND`                  | Page was not found                                                  |
| `VIDEO_UNAVAILABLE`          | Video is not available (deleted, region-blocked, etc.)              |
| `AGE_RESTRICTED`             | Channel is age-restricted and cannot be accessed without login      |
| `CHANNEL_HAS_NO_VIDEOS`      | Channel exists but has no uploaded videos                           |
| `CHANNEL_HAS_NO_LIVE_VIDEOS` | Channel exists but has no live videos                               |
| `CHANNEL_HAS_NO_SHORTS`      | Channel exists but has no Shorts                                    |
| `DATE_FILTER_TOO_STRICT`     | Videos exist but none match the active date filter                  |
| `NO_VIDEOS`                  | No videos found on the page                                         |
| `NO_RESULTS`                 | No results collected — check that video-type limits are set above 0 |
| `NO_VALID_START_URLS`        | All provided start URLs were invalid or malformed                   |
| `INVALID_INPUT`              | Actor failed due to bad configuration (run is also terminated)      |
| `NO_COMMENTS`                | No comments found for the video                                     |

***

### ❓FAQ

#### How much does it cost to scrape YouTube channel data?

This scraper uses the pay-per-result pricing model, so your costs can be easily calculated. It will cost you **$0.50 to scrape 1,000 search results, so 0.0005 USD per item**.

Apify’s Free plan provides $5 free usage credits every month. For that amount, you can get up to **10,000 results from YouTube channels for free**. If you need to get more YouTube channels regularly, you should grab an Apify subscription. Each tier gives you discounts on use of Actors, check out how that works for Fast YouTube Channel Scraper on the [pricing tab](https://apify.com/streamers/youtube-channel-scraper/pricing).

#### Is scraping YouTube channels legal?

Our [YouTube scrapers](https://apify.com/store?search=youtube) are ethical and **do not extract any private user data, such as email addresses, gender, or location**. They only extract what the user has chosen to share publicly. However, you should be aware that your **results could contain personal data.** You should not scrape personal data unless you have a legitimate reason to do so.

If you're unsure whether your reason is legitimate, consult your lawyers. You can also read our blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) and [ethical scraping](https://blog.apify.com/what-is-ethical-web-scraping-and-how-do-you-do-it/).

#### Do I need proxies to scrape YouTube channels?

If you run the scraper on the Apify platform, for successful YouTube scraping you will need [residential proxies](https://apify.com/proxy?pricing=residential-ip#pricing) which are included in Apify's **monthly Starter plan ($29)**. For more details about how our pricing works, platform credits, proxies, and usage, see the [platform pricing page](https://apify.com/pricing/actors).

#### Can I use Fast YouTube Channel Scraper with the API?

Yes. You can do so using Apify API which will enable you to manage, schedule, and run any Apify Actors, including this one. The API also lets you access any datasets, monitor Actor performance, fetch results, create and update versions, and more. To access the API using Node.js, use the `apify-client` [NPM package](https://apify.com/streamers/youtube-channel-scraper/api/javascript). To access the API using Python for scraping YouTube channels, use the `apify-client` [PyPi package](https://apify.com/streamers/youtube-channel-scraper/api/python).

Check out the [Apify API reference](https://docs.apify.com/api/v2) docs for full details or click on the [API tab](https://apify.com/streamers/youtube-channel-scraper/api) for code examples.

#### Can I use YouTube Scraper through an MCP Server?

With Apify API, you can use almost any Actor in conjunction with an MCP server. You can connect to the MCP server using clients like ClaudeDesktop and LibreChat, or even build your own. Read all about how you can [set up Apify Actors with MCP](https://blog.apify.com/how-to-use-mcp/).

For YouTube Scraper, go to the [MCP tab](https://apify.com/streamers/youtube-channel-scraper/api/mcp) and then go through the following steps:

1. Start a Server-Sent Events (SSE) session to receive a `sessionId`
2. Send API messages using that `sessionId` to trigger the scraper
3. The message starts the Amazon ASINs Scraper with the provided input
4. The response should be: `Accepted`

#### How do I scrape comments and likes?

You can get like and comment counts for each video by using the [YouTube Scraper](https://apify.com/streamers/youtube-scraper). You can also scrape comments of a video with [YouTube Comments Scraper](https://apify.com/streamers/youtube-comments-scraper).

#### Your feedback

We’re always working on improving the performance of our Actors. So if you’ve got any technical feedback for Fast YouTube Channel Scraper or simply found a bug, please create an issue on the Actor’s [Issues tab](https://apify.com/streamers/youtube-channel-scraper/issues/open).

# Actor input Schema

## `startUrls` (type: `array`):

Enter a link to a <a href='https://www.youtube.com/c/Apify' target='_blank' rel='noopener'>channel</a>. You can also import a CSV file or Google Sheet with a list of URLs.<br>

## `maxResults` (type: `integer`):

Limit the number of regular videos (not streams, not shorts) you want to get from one channel. If you use several urls on the input you will get this number for each channel.

## `maxResultsShorts` (type: `integer`):

Limit the number of Shorts videos you want to get from the channel.

## `maxResultStreams` (type: `integer`):

Limit the number of Stream videos you want to get from the channel.

## `oldestPostDate` (type: `string`):

Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting <code>1 day</code> will get you only today's posts, <code>2 days</code> - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to NEWEST

## `sortVideosBy` (type: `string`):

Maps to the sorting buttons on the top of the channel's 'Videos', 'Shorts' and 'Live' pages.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.youtube.com/@TechReviewer"
    }
  ],
  "maxResults": 10,
  "maxResultsShorts": 5,
  "maxResultStreams": 0,
  "oldestPostDate": "2024-01-01",
  "sortVideosBy": "NEWEST"
}
```

# Actor output Schema

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

Dataset containing scraped YouTube channel information

# 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 = {
    "startUrls": [
        {
            "url": "https://www.youtube.com/@Apify"
        }
    ],
    "maxResults": 10,
    "maxResultsShorts": 0,
    "maxResultStreams": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("streamers/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 = {
    "startUrls": [{ "url": "https://www.youtube.com/@Apify" }],
    "maxResults": 10,
    "maxResultsShorts": 0,
    "maxResultStreams": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("streamers/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 '{
  "startUrls": [
    {
      "url": "https://www.youtube.com/@Apify"
    }
  ],
  "maxResults": 10,
  "maxResultsShorts": 0,
  "maxResultStreams": 0
}' |
apify call streamers/youtube-channel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,streamers/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/67Q6fmd8iedTVcCwY/builds/nVQOVzWPiGjjKgdRx/openapi.json
