# YouTube Channel Scraper — Creator Emails, Socials & Stats (`cleandata/youtube-creator-leads`) Actor

Find YouTube creators by keyword or look up any channel: subscribers, average views, upload frequency, engagement rate, country, public business emails and Instagram, TikTok, X and website links. Filter before you pay. Influencer marketing leads.

- **URL**: https://apify.com/cleandata/youtube-creator-leads.md
- **Developed by:** [Rodrigo Junqueiro](https://apify.com/cleandata) (community)
- **Categories:** Social media, Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.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.
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?

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 Scraper — Creator Emails, Socials & Stats

Find **YouTube creators** for influencer marketing, sponsorships and outreach. Search channels by keyword or look up any channel, and get one complete row per creator: **subscribers**, **average views of their latest videos**, **upload frequency**, **engagement rate**, **country**, the **business email published in their description** and their **Instagram / TikTok / X / website links**.

**Fast and cheap:** no browser, no login. 150 channels in about 15 seconds. All filters run *before* billing, so you only pay for channels that match.

### What can you use it for?

- **Influencer discovery:** search a niche (*cozy games*, *vegan recipes*, *personal finance*) and get hundreds of creators who make videos about it.
- **Micro-influencer campaigns:** combine *Min subscribers* and *Max subscribers* (for example, 10,000 to 200,000).
- **Real reach, not vanity numbers:** subscribers can be old. Set *Min average views per video* and sort by `engagementRate` to find creators whose audience still watches.
- **Outreach lists:** use *Only channels with a public email* to keep creators who publish a business contact.
- **Market by country:** keep only creators in the countries you sell in.
- **Creator vetting:** check upload frequency, last upload and recent views before signing a deal.

### Sample results

A real run looking up five well-known channels:

| Channel | Subscribers | Avg views (latest videos) | Engagement | Uploads / week | Country |
|---|---|---|---|---|---|
| Marques Brownlee | 21,400,000 | 10,272,912 | 48% | 2.2 | United States |
| Veritasium | 21,400,000 | 4,810,083 | 22.5% | 1.7 | United States |
| NileRed | 11,000,000 | 9,954,180 | 90.5% | 0.2 | Canada |
| Ludwig | 7,090,000 | 981,463 | 13.8% | 11.4 | United States |
| Tom Scott | 6,750,000 | 1,565,007 | 23.2% | 1.1 | — |

Keyword searches work the same way for the thousands of smaller creators in every niche.

### How much does it cost?

You pay per result, with no monthly rental: **$5 per 1,000 channels** ($0.005 each). **Public emails and social links are included at no extra cost.** Channels removed by your filters are never charged. Apify's free plan includes $5 of monthly credit, which covers about 1,000 channels a month. You can also set a maximum cost per run in the run options.

### How to use it

1. Click **Try for free** and sign in to Apify (no credit card needed).
2. Add one or more search keywords, or channels to look up.
3. Optionally filter by subscribers, average views, recent uploads, country or public email.
4. Click **Start**. When the run finishes, download the results as JSON, CSV or Excel, or send them to Google Sheets, your CRM or your own system.

### Input

| Field | Description |
|---|---|
| **Search keywords** | `cozy games`, `vegan recipes`, `tech review`… YouTube's own channel search, extended with YouTube's related searches so one keyword reaches hundreds of channels. |
| **Channels to look up** | Channel URLs, `@handles` or channel ids (`UC…`). |
| **Min / Max subscribers** | Subscriber range (0 = no limit). |
| **Min average views per video** | Skip channels whose latest videos average fewer views. Channels without public uploads are skipped when this is set. |
| **Only channels with a public email** | Skip channels without an email in their description. |
| **Email types** | Keep only channels whose emails are `company` (own or agency domain, like `business@brand.com`), `free provider` (Gmail, Outlook…) and/or `both`. Empty = any. |
| **Uploaded in the last X days** | Skip channels that haven't published recently. |
| **Channel countries** | 2-letter codes such as `US`, `GB`, `DE`, `BR`. Channels that don't list a country are skipped when this is set. |
| **Max channels** | Limit for the whole run. When filters remove many channels, the Actor keeps searching related queries until it reaches this number or runs out of results. |

```json
{
    "searchKeywords": ["cozy games", "farming sim"],
    "minSubscribers": 10000,
    "maxSubscribers": 500000,
    "minAvgViews": 2000,
    "activeWithinDays": 30,
    "countries": ["US", "GB", "CA"],
    "maxResults": 300
}
```

### Output

```json
{
    "channelId": "UCBJycsmduvYEL83R_U4JriQ",
    "title": "Marques Brownlee",
    "handle": "@mkbhd",
    "url": "https://www.youtube.com/@mkbhd",
    "description": "MKBHD: Quality Tech Videos | YouTuber | Geek | Consumer Electronics | Tech Head | Internet Personality! business@MKBHD.com NYC",
    "subscribers": 21400000,
    "totalViews": 5834393156,
    "videoCount": 1862,
    "country": "United States",
    "joinedDate": "2008-03-21",
    "recentVideos": 15,
    "avgViewsRecent": 10272912,
    "uploadsPerWeek": 2.2,
    "lastUploadAt": "2026-10-27T20:14:55.000Z",
    "engagementRate": 48,
    "emails": ["business@mkbhd.com"],
    "companyEmails": ["business@mkbhd.com"],
    "emailType": "company",
    "hasBusinessEmailButton": true,
    "socials": {
        "x": ["https://twitter.com/MKBHD"],
        "instagram": ["https://instagram.com/MKBHD"],
        "youtube": ["https://youtube.com/c/TheStudio"],
        "reddit": ["https://reddit.com/r/MKBHD"],
        "discord": ["https://discord.gg/MKBHD"]
    },
    "links": [{ "title": "Twitter", "url": "https://twitter.com/MKBHD" }],
    "latestVideos": [{ "title": "This can SEE Sound!", "url": "https://www.youtube.com/watch?v=ai1gIWacf0I", "views": 996385, "publishedAt": "2026-10-27T20:14:55+00:00" }],
    "foundVia": "input",
    "searchKeyword": null,
    "searchQuery": null
}
```

- `avgViewsRecent`, `uploadsPerWeek` and `lastUploadAt` come from the channel's latest 15 uploads. They are `null` when the channel has no public uploads.
- `engagementRate` is the average views of the latest videos as a percentage of subscribers (48 = 48%). Above 100% means recent videos reach more people than the channel has subscribers.
- `subscribers` are rounded the way YouTube shows them (for example 21.4M).
- `emails` are addresses the creator published in their channel description, usually for business inquiries.
- `emailType` says whether the emails are on a `company` domain (the creator's own or their agency's), a `free provider` (Gmail, Outlook, Yahoo…) or `both`; `companyEmails` lists only the company ones. Handy for batch outreach.
- `hasBusinessEmailButton` is `true` when the creator also set a private business email in YouTube. YouTube only shows it to signed-in users after a CAPTCHA, so this Actor doesn't collect it: it tells you the creator accepts business inquiries through YouTube.
- `foundVia` is `search` (with `searchKeyword` and the exact `searchQuery` that found it) or `input`.

### How search works

YouTube's channel search returns about 40 channels per query. When you want more, the Actor continues with YouTube's own related searches for your keyword (for example *cozy games pc*, *cozy games switch*, *cozy games 2026*) and then the related searches of those, so one keyword reaches several hundred channels. With several keywords, each gets an equal share of the results.

### Privacy

The Actor only collects public channel information: what anyone sees on a channel's page without signing in. It never signs in, never solves CAPTCHAs and never collects the private business email YouTube hides behind them.

### Limits

- Very large lists: one keyword reaches up to about 1,000 channels. Add related keywords for more.
- Channel countries come from the channel's own settings; many creators don't set one.

### Use it from AI agents

This Actor works with AI agents and LLM apps:

- **MCP:** add it to Claude, Cursor, VS Code or any other MCP client through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).
- **Agentic payments:** agents can run it and pay per result with [x402](https://docs.apify.com/platform/integrations/x402) (USDC), without an Apify account.

### FAQ

**Is it legal to scrape YouTube?** The Actor only reads public channel information, the same anyone sees without an account. Use the data responsibly: respect privacy laws such as GDPR and CAN-SPAM when you contact creators, and YouTube's terms.

**Why don't all channels have an email?** Only some creators publish an email in their description. Many more set a private business email in YouTube (see `hasBusinessEmailButton`) or link a website or Instagram where you can reach them.

**Can I schedule it?** Yes. Schedule the Actor in Apify to refresh your creator lists every week.

**Can I call it from code?**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("cleandata/youtube-creator-leads").call(
    run_input={"searchKeywords": ["cozy games"], "minSubscribers": 10000, "maxResults": 200}
)
for channel in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(channel["title"], channel["subscribers"], channel["emails"])
```

The same works in JavaScript (`apify-client`) or with plain HTTP. See the *API* tab on this page.

**Do you also have Twitch and Kick?** Yes: [Twitch Streamers Scraper](https://apify.com/cleandata/twitch-streamers-scraper) and [Kick Streamers Scraper](https://apify.com/cleandata/kick-streamers-scraper) return the same kind of rows, so you can combine all three in one creator list.

**Something broke or you need a field?** Open an issue on the Actor's Issues tab. Feature requests are welcome.

**Found it useful?** A short review on the Reviews tab helps other people find this Actor and tells me what to improve next.

# Actor input Schema

## `searchKeywords` (type: `array`):

Find channels with YouTube's own channel search, e.g. <code>cozy games</code>, <code>vegan recipes</code>, <code>tech review</code>, <code>personal finance</code>. Each keyword reaches several hundred channels.

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

Channel URLs, @handles or channel ids, e.g. <code>@MrBeast</code>, <code>https://www.youtube.com/@mkbhd</code> or <code>UCX6OQ3DkcsbYNE6H8uQQuVA</code>.

## `minSubscribers` (type: `integer`):

Skip channels with fewer subscribers (0 = no minimum). Together with Max subscribers, great for finding micro-influencers.

## `maxSubscribers` (type: `integer`):

Skip channels with more subscribers (0 = no maximum).

## `minAvgViews` (type: `integer`):

Skip channels whose latest videos average fewer views (0 = no minimum). Subscribers can be old; recent views show the audience a creator really has today.

## `onlyWithEmail` (type: `boolean`):

Only return channels that publish an email address in their channel description.

## `emailTypes` (type: `array`):

Keep only channels whose emails are of these types (leave empty for any): <b>company</b> = on their own or their agency's domain, like business@brand.com; <b>free provider</b> = Gmail, Outlook, Yahoo or similar; <b>both</b> = one of each. Channels without an email are skipped when this is set.

## `activeWithinDays` (type: `integer`):

Only channels that published a video within this many days (0 = any). Skips abandoned channels.

## `countries` (type: `array`):

Only channels that list one of these countries, as 2-letter codes: <code>US</code>, <code>GB</code>, <code>DE</code>, <code>BR</code>… Channels that don't list a country are skipped when this is set.

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

Maximum number of channels for the whole run (0 = no limit).

## `proxyConfiguration` (type: `object`):

Apify Proxy is used by default. If YouTube starts blocking a run, switch to residential proxies.

## Actor input object example

```json
{
  "searchKeywords": [
    "cozy games"
  ],
  "minSubscribers": 0,
  "maxSubscribers": 0,
  "minAvgViews": 0,
  "onlyWithEmail": false,
  "activeWithinDays": 0,
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `channels` (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 = {
    "searchKeywords": [
        "cozy games"
    ],
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("cleandata/youtube-creator-leads").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 = {
    "searchKeywords": ["cozy games"],
    "maxResults": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("cleandata/youtube-creator-leads").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 '{
  "searchKeywords": [
    "cozy games"
  ],
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call cleandata/youtube-creator-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cleandata/youtube-creator-leads"
        }
    }
}
```

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/TaNc3byCiBr2U035F/builds/f9HiyrKPwonmKNnTE/openapi.json
