# Youtube User Channel Scraper (`solid-scraper/youtube-user-channel-scraper`) Actor

🔍 Scrape YouTube data fast with Channel Scraper! Get key channel info, audiences, and insights for research, SEO, and competitor analysis. 🚀 Perfect for marketers, agencies, and creators—streamline workflows and find opportunities instantly! ✅

- **URL**: https://apify.com/solid-scraper/youtube-user-channel-scraper.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (community)
- **Categories:** SEO tools, Social media, Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

### Youtube User Channel Scraper 🔍

**Youtube User Channel Scraper** helps you scrape YouTube channel details like subscribers, video count, view count, join date, socials/links, and more. If you’re looking for a **YouTube channel scraper** or **YouTube user scraper** for **channel analytics**, this tool turns public web data into structured results—perfect for marketers, researchers, and data analysts who need faster **YouTube channel data extraction** at scale.

Whether you’re building prospect lists, researching creators, or enriching datasets for reporting, this **YouTube channel scraping tool** saves you hours of manual work.

***

### Why choose Youtube User Channel Scraper?

| Feature | Benefit |
|---|---|
| ✅ **Scrapes full channel metadata** | Extracts channelId, title, description, stats (views/videos/subscribers), join date, country, and more in one run |
| ✅ **Input flexibility (Channel IDs or URLs)** | Lets you provide **ids** (comma-separated) and/or **start\_urls** to scrape multiple channels |
| ✅ **Built-in resilience with retries + fallbacks** | Includes retries for more reliable scraping when requests fail temporarily |
| ✅ **Proxy support for reliability** | Uses built-in proxy support to improve consistency across large batches |
| ✅ **Structured JSON output** | Produces clear, typed fields (counts as numbers, booleans for verified/email indicators) for easy export |
| ✅ **Designed for scale** | Processes URLs in sequence so you can run batch scrapes with predictable behavior |

***

### Key features

- 🌐 **YouTube channel URL scraper support:** Accepts `start_urls` containing YouTube channel URLs (and normalizes them for scraping)
- 🆔 **Channel ID ingestion:** Uses the `ids` input as a comma-separated list and converts each ID into a channel URL to scrape
- 📊 **Channel analytics scraper output:** Extracts `subscriberCount`, `videoCount`, and `viewCount` as numeric values
- 🧾 **Complete metadata extraction:** Captures `title`, `description`, `joinDate`, `country`, `avatar`, and `banner`
- 🔒 **Verified and email-status indicators:** Returns `verified` and `hasbusinessEmail` (business email availability flag)
- 🔗 **Socials/links capture:** Extracts `links` (title + link) from the channel data when available
- 💾 **Clean, structured dataset records:** Outputs a consistent JSON object per channel for easy downstream processing
- 🔄 **Resilient fetching:** Includes up to 3 retries per channel request with delays between attempts

***

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "ids": "UCyBD3P9YOFWNIMTuDzqeObg",
  "start_urls": [
    { "url": "https://www.youtube.com/@BBCNews" }
  ]
}
```

#### Input Fields

| Field | Required | Description |
|---|---:|---|
| `ids` | ❌ | A comma-separated list of YouTube Channel IDs (for example: `UCyBD3P9YOFWNIMTuDzqeObg`). The actor converts each ID into a channel URL to scrape. |
| `start_urls` | ❌ | A list of YouTube channel URLs to scrape (for example: `https://www.youtube.com/@BBCNews`). The actor processes these first in the order you provide them. |

***

### Output

The actor saves each scraped channel’s data as a JSON object into the Apify dataset (one record per channel).

Example output record:

