# YouTube Channel Finder by Topic or Niche (AI) (`dataovercoffee/youtube-channel-finder-by-topic`) Actor

Describe the channels you want, like "US channels reviewing budget espresso machines," and get YouTube creators ranked by content match. Semantic search across 200M channels.

- **URL**: https://apify.com/dataovercoffee/youtube-channel-finder-by-topic.md
- **Developed by:** [Data Over Coffee](https://apify.com/dataovercoffee) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$120.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?

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 Channel Finder by Topic or Niche

Find YouTube channels by describing them in plain English.

**Keyword finders match what channels are called. This matches what they make.**

It's a YouTube channel search that takes a sentence instead of a keyword: describe the creators you want, and this searches **200M+ channels** and returns the ones whose content actually fits. No seed channel, no keyword guessing. Ranked, filtered, ready to export — YouTube creator search for people who know the niche but not the names.

### 🎯 Try These

Paste any of these straight into `query`.

**Sponsorships**

- `Home espresso and coffee gear reviewers in the US`
- `Minecraft let's play channels under 20k subscribers`

**Affiliates**

- `Personal finance channels for people in their 20s in the US`
- `Budget travel vloggers covering Southeast Asia`

**B2B**

- `Channels reviewing CRM and sales tools for small agencies`
- `Excel and Power BI tutorials in Spanish`

**Podcast guests**

- `Founders doing long-form interviews about bootstrapping SaaS`

**Research**

- `German-language van life and camper build channels`

### 🆚 Side by Side

Brief: *"Home espresso and coffee gear reviewers in the US."*

| | A keyword finder | This actor |
|---|---|---|
| What you type | You guess the words first — `espresso review`, `coffee gear`, `barista` — one search per guess | The brief, once |
| What it matches | The channel's name, handle, tags and description | What the channel actually publishes |
| What you get back | Channels with your keyword in the name, plus every channel that merely mentions coffee | Channels whose videos are espresso and gear reviews |

### 🧠 How It Works

1. **We index 200M+ YouTube channels** into one of the largest searchable YouTube channel databases.
2. **You describe what you want**, in a sentence, in any language.
3. **We read your sentence for filters.** "in the US" becomes a country filter, "under 20k subscribers" a size filter.
4. **We find candidates** whose published content is closest to your description.
5. **We re-read every candidate against your exact words.** A model reads your brief and the channel together and scores the fit, so "budget skincare" does not return luxury skincare.
6. **We apply your filters** and return a ranked list, ready to export. A search usually takes 2-5 minutes.

### 📦 What You Get

One row per channel:

| Column | What it is |
|---|---|
| **Match** | Relevance for your brief, 0-1. Results are sorted by it, best first. |
| Identity | Name, handle, URL, description, avatar, country, join date, tags |
| Audience & reach | Subscribers, total views, total videos, avg views on recent videos, avg views on recent shorts |
| Flags | Verified, family-friendly, public email available |
| Creator signals | Person vs brand/organisation, gender, main language and every language spoken, earning outside YouTube ads, brand-deal and affiliate history |

Export as CSV, JSON, or Excel.

### ✍️ How To Write A Good Brief

| | Weak | Strong |
|---|---|---|
| **Topic** | `coffee` | `home espresso machine reviews` |
| **Audience** | `finance` | `personal finance for people in their 20s` |
| **Format** | `SaaS` | `long-form founder interviews about SaaS` |
| **Country** | — | `in the US`, `in Brazil` |
| **Language** | — | `in Spanish`, `German-language` |
| **Size** | — | `under 20k subscribers` |

One thing to know. **Country and language are different filters** — "German-language" finds creators posting in German anywhere, "in Germany" finds creators based there.

### ⚡ How To Use It

1. Write your `query` — a description of the channels you want. Any language works.
2. Set `limit` (default 10, max 5,000). Free Apify accounts get at most 10
   results per run.
3. Optional filters: subscribers, avg views, total views, total videos, country (include or exclude), verified-only, family-friendly, public-email-only.
4. Optional creator filters: person vs brand/organisation, gender, main language, whether they earn outside YouTube ads, whether they have run sponsorships.
5. Run, then download results (CSV/JSON/Excel).

### 💰 Pricing

- **$0.12 per channel** — pay per result
- Up to **5,000 results** per search
- Apify free tier includes **$5** — about **41 results** to try it first

### 🔗 The Full Pipeline

Three actors, one workflow. Start wherever your list is.

| | When to use it |
|---|---|
| **This actor** | Don't have a channel yet? Describe it. |
| **[YouTube Channel Lookalike Finder](https://apify.com/dataovercoffee/youtube-channel-lookalike-finder)** | Have a channel you like? Find more. |
| **[YouTube Channel Business Email Scraper](https://apify.com/dataovercoffee/youtube-channel-business-email-scraper)** | Got your list? Get the addresses. |

The usual run: describe the niche here, take your best few hits and expand them with the Lookalike Finder, then pull addresses for the whole set with the Email Scraper. Export to Google Sheets, CSV, JSON or Excel via Apify integrations.

### 🤖 API, MCP & Agents

Runnable as a YouTube channel search API and as a YouTube creator discovery API through Apify's standard run endpoints, and available to agents over Apify's MCP server — a YouTube search MCP tool that takes a sentence and returns ranked channels. The input is one required string, so an agent needs no schema gymnastics to call it.

### ❓ FAQ

#### How do I find YouTube channels in my niche?

Describe the niche in a sentence instead of guessing keywords — `channels reviewing CRM and sales tools for small agencies`. You get a YouTube channel list by niche, ranked by how well each channel's actual content fits, which is what you want when you know the space but not the channel names.

#### How do I find YouTubers to sponsor?

Describe your customer's interests, then filter to the size you can afford — `Minecraft let's play channels under 20k subscribers`. For YouTube sponsorship prospecting, add `only_has_email` to keep only channels with a public address. Small channels are easy to find this way: say the size in the brief.

#### Can I search YouTube by topic instead of keywords?

That's the whole idea. A keyword search matches the words in a channel's name, handle and tags. This is a YouTube channel search by topic: it reads what each channel publishes and scores it against your description, so it finds creators whose names never mention your topic.

#### How do I find creators for an affiliate program?

Describe the buying intent rather than the product category — `personal finance channels for people in their 20s in the US` finds creators whose audience is about to open accounts. Filter by avg views per video, not subscribers, and you have a shortlist of YouTube creators for affiliate programs.

#### How do I find podcast guests on YouTube?

Describe the format as well as the subject: `founders doing long-form interviews about bootstrapping SaaS`. Format words matter here — "long-form interviews" pulls people who already talk at length on camera, which is most of what makes a good guest.

#### Can I find B2B YouTube creators?

Yes, and this is where keyword search struggles most, because B2B channels rarely name their category. Describe the software or the buyer — `channels reviewing CRM and sales tools for small agencies`.

#### How is this different from the Lookalike Finder?

Different starting point. The [Lookalike Finder](https://apify.com/dataovercoffee/youtube-channel-lookalike-finder) starts from a channel you already know and finds more like it. This starts from a description, so you can search for creators you have never seen and cannot name. If you have a good channel, use that one; if you only have a brief, use this one.

#### How do I get emails for these channels?

This actor flags which channels have a public email (`HasPublicEmail`) but does not return addresses. Run your results through [YouTube Channel Business Email Scraper](https://apify.com/dataovercoffee/youtube-channel-business-email-scraper) to get the actual addresses.

#### Does it work in other languages?

Yes, both ways. You can write the brief in any language, and you can ask for creators who post in a given language — `Excel and Power BI tutorials in Spanish` returns Spanish-speaking channels.

#### How fresh is the data?

We refresh channel stats on a rolling basis from our own crawl, so figures are recent estimates rather than live counts.

#### How long does a search take?

Usually 2-5 minutes. Every candidate is re-read against your description during the search, so results take minutes rather than seconds. Bigger `limit` values take a little longer.

#### I got fewer results than my limit. Is something wrong?

No, and it happens more here than in a keyword search. Channels that don't clear the relevance bar aren't returned at all — a narrow brief honestly has fewer matches, and eight good ones beat 100 padded with near-misses.

If you want more, drop one constraint — the language, or the sub-niche — and run it again.

#### Can I exclude channels I already have?

Yes. Paste the `ChannelId` column from a previous run into `exclude_channel_ids` so you aren't charged for duplicates. That field takes channel IDs only.

#### Need help?

Email <support@dataovercoffee.com> with your Run ID — we'll take a look. You can also open an issue on the [actor page](https://apify.com/dataovercoffee/youtube-channel-finder-by-topic/issues).

# Actor input Schema

## `query` (type: `string`):

Describe the channels you want in plain English. A full sentence beats a single word, and six things move the results: topic, audience, format, country, language and size — for example "home espresso and coffee gear reviewers in the US" or "personal finance channels for people in their 20s in the US". Any language works, and you can ask for creators who post in a given language. Constraints you state here become real filters and the run tells you which ones it applied; anything you set in the fields below wins over your sentence.

## `limit` (type: `integer`):

Maximum number of channels to return.

## `min_subscribers` (type: `integer`):

Only include channels with at least this many subscribers.

## `max_subscribers` (type: `integer`):

Only include channels with at most this many subscribers.

## `min_avg_views_videos` (type: `integer`):

Minimum average view count across the channel's recent videos.

## `max_avg_views_videos` (type: `integer`):

Maximum average view count across the channel's recent videos.

## `min_avg_views_shorts` (type: `integer`):

Minimum average view count across the channel's recent shorts.

## `max_avg_views_shorts` (type: `integer`):

Maximum average view count across the channel's recent shorts.

## `min_total_views` (type: `integer`):

Only include channels with at least this many total views.

## `max_total_views` (type: `integer`):

Only include channels with at most this many total views.

## `min_total_videos` (type: `integer`):

Only include channels with at least this many published videos.

## `max_total_videos` (type: `integer`):

Only include channels with at most this many published videos.

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

Only include channels from these countries.

## `exclude_countries` (type: `array`):

Exclude channels from these countries.

## `only_verified` (type: `boolean`):

Only include channels that have YouTube's verified badge.

## `only_has_email` (type: `boolean`):

Only include channels that have a public business email on their about page. Great for influencer outreach.

## `only_family_friendly` (type: `boolean`):

Only include channels marked as family-friendly by YouTube.

## `exclude_channel_ids` (type: `array`):

List of YouTube channel IDs to exclude from results. Use this to avoid getting channels you already have from previous runs. Channel IDs only here — a URL or an @handle cannot be matched against this list. If the list contains one, the run stops without searching and shows you how many rows are wrong plus a few examples, so you are never charged for results you asked to exclude. Maximum 500,000.

## `gender` (type: `string`):

Only creators of this gender. Estimated from public channel details, not self-reported.

## `primary_language` (type: `array`):

The channel's main language. Pick several to match a channel whose main language is any of them.

## `subject_type` (type: `string`):

Whether the channel is run by an individual or by a brand/organisation.

## `only_monetized` (type: `boolean`):

Earns money outside YouTube ads.

## `only_not_monetized` (type: `boolean`):

No sign of earning outside YouTube ads.

## `only_with_sponsorships` (type: `boolean`):

Has run brand deals or affiliate promotions.

## `only_without_sponsorships` (type: `boolean`):

No brand deals or affiliate promotions found.

## Actor input object example

```json
{
  "query": "Home espresso and coffee gear reviewers in the US",
  "limit": 10,
  "only_verified": false,
  "only_has_email": false,
  "only_family_friendly": false,
  "primary_language": [],
  "only_monetized": false,
  "only_not_monetized": false,
  "only_with_sponsorships": false,
  "only_without_sponsorships": false
}
```

# Actor output Schema

## `channels` (type: `string`):

Dataset containing the YouTube channels that match your description, ranked by relevance with full metadata.

# 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 = {
    "query": "Home espresso and coffee gear reviewers in the US",
    "limit": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataovercoffee/youtube-channel-finder-by-topic").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 = {
    "query": "Home espresso and coffee gear reviewers in the US",
    "limit": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("dataovercoffee/youtube-channel-finder-by-topic").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 '{
  "query": "Home espresso and coffee gear reviewers in the US",
  "limit": 10
}' |
apify call dataovercoffee/youtube-channel-finder-by-topic --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dataovercoffee/youtube-channel-finder-by-topic"
        }
    }
}
```

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/GbzLGSRXgq9Bxj7JT/builds/oputzyC60OQpjUIAo/openapi.json
