# YouTube Channel Info Scraper (`piotrv1001/youtube-channel-info-scraper`) Actor

Get YouTube channel stats and profile data: subscriber count, total views, video count, joined date, country, description, external links, avatar, banner and verified badge. Paste channel URLs, @handles or IDs in bulk and export to JSON, CSV or Excel for influencer research.

- **URL**: https://apify.com/piotrv1001/youtube-channel-info-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Social media, Videos, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 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.

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 Channel Info Scraper: Subscriber Count and Channel Stats

Look up any YouTube channel and get its **subscriber count, total views, video count, joined date, country, description, external links, avatar, banner and verified badge** as clean JSON, CSV or Excel. The **YouTube Channel Info Scraper** takes channel URLs, @handles or channel IDs in bulk and returns one row per channel. Use it as a YouTube channel lookup for influencer research, as a bulk YouTube subscriber count checker, or as a simple alternative to a YouTube channel API.

### 🎯 Use Cases

- **Bulk YouTube subscriber count check**: paste hundreds of channels and get their subscriber, view and video counts in one table.
- **YouTube channel stats tracking**: schedule a daily run and build your own history of subscribers and total views for your channel and your competitors.
- **Influencer research and vetting**: check country, joined date, verified badge, links and keywords before you contact a creator.
- **YouTube channel ID finder**: turn @handles and old `/user/` or `/c/` URLs into permanent channel IDs (UC…) and RSS feed URLs.
- **Creator databases and CRMs**: enrich a list of channels with descriptions, social links, avatars and banners.

### ✨ Features

- **Channel statistics**: subscriber count, exact total view count, video count and joined date.
- **Profile data**: title, @handle, channel ID, description, country, keywords, family-safe flag.
- **External links**: every link from the channel's About section (Instagram, TikTok, X, website…) as a clean URL.
- **Images**: avatar (900 px) and banner (2560 px) URLs.
- **Badges**: verified checkmark and official artist channel flag.
- **Business email flag**: `hasBusinessEmail` tells you whether the channel lists a business email.
- **Any channel format**: `youtube.com/@handle`, `/channel/UC…`, `/c/…`, `/user/…`, a bare `@handle` or a channel ID.
- **No duplicates**: a channel entered as a @handle and as an ID is looked up and charged once.

### 🛠️ How It Works

1. **Paste channels**: URLs, @handles or channel IDs, one per line.
2. **Set Max channels** if you want to stop early: the default is 50.
3. **Run the scraper** and download the table, or pull it through the API.

### ⚙️ Input

| Field            | What it does                                                 |
| ---------------- | ------------------------------------------------------------ |
| **Channels**     | Channel URLs, @handles or channel IDs (UC…), one per line.   |
| **Max channels** | Stop after this many channels. Default 50.                   |

```json
{
    "channels": [
        "https://www.youtube.com/@MrBeast",
        "@markrober",
        "UC8butISFwT-Wl7EV0hUK0BQ",
        "https://www.youtube.com/user/PewDiePie"
    ],
    "maxItems": 100
}
```

### 💰 Pricing

Pay only for the channels you get. No monthly rental.

| Event           | Price                                  | What you get                                    |
| --------------- | -------------------------------------- | ----------------------------------------------- |
| **Channel**     | $0.002 per channel ($2.00 per 1,000)   | One channel profile with all fields below       |
| **Actor start** | $0.00005 per run                       | Charged once when the run starts.               |

Examples: 3 channels = $0.006 · 100 channels = $0.20 · 1,000 channels = $2.00. Channels that don't exist are listed in the run status and not charged.

### 📊 Sample Output Data

