# YouTube Channel Search Scraper - Subscribers, Emails (`om_kh/youtube-channel-search-scraper`) Actor

YouTube channel search by keyword: channel name, handle, subscribers, description and link, up to 500 per search. Optional enrichment: country, total views, social links and public business email (MX-checked). $0.50 per 1,000 channels. API and MCP.

- **URL**: https://apify.com/om\_kh/youtube-channel-search-scraper.md
- **Developed by:** [Khandji Omar](https://apify.com/om_kh) (community)
- **Categories:** Lead generation, Social media, Videos
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 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 Search Scraper — Subscribers, Emails

> Search YouTube **channels** by keyword and get a clean list: channel name, handle,
> subscribers, description and link — up to 500 per search. Turn on enrichment to add
> **country, total views, join date, social links and a public business email**
> (MX-checked). **$0.50 per 1,000 channels.**

### What does this YouTube channel search scraper do?

It runs YouTube's own channel search (the "Channels" filter on youtube.com) for each of
your keywords and returns one row per channel, in YouTube's ranking order. Use it to
build influencer lists, find creators in a niche, or map who owns a topic on YouTube.

With **enrichment** on, it also opens each channel's About panel and adds:

- country, exact subscriber count, total views, number of videos and join date,
- social links (Instagram, TikTok, X, LinkedIn...) and website links,
- a **business email** when the creator publishes one in the channel bio, with its
  verification level (`mx_valid` = the domain's mail server exists).

No login, no YouTube API key, no quota. It reads YouTube directly — no third-party
scraper in the middle.

### Why use it

1. **Micro-influencer friendly.** `minSubscribers` / `maxSubscribers` filters keep only the
   channel sizes you want.
2. **Contacts, not just names.** Optional enrichment adds social links and published
   business emails — never guessed.
3. **Country filter.** Keep only channels based in a given country.
4. **Cheap.** $0.0005 per channel, $0.002 extra per enriched channel. First 10 channels
   of every run free.
5. **API and AI-agent ready.** JSON, CSV, Excel, n8n, Make, Zapier, and MCP.

### How to use it in 3 steps

1. Click **Try for free** — a keyword is prefilled.
2. Optional: set how many channels, subscriber limits, turn on **Enrich channels**, or add a country.
3. Click **Start** and download JSON, CSV or Excel, or read the results from the API.

### Input

| Field | What it does |
|---|---|
| `searchTerms` | Keywords, one per line (up to 20 per run). |
| `maxChannels` | Channels per keyword, 1 to 500. Default 50. |
| `minSubscribers` / `maxSubscribers` | Optional subscriber range. |
| `enrichChannels` | Add country, views, links and business email. Default off. |
| `country` | Optional country filter (e.g. `United States`, `France`); turns enrichment on. |
| `maxTotalChargeUsd` | Optional hard cost cap for the run. |

```json
{
  "searchTerms": ["personal finance", "home workout"],
  "maxChannels": 100,
  "minSubscribers": 10000,
  "maxSubscribers": 500000,
  "enrichChannels": true
}
```

### Output

One row per channel. Real example with enrichment (email masked):

```json
{
  "channelId": "UCkQA8OxvAOFet9IED4qfnHQ",
  "title": "Pinoy.PersonalFinance",
  "handle": "@Pinoy.PersonalFinance",
  "subscribers": 12800,
  "description": "Welcome to Pinoy.PersonalFinance! I create simple, practical, and easy-to-understand content...",
  "isVerified": false,
  "channelUrl": "https://www.youtube.com/@Pinoy.PersonalFinance",
  "rank": 4,
  "searchQuery": "personal finance",
  "enriched": true,
  "country": "Canada",
  "totalViews": 721208,
  "videoCount": 77,
  "joinedAt": "2025-01-11",
  "socialLinks": [],
  "websiteLinks": ["https://pinoypersonalfinance.carrd.co"],
  "businessEmail": {"email": "xxxxx@gmail.com", "verification_level": "mx_valid", "source": "https://www.youtube.com/@Pinoy.PersonalFinance"},
  "status": "ok"
}
```

### How much does it cost?

| Result | Price |
|---|---|
| Channel | **$0.0005** ($0.50 per 1,000) |
| Enrichment (optional) | **+$0.002** per enriched channel |
| Start fee | none |

The first 10 channels of every run are free. A search YouTube could not answer is never
charged. Paid Apify plans get lower tier prices — see the Pricing tab.

### Use cases

- **Influencer marketing** — shortlist creators in a niche by size and country, with contacts.
- **Sponsorship and agency prospecting** — build outreach lists of channels that publish a business email.
- **Market mapping** — see which channels own a topic on YouTube.
- **Competitive research** — track who ranks for your keywords.

### Use it from code (API)

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("om_kh/youtube-channel-search-scraper").call(run_input={
    "searchTerms": ["personal finance"],
    "maxChannels": 100,
    "enrichChannels": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["subscribers"], (item.get("businessEmail") or {}).get("email"))
```

**JavaScript**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('om_kh/youtube-channel-search-scraper').call({
    searchTerms: ['personal finance'],
    maxChannels: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Integrations: n8n, Make, Zapier, Google Sheets

Use the Apify app in n8n, Make or Zapier, or the Google Sheets integration from the
Integrations tab, to send new channels straight to your CRM or spreadsheet.

### Use it from an AI agent (MCP)

Connect an MCP client to `https://mcp.apify.com` and add
`om_kh/youtube-channel-search-scraper` as a tool.

### Tips and limits

- YouTube returns channels in its own relevance order; `rank` keeps that order.
- A few channels hide their subscriber count; `subscribers` is then empty and they are
  dropped by `minSubscribers`.
- Emails come only from what creators publish in their bio. Channels that hide their
  email behind YouTube's "View email address" button are not bypassed.

### FAQ

**Do I need a YouTube API key?**
No.

**How many channels can I get?**
Up to 500 per keyword and 20 keywords per run.

**Where do the emails come from?**
Only from the public channel description, checked against the domain's mail server.
Nothing is guessed.

**Can I find channels from one country only?**
Yes, set `country`; each channel's About page is read to keep only that country.

**Is it legal?**
It reads public channel information any visitor can see. You are responsible for how
you contact creators; follow the anti-spam law that applies to you.

### Related Actors

- [YouTube Creator Lead Finder - Views, Niche, Email](https://apify.com/om_kh/youtube-creator-lead-finder) — scores creators and keeps only active, qualified channels.
- [YouTube Channel Videos Scraper - Exact Views, $0.50/1K](https://apify.com/om_kh/youtube-channel-videos-scraper) — every recent upload of a channel with exact likes.
- [YouTube Comments Scraper - Likes, Replies, Date, $0.40/1K](https://apify.com/om_kh/youtube-comments-scraper) — what the audience says.

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search YouTube channels for, one per line (up to 20).

## `maxChannels` (type: `integer`):

1 to 500. Default 50.

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

Optional: skip channels below this subscriber count.

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

Optional: skip channels above this subscriber count (great for micro-influencers).

## `enrichChannels` (type: `boolean`):

Adds country, exact subscribers, total views, join date, social and website links, and a public business email from the channel bio (MX-checked). +$0.002 per enriched channel.

## `country` (type: `string`):

Optional: keep only channels whose About page lists this country (e.g. United States, France). Turns on enrichment.

## `maxTotalChargeUsd` (type: `number`):

Optional hard cap on what this run can cost you.

## Actor input object example

```json
{
  "searchTerms": [
    "personal finance"
  ],
  "maxChannels": 50,
  "enrichChannels": false
}
```

# Actor output Schema

## `report` (type: `string`):

A visual summary of delivery, charges, and source issues.

## `results` (type: `string`):

Companies in a sortable table. No JSON knowledge required.

## `csv` (type: `string`):

Results ready for spreadsheets, CRMs, and analytics tools.

## `excel` (type: `string`):

Results as an Excel workbook for non-technical teams.

## `runSummary` (type: `string`):

Machine-readable delivery, billing, and source diagnostics.

# 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 = {
    "searchTerms": [
        "personal finance"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("om_kh/youtube-channel-search-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 = { "searchTerms": ["personal finance"] }

# Run the Actor and wait for it to finish
run = client.actor("om_kh/youtube-channel-search-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 '{
  "searchTerms": [
    "personal finance"
  ]
}' |
apify call om_kh/youtube-channel-search-scraper --silent --output-dataset

```

## MCP server setup

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