# Youtube Profile Scraper (`solid-scraper/youtube-profile-scraper`) Actor

🔍 YouTube Profile Scraper extracts creators and channel insights fast—emails, links, and key data for lead gen, outreach, and research. 🚀 Save time, target smarter, and grow your audience with precision insights. 📈

- **URL**: https://apify.com/solid-scraper/youtube-profile-scraper.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 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 Profile Scraper 🔍

**Youtube Profile Scraper** is a focused tool for **scraping YouTube channel (profile) details**—including subscribers, views, join date, and social links—from publicly available channel pages. Whether you're a marketer, researcher, or data analyst looking to **scrape YouTube profiles** or build a **YouTube channel data scraper** workflow, this actor helps you turn channel metadata into structured results at scale—saving you hours of manual work.

***

### Why choose Youtube Profile Scraper?

| Feature | Benefit |
| --- | --- |
| ✅ **All-in-one YouTube profile data extraction** | Extract channel details like subscribers, videos count, views, created date, and social links in one run |
| ✅ **Reliability with retries** | Includes retries (3 attempts) with short delays when a scrape fails |
| ✅ **Proxy support for resilient scraping** | Supports proxy configuration to help with reliable automated requests |
| ✅ **Structured dataset output** | Saves results to the **YouTube Channel Data** dataset with consistent, table-ready fields |
| ✅ **Scales across multiple channels** | Accepts a list of YouTube channel URLs so you can process batches efficiently |
| ✅ **Automation-friendly output** | Designed to plug into downstream pipelines as **structured JSON** (easy to export to CSV/JSON from the dataset) |

***

### Key features

- 📊 **Channel metadata extraction**: Pulls core channel metrics like `subscribers`, `videos_count`, and `views`.
- 🗓️ **Join date parsing**: Converts the channel’s “Joined …” date into `created_date` (ISO timestamp format).
- 🔗 **Social and external links collection**: Captures channel external links listed on the about page.
- 🧾 **Comprehensive profile fields**: Includes `name`, `handle`, `Description`, `profile_image`, `banner_img`, and more.
- 💾 **Immediate structured saving**: Each scraped channel result is pushed to the dataset as soon as it’s ready.
- 🔄 **Resilient retries**: Retries failed channel scrapes up to **3 times** for better overall success rate.
- 🛡️ **Built-in proxy support**: Lets you run with proxy configuration for more stable batch scraping.
- 🧠 **Consistent identifiers**: Produces stable fields like `id` / `identifier` and `handle_md5` for easier deduplication.

***

### Input

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

```json
{
  "startUrls": [
    {
      "url": "https://www.youtube.com/@MrBeast/about"
    }
  ]
}
```

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `startUrls` | ✅ | A list of YouTube channel URLs to scrape. Use full “about” URLs like `https://www.youtube.com/@MrBeast/about` (the actor expects channel pages and uses that as the input source). |

***

### Output

The actor saves each scraped channel’s data in JSON format into the **YouTube Channel Data** dataset.

#### Example output