```json
{
    "channelId": "UCY1kMZp36IQSyNx_9h4mpCg",
    "url": "https://www.youtube.com/channel/UCY1kMZp36IQSyNx_9h4mpCg",
    "handle": "@MarkRober",
    "handleUrl": "https://www.youtube.com/@MarkRober",
    "title": "Mark Rober",
    "description": "Former NASA engineer. Current CrunchLabs founder and friend of science…",
    "subscriberCount": 84300000,
    "subscriberCountText": "84.3M subscribers",
    "viewCount": 19535634751,
    "videoCount": 273,
    "joinedDate": "2011-10-19",
    "country": "United States",
    "links": [
        { "title": "CrunchLabs!!", "url": "https://crunchlabs.com" },
        { "title": "Instagram", "url": "https://www.instagram.com/markrober" },
        { "title": "TikTok", "url": "https://www.tiktok.com/@markrober" }
    ],
    "hasBusinessEmail": true,
    "isVerified": true,
    "isVerifiedArtist": false,
    "isFamilySafe": true,
    "keywords": ["DIY", "Creative", "Design", "Hack", "mark rober", "nasa"],
    "avatarUrl": "https://yt3.googleusercontent.com/ytc/AIdro_ksXY2REjZ6gYKSgnWT5jC_zT9mX900vyFtVinR8KbHww=s900-c-k-c0x00ffffff-no-rj",
    "bannerUrl": "https://yt3.googleusercontent.com/MpHjfKLT09ZFt2efg6wW9r6qiKJpPhP8TWV15NJXD6ZYsekvY2dFlTR11ydf-psl7AjX4M_ikw=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
    "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCY1kMZp36IQSyNx_9h4mpCg",
    "scrapedAt": "2026-10-21T17:24:04.713Z"
}
```

`viewCount` and `videoCount` are exact. `subscriberCount` is the rounded number YouTube shows (84.3M), and `subscriberCountText` keeps the original text. `rssUrl` is the channel's public feed of new uploads.

### 🔁 Schedule and Integrate

To track YouTube channel stats, run it **once a day** with the same channel list: each run is a dated snapshot of subscribers, views and video counts. Set it up in Apify **Schedules**. Send the results to **Google Sheets**, **Zapier**, **Make**, **n8n** or a webhook with Apify **integrations**.

### 🤖 Use with AI Agents (MCP)

This Actor works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (`https://mcp.apify.com`). An agent can call it with:

```json
{ "channels": ["@MrBeast", "@markrober"] }
```

### ❓ FAQ

**Does YouTube have an official API for channel stats?** Yes, the YouTube Data API returns channel statistics, but it needs a Google Cloud project, an API key and a daily quota. It doesn't return the links from the channel's About section. This Actor needs no key and returns all of them in one row per channel.

**How do I check a YouTube subscriber count for many channels at once?** Paste the channels (URLs, @handles or IDs) into **Channels** and run. You get one row per channel with `subscriberCount`, `viewCount` and `videoCount`.

**How do I find a YouTube channel ID?** Enter the @handle or channel URL. `channelId` (UC…) is the permanent ID, and it stays the same when the channel changes its handle.

**Can it get the channel's business email?** No. YouTube shows the email only to signed-in users after a captcha. `hasBusinessEmail` tells you whether the channel lists one, so you know which creators to contact through the About page.

**Do I need a YouTube account?** No.

**Why is `country` empty?** The channel didn't set a country. Some official artist channels don't show one.

### 🔗 Related Scrapers

- [YouTube Channel Videos Scraper](https://apify.com/piotrv1001/youtube-channel-videos-scraper): every video, Short or stream of the channels you look up here.
- [YouTube Shorts Scraper](https://apify.com/piotrv1001/youtube-shorts-scraper): a channel's Shorts with exact views, likes and publish dates.
- [YouTube Video Details Scraper](https://apify.com/piotrv1001/youtube-video-details-scraper): views, likes, tags, chapters and duration for any list of videos.
- [YouTube Search Scraper](https://apify.com/piotrv1001/youtube-search-scraper): find channels and videos by keyword.
- [YouTube Comments Scraper](https://apify.com/piotrv1001/youtube-comments-scraper): comments and replies from any video.

# Actor input Schema

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

Channel URLs, @handles or channel IDs (UC…), one per line.

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

Stop after this many channels.

## Actor input object example

```json
{
  "channels": [
    "https://www.youtube.com/@MrBeast",
    "https://www.youtube.com/@markrober",
    "https://www.youtube.com/@freecodecamp"
  ],
  "maxItems": 50
}
```

# Actor output Schema

## `results` (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": [
        "https://www.youtube.com/@MrBeast",
        "https://www.youtube.com/@markrober",
        "https://www.youtube.com/@freecodecamp"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/youtube-channel-info-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/@MrBeast",
        "https://www.youtube.com/@markrober",
        "https://www.youtube.com/@freecodecamp",
    ],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/youtube-channel-info-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/@MrBeast",
    "https://www.youtube.com/@markrober",
    "https://www.youtube.com/@freecodecamp"
  ],
  "maxItems": 50
}' |
apify call piotrv1001/youtube-channel-info-scraper --silent --output-dataset

```

## MCP server setup

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