```json
{
  "channelId": "UCyBD3P9YOFWNIMTuDzqeObg",
  "avatar": "https://example.com/avatar.jpg",
  "banner": "https://example.com/banner.jpg",
  "title": "Channel title",
  "verified": 1,
  "hasbusinessEmail": 0,
  "joinDate": "Jan 1, 2020",
  "country": "United States",
  "viewCount": 1234567,
  "videoCount": 89,
  "subscriberCount": 456789,
  "description": "Channel description",
  "links": [
    {
      "title": "Website",
      "link": "example.com"
    }
  ],
  "indexUrl": "http://www.youtube.com/channel/UCyBD3P9YOFWNIMTuDzqeObg",
  "channelUrl": "https://www.youtube.com/channel/UCyBD3P9YOFWNIMTuDzqeObg"
}
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `channelId` | string | The scraped channel ID |
| `avatar` | string | URL to the channel avatar image |
| `banner` | string | URL to the channel banner image |
| `title` | string | Channel title |
| `verified` | number | `1` if the channel appears verified, otherwise `0` |
| `hasbusinessEmail` | number | `1` if business email is available, otherwise `0` |
| `joinDate` | string | null | Channel join date (cleaned text) |
| `country` | string | null | Country associated with the channel (when available) |
| `viewCount` | number | Total view count (parsed into an integer) |
| `videoCount` | number | Total number of videos (parsed into an integer) |
| `subscriberCount` | number | Subscriber count (parsed into an integer) |
| `description` | string | null | Channel description (and fallback description if needed) |
| `links` | array | null | Array of extracted channel links (each has `title` and `link`) |
| `indexUrl` | string | null | A normalized “index URL” form derived from channel data |
| `channelUrl` | string | null | The channel URL derived from channel ID / metadata |

***

### How to use Youtube User Channel Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and open the **Actors** section.

2. **Find Youtube User Channel Scraper**\
   Search for **Youtube User Channel Scraper** and open the actor page.

3. **Go to the INPUT tab**\
   Enter your scrape targets using the built-in input form.

4. **Add your Channel IDs or URLs**\
   Use either (or both):\
   • `ids` as a comma-separated list of channel IDs\
   • `start_urls` as a list of channel URLs (processed first, in UI order)

5. **(Optional) Use proxy support automatically**\
   This actor uses built-in proxy support for reliability; you don’t configure proxy settings in the input.

6. **Start the run**\
   Click **Run**. Watch the logs to see each channel being fetched and whether metadata extraction succeeds.

7. **Open the OUTPUT dataset**\
   After completion, open the dataset and export the results as JSON/CSV from the dataset viewer.

No coding required—get accurate **YouTube user profile scraper**-style channel data in minutes.

***

### Advanced features & SEO optimization

- 🔄 **Robust retry logic for reliability:** Uses retries (up to 3 attempts) with delays when requests fail, which helps stabilize bulk **YouTube channel email scraper**-adjacent enrichment workflows that depend on consistent retrieval.
- 🧭 **Input normalization for URLs:** Normalizes common YouTube channel URL variations so your **YouTube channel URL scraper** inputs work more smoothly.
- 📥 **Returns structured channel stats for analytics:** Outputs subscriber/video/view counts as integers for clean **YouTube channel analytics scraper** reporting.
- 🧩 **Resilient metadata extraction paths:** Extracts metadata from multiple internal page data locations (so fields like `description`, `banner`, and `links` have better odds of being captured).
- 📊 **Designed for “scrape YouTube channel data” pipelines:** Friendly for marketers and researchers who want to plug results into spreadsheets, BI tools, or CRM enrichment.

***

### Best use cases

- 📈 **Lead generation enrichment:** Build outreach lists by collecting structured creator/channel metrics and profile details from public sources.
- 🧠 **Creator research & benchmarking:** Compare multiple channels using consistent fields like `subscriberCount`, `viewCount`, and `videoCount`.
- 🗺️ **Geographic audience analysis:** Use `country` and join date to segment channels for studies and targeting.
- 🧾 **Data analyst reporting:** Export channel metadata for dashboards without manual collection.
- 🤝 **Partnership discovery:** Identify channels with `verified` status and business email availability flags (`hasbusinessEmail`) to prioritize outreach.
- 🧑‍💻 **Developer-friendly datasets:** Turn **YouTube channel scraper API**-style outputs into automation workflows that expect stable JSON fields.
- 🔍 **Channel metadata cleanup:** Standardize results across multiple **YouTube user channel scraper** inputs (IDs and URLs) into one uniform dataset.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `ids`: comma-separated YouTube Channel IDs
  - ✅ `start_urls`: array of YouTube channel URLs

- **Proxy Support**
  - ✅ Built-in proxy support is used automatically to improve scraping reliability

- **Retry Mechanism**
  - ✅ Up to **3 attempts** per channel fetch when failures occur

- **Dataset Structure**
  - ✅ One JSON record per successfully processed channel, pushed via `Actor.push_data` with `charged_event_name="result"` in the code

- **Rate Limits & Performance**
  - ⚠️ Processing time depends on network conditions and target page responsiveness

- **Limitations**
  - ❌ If `ytInitialData` content cannot be extracted from a channel page, the actor logs the failure and skips pushing metadata for that channel

***

### FAQ

#### ✅ What does Youtube User Channel Scraper return?

It returns a JSON object per channel with fields such as `channelId`, `title`, `description`, `joinDate`, `country`, `subscriberCount`, `videoCount`, `viewCount`, `links`, `verified`, and `hasbusinessEmail`.

#### ✅ Can I provide YouTube channel URLs instead of channel IDs?

Yes. You can use `start_urls` with YouTube channel URLs. The actor also supports channel IDs via the `ids` field.

#### ❓ In what order are channels processed?

The actor processes `start_urls` first (in the same order you provide them), then processes `ids` second.

#### ❌ Does the actor require any special login?

No login credentials are part of the actor input. It scrapes publicly available page data.

#### 💻 Can I integrate the output into my pipeline?

Yes. The dataset output is structured JSON, making it suitable for exporting to JSON/CSV and feeding into analytics, ETL, or enrichment workflows.

#### 🛡️ How reliable is it for batch jobs?

It includes retries (up to 3 attempts) and uses built-in proxy support to improve reliability when scraping multiple channels.

#### ⚖️ Is this tool legal to use?

It collects information from **publicly accessible sources**. Compliance with laws (for example GDPR/CCPA where applicable) and platform terms is your responsibility.

#### 🔎 Does it scrape emails specifically?

This actor returns a business email availability indicator as `hasbusinessEmail` (a flag). It does not output an email field in the dataset.

***

### Support & feature requests

Want to improve **Youtube User Channel Scraper** for your YouTube channel data extraction workflow? 💡

- 💡 **Feature Requests:** Tell us what you want next—e.g., more fields, batch export enhancements, or additional normalization for URL inputs.
- 📧 **Contact:** Email <dataforleads@gmail.com>.

Your feedback directly shapes future improvements to the actor and its usefulness for **YouTube channel scraper** and **YouTube user scraper** use cases.

***

### *Final thoughts on Youtube User Channel Scraper* 🎯

*If you need a clean, structured way to scrape YouTube channel data, this is one of the most comprehensive options for YouTube metadata extraction.*\
*Try **Youtube User Channel Scraper** today and scale your channel research faster than manual collection.*

***

### Disclaimer

**This tool accesses publicly accessible sources only.** It does not access private profiles, authenticated data, or password-protected pages.

You are responsible for complying with applicable laws and regulations (including GDPR/CCPA where relevant), as well as platform terms of service and any anti-spam or data usage rules.

For data removal requests, contact <dataforleads@gmail.com>. Please use **Youtube User Channel Scraper** responsibly, ethically, and for legitimate purposes only.

# Actor input Schema

## `ids` (type: `string`):

Comma-separated list of YouTube Channel IDs (e.g. UCyBD3P9YOFWNIMTuDzqeObg)

## `start_urls` (type: `array`):

List of YouTube channel URLs to scrape.

## Actor input object example

```json
{
  "ids": "UCyBD3P9YOFWNIMTuDzqeObg",
  "start_urls": [
    {
      "url": "https://www.youtube.com/@BBCNews"
    }
  ]
}
```

# 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 = {
    "ids": "UCyBD3P9YOFWNIMTuDzqeObg",
    "start_urls": [
        {
            "url": "https://www.youtube.com/@BBCNews"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/youtube-user-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 = {
    "ids": "UCyBD3P9YOFWNIMTuDzqeObg",
    "start_urls": [{ "url": "https://www.youtube.com/@BBCNews" }],
}

# Run the Actor and wait for it to finish
run = client.actor("solid-scraper/youtube-user-channel-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "ids": "UCyBD3P9YOFWNIMTuDzqeObg",
  "start_urls": [
    {
      "url": "https://www.youtube.com/@BBCNews"
    }
  ]
}' |
apify call solid-scraper/youtube-user-channel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solid-scraper/youtube-user-channel-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gvtbhR2lvozx85BRW/builds/DgJkUA4I7Uf5cf1St/openapi.json