```json
{
  "Description": "Channel description text here",
  "Details": {
    "location": "Country text here"
  },
  "Links": [
    "https://example.com",
    "https://example.org"
  ],
  "banner_img": "https://example.com/banner.jpg",
  "collaborations": null,
  "created_date": "2012-02-19T00:00:00.000Z",
  "featured_channels": null,
  "featured_video": "https://www.youtube.com/watch?v=VIDEO_ID",
  "handle": "@CHANNEL_HANDLE",
  "handle_md5": "d41d8cd98f00b204e9800998ecf8427e",
  "has_podcast": false,
  "id": "CHANNEL_ID_HERE",
  "identifier": "CHANNEL_ID_HERE",
  "input": {
    "url": "https://www.youtube.com/@MrBeast/about"
  },
  "name": "Channel name here",
  "profile_image": "https://example.com/avatar.jpg",
  "subscribers": 1234000,
  "timestamp": "2026-06-02T12:34:56.789Z",
  "top_videos": [],
  "url": "https://www.youtube.com/@channelhandle",
  "videos_count": 456,
  "views": 78900000
}
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `url` | string | The normalized canonical channel URL (lowercased). |
| `handle` | string | The channel handle (includes the `@` prefix as parsed from the page). |
| `name` | string | The channel name. |
| `subscribers` | number | Subscriber count parsed into a numeric value. |
| `videos_count` | number | Total videos count parsed into a numeric value. |
| `views` | number | Total views count parsed into a numeric value. |
| `created_date` | string | null | Channel “Joined …” date converted to ISO timestamp format (e.g. `YYYY-MM-DDT00:00:00.000Z`). |
| `Description` | string | The channel description text from the about page. |
| `identifier` | string | The channel identifier (stored as parsed `channelId`). |
| `id` | string | Same value as `identifier` (`channelId`). |
| `handle_md5` | string | MD5 hash of the `handle`, useful for deduplication. |
| `Details` | object | Contains additional channel details. Currently includes `location`. |
| `Links` | array | List of external links found on the channel about page. |
| `profile_image` | string | URL to the channel avatar image. |
| `banner_img` | string | URL to the channel banner image. |
| `timestamp` | string | UTC timestamp of when the scrape result was produced. |

> Note: Failure handling in this actor logs errors and retries; when a channel scrape succeeds, the actor pushes the result object shown above to the dataset. (There is no `error_message` field included in the pushed result schema.)

***

### How to use Youtube Profile Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the Actors area.

2. **Find this actor**\
   Search for **Youtube Profile Scraper** and open the actor details page.

3. **Go to the INPUT panel**\
   Paste your input JSON using the built-in form or upload an `input.json` file.

4. **Provide `startUrls`**\
   Add one or more YouTube channel URLs to the `startUrls` array (for example, `https://www.youtube.com/@MrBeast/about`). This is the list the **YouTube channel scraper tool** will process.

5. **(Optional) Configure proxies**\
   If you’re running larger batches or want more stable requests, use the proxy configuration options in the actor UI (the actor supports proxy configuration).

6. **Click Run**\
   Start the run. Watch the logs for progress updates and retry messages when a channel scrape needs another attempt.

7. **Open the OUTPUT dataset**\
   When the run completes, open the **YouTube Channel Data** dataset to view results in a table.

8. **Export your data**\
   Export to JSON/CSV from the dataset view to use in your CRM, analytics workflows, or a **YouTube channel data scraper** pipeline.

No coding required—get accurate **YouTube profile scraper** results in minutes. 🚀

***

### Advanced features & SEO optimization

- 🔍 **Engineered for YouTube profile scraping**: Specifically built for **scrape YouTube profiles** and return structured **YouTube profile data extraction** fields.
- 🔄 **Resilience at runtime**: Includes retries (3 attempts) and short delays for better success across batches.
- 🌐 **URL-based automation**: Works directly from provided channel URLs so you can run repeatable **automated YouTube scraping** workflows.
- 🧩 **Cleaner identifiers for deduping**: Uses `identifier`/`id` and `handle_md5` to help you merge data across runs.
- 🧾 **Structured output ready for analysis**: Returns consistently shaped JSON objects ideal for analysts building **YouTube metadata scraper** datasets.

***

### Best use cases

- 📈 **Lead generation teams**: Build a structured list of YouTube creators with channel metrics and links for faster outreach targeting.
- 🎓 **Market researchers**: Compare niches by subscriber counts, views, and join dates using a repeatable **YouTube channel scraper API** style workflow.
- ✉️ **Growth marketers**: Enrich campaign research with clean channel profile data to prioritize collaborations and sponsorships.
- 🧠 **Data analysts**: Load results into spreadsheets/warehouses to study channel growth patterns and content reach over time.
- 🛠️ **CRM and data pipeline builders**: Feed scraped channel metadata into automated pipelines as structured JSON for downstream processing.
- 🧾 **Creator operations & partnerships**: Quickly audit channel basics (name, handle, banner, avatar, external links) when shortlisting partners.
- 💻 **YouTube channel URL crawler use**: Turn a curated list of channel URLs into usable, table-ready data for review and export.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `startUrls` as an array of objects containing `url` strings for YouTube channel pages

