YouTube Channel Finder — Niche Creator Discovery
Pricing
from $2.34 / 1,000 result storeds
YouTube Channel Finder — Niche Creator Discovery
Find YouTube channels by niche keyword and subscriber range. Export public channel titles, URLs, descriptions, subscriber counts, video counts, and view counts for creator research.
Pricing
from $2.34 / 1,000 result storeds
Rating
0.0
(0)
Developer
North Glass Labs
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
4
Monthly active users
5 days ago
Last modified
Categories
Share
YouTube Channel Database Search — Find Creators by Niche
Turn a niche keyword into a structured list of YouTube channels. Use subscriber-range filters to narrow the results for niche creator discovery, sponsorship research, podcast guest discovery, or creator lead lists.
The Actor searches YouTube's channel-filtered results, scrolls for more channel cards, removes duplicates, applies filters when subscriber counts are visible, and enriches each result from its public About page.
What you can do with it
- Discover niche creators — search a specific topic such as
indie game development,climate technology, orhome coffee roasting. - Research sponsorship candidates — compare visible audience size, publishing volume, descriptions, and channel links before doing your own fit review.
- Find possible podcast guests — build a research shortlist of creators with relevant channel descriptions and public profiles.
- Build creator lead lists — export channel metadata to JSON, CSV, Excel, or another workflow for qualification.
This Actor returns channel metadata, not a guaranteed contact database. An email is included only when publicly visible in the rendered About-page text. It does not bypass YouTube's business-email reveal flow, authentication, CAPTCHA, or other access controls, and many records will not contain an email.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | string | Yes | — | Niche keyword or phrase used in YouTube channel search. |
maxResults | integer | No | 50 | Maximum channels to return, from 1 to 500. YouTube may expose fewer. |
minSubscribers | integer | No | 0 | Minimum visible subscriber count. 0 disables the lower bound. |
maxSubscribers | integer | No | 0 | Maximum visible subscriber count. 0 disables the upper bound. |
Subscriber filters only apply when YouTube exposes a parseable count. Channels with hidden or unavailable counts are retained rather than treated as zero.
Example input
{"searchQuery": "climate technology podcast","maxResults": 25,"minSubscribers": 5000,"maxSubscribers": 250000}
Output
The default dataset contains one object per channel. Fields derived from search cards are normally present; About-page enrichment fields can be omitted when YouTube does not expose them or the page cannot be loaded.
| Field | Type | Meaning |
|---|---|---|
channelId | string | YouTube channel ID when exposed. |
channelName | string | Channel display name. |
channelUrl | string | Canonical or rendered channel URL. |
handle | string | Public @handle when exposed. |
subscriberCount | integer | Parsed count; 0 can also mean hidden or unavailable, so check subscriberText. |
subscriberText | string | Subscriber text exposed by YouTube. |
videoCount | integer | Parsed video count when available. |
description | string | Search snippet or About-page description. |
imageUrl | string | Channel thumbnail URL when available. |
totalViews | integer | Parsed aggregate view count when available. |
email | string | Email found in already-visible public About-page text, when available. |
country | string | Channel-declared country when available. |
joinedDate | string | Joined-date text when available. |
Illustrative record (values and optional-field availability vary by channel):
{"channelId": "UCexample123","channelName": "Example Climate Channel","channelUrl": "https://www.youtube.com/@exampleclimate","handle": "@exampleclimate","subscriberCount": 84200,"subscriberText": "84.2K subscribers","videoCount": 412,"description": "Interviews and explainers about climate technology.","imageUrl": "https://yt3.googleusercontent.com/example","totalViews": 5230000,"country": "United States","joinedDate": "Joined Mar 15, 2018"}
API and automation recipes
Set an Apify API token first:
$export APIFY_TOKEN="your_apify_token"
The synchronous endpoint in the cURL and n8n examples waits for the run and returns dataset items directly. Keep maxResults modest for synchronous workflows because the Actor visits each selected channel's About page.
cURL
curl --request POST \"https://api.apify.com/v2/acts/northglasslabs~youtube-channel-database-search/run-sync-get-dataset-items?token=${APIFY_TOKEN}&format=json&clean=true" \--header "Content-Type: application/json" \--data '{"searchQuery": "climate technology podcast","maxResults": 25,"minSubscribers": 5000,"maxSubscribers": 250000}'
Python
Install the client with pip install apify-client, then:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("northglasslabs/youtube-channel-database-search").call(run_input={"searchQuery": "climate technology podcast","maxResults": 25,"minSubscribers": 5000,"maxSubscribers": 250000,})items = client.dataset(run["defaultDatasetId"]).list_items(clean=True).itemsprint(items)
JavaScript
Install the client with npm install apify-client, then:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('northglasslabs/youtube-channel-database-search').call({searchQuery: 'climate technology podcast',maxResults: 25,minSubscribers: 5000,maxSubscribers: 250000,});const { items } = await client.dataset(run.defaultDatasetId).listItems({ clean: true });console.log(items);
n8n / HTTP Request
Create an HTTP Request node with:
- Method:
POST - URL:
https://api.apify.com/v2/acts/northglasslabs~youtube-channel-database-search/run-sync-get-dataset-items - Query parameters:
token= your Apify token,format=json,clean=true - Send Body: on
- Body Content Type: JSON
- JSON Body:
{"searchQuery": "climate technology podcast","maxResults": 25,"minSubscribers": 5000,"maxSubscribers": 250000}
For production n8n workflows, store the token in an n8n credential or secret rather than directly in the node. The response is the array of dataset records and can feed a Filter, Google Sheets, Airtable, database, or CRM qualification step.
Pricing
The public Actor configuration checked on July 30, 2026 lists pay-per-event pricing of:
- $0.02 for the Actor Start event.
- $0.00275 per returned dataset item on the Free tier ($2.75 per 1,000 results), with lower per-item prices configured for paid Apify tiers.
For example, 50 returned items correspond to a listed event subtotal of $0.15750 before tier discounts. Your total can also include Apify platform usage, and a run can return fewer than maxResults; check the live Actor pricing panel before running because pricing can change.
How it works
- Opens YouTube search with the channel-only filter.
- Parses embedded
ytInitialDataand rendered channel cards. - Scrolls until the requested unique count is reached, growth stalls, or the scroll limit is reached.
- Deduplicates by available channel ID, handle, and URL.
- Applies subscriber bounds only to channels with visible, parseable counts.
- Visits each selected channel's public
/aboutpage and adds details that are available. - Pushes one channel object to the default Apify dataset.
Limits and data interpretation
- YouTube is JavaScript-rendered and can cap, vary, or block results. The implementation retries direct access first and then configured proxy sessions, but a requested count is not guaranteed.
- Search order comes from YouTube. This Actor does not calculate sponsorship fit, engagement rate, audience demographics, or guest suitability.
subscriberCount: 0is ambiguous whensubscriberTextis empty or says the count is hidden.totalViews,country,joinedDate, andemaildepend on the public About page and may be absent.- A public email, when found, has not been validated for deliverability or permission to contact. Qualify leads and follow applicable outreach and privacy rules.
- For workloads requiring official API guarantees, evaluate the YouTube Data API v3.
Local verification
python3 -m pip install -r requirements.txt pytestpython3 -m pytest -qapify validate-schemaapify run
Local test input lives at storage/key_value_stores/default/INPUT.json when running with Apify local storage.