- **Proxy Support**
  - ✅ Supports proxy configuration (including a proxy workflow when enabled in input)

- **Retry Mechanism**
  - ✅ Up to **3 retries** per start URL when scraping returns no result

- **Dataset Structure**
  - ✅ Writes results to the **YouTube Channel Data** dataset with fields including: `url`, `handle`, `name`, `subscribers`, `videos_count`, `views`, `created_date`, `Description`, `identifier`, `id`, `handle_md5`

- **Rate Limits & Performance**
  - ⚠️ Performance varies depending on channel page accessibility and request conditions; retries help resilience during temporary failures

- **Limitations**
  - ❌ If the actor cannot fetch or parse the necessary page data, a channel may fail after retries
  - ❌ Some fields may be empty or null depending on what is available on the channel page

***

### FAQ

#### Can I scrape multiple YouTube channels in one run?

✅ Yes. Provide multiple entries in `startUrls`, and the actor will iterate through them, pushing each successful result into the **YouTube Channel Data** dataset.

#### What kind of YouTube profile data does Youtube Profile Scraper extract?

✅ It extracts channel-level details such as `name`, `handle`, `subscribers`, `videos_count`, `views`, `created_date`, `Description`, and social/external `Links`, plus assets like `profile_image` and `banner_img`.

#### Do I need to provide “about” URLs specifically?

✅ The example input uses channel “about” URLs (like `https://www.youtube.com/@MrBeast/about`). The actor’s scraping logic is built around fetching that “about” page view for channel details.

#### Does it support proxies for scraping reliability?

✅ Yes. You can configure proxies in the input, and the actor is designed to run with proxy support for more stable automated scraping.

#### Is the output stored automatically, or do I have to collect it manually?

✅ The actor pushes each successful result to the dataset as the run proceeds, so you can inspect and export the results from the **YouTube Channel Data** dataset afterward.

#### Can I use this for data analysis and exporting?

✅ Yes. The dataset is structured for table views and can be exported (for example to JSON/CSV from the dataset interface), making it suitable for analysis workflows.

#### Do you provide an API or code-first integration?

✅ This is an Apify actor, so it can be run via Apify tooling/integration patterns. The actor itself is designed around structured JSON results saved into the dataset—ideal for pipeline automation.

#### Is this tool legal to use for collecting publicly available YouTube data?

✅ Youtube Profile Scraper is intended to collect data from publicly available sources. It is still your responsibility to comply with applicable laws and the platform’s terms regarding scraping and reuse.

***

### Support & feature requests

Want to improve Youtube Profile Scraper for your workflow? 🚀 Share feedback and feature requests—especially if you’re building a **YouTube channel scraper tool** for larger datasets.

- 💡 **Feature Requests**: Ideas like adding more output fields, enriching link handling, or improving export friendliness are welcome.
- 📧 **Contact**: Email us at <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for future versions of this **YouTube profile scraper**.

***

### *Youtube Profile Scraper* — final thoughts

If you’re looking for a reliable **Youtube Profile Scraper** that outputs structured **YouTube profile data extraction** results at scale, this actor is built for exactly that—so you can move faster from URLs to usable datasets. 🚀

***

### Disclaimer

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

It’s your responsibility to ensure your usage complies with applicable laws (for example GDPR/CCPA), platform terms, and relevant spam or data-processing regulations.

For data removal requests, contact <dataforleads@gmail.com>. Always use Youtube Profile Scraper responsibly, ethically, and for legitimate purposes.

# Actor input Schema

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

List of YouTube channel URLs to scrape (e.g., https://www.youtube.com/@MrBeast/about).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.youtube.com/@MrBeast/about"
    }
  ]
}
```

# 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/@MrBeast/about"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/youtube-profile-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/@MrBeast/about" }] }

# Run the Actor and wait for it to finish
run = client.actor("solid-scraper/youtube-profile-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 '{
  "startUrls": [
    {
      "url": "https://www.youtube.com/@MrBeast/about"
    }
  ]
}' |
apify call solid-scraper/youtube-profile-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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