YouTube Channel Search Scraper
Pricing
from $2.50 / 1,000 channel founds
YouTube Channel Search Scraper
Search public YouTube channels by keyword. Returns channel name, handle, numeric subscriber and video counts and verification, with subscriber filters and optional About-page enrichment. No cookies needed.
Pricing
from $2.50 / 1,000 channel founds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
5
Monthly active users
6 days ago
Last modified
Categories
Share
What is YouTube Channel Search Scraper?
Search public YouTube channels by keyword and receive one dataset row per unique channel. Each row returns channel name, handle, channel URL, subscriber text, video count, verification badge, and a search snippet. Optional About-page enrich adds description, total views, joined date, country, and public links. Cookieless HTTP, MCP-ready.
This Actor is built for lead-gen and creator-research workflows that start from a niche phrase and need a ranked list of public channel cards.
Best fit for this Actor
- Discover public YouTube creators in a niche from a free-text keyword.
- Build a prospecting list of channel URLs and handles for outreach or CRM import.
- Feed MCP or spreadsheet workflows with one predictable channel card per match.
For mixed video, playlist, and channel SERP, start with YouTube Search Scraper and then return here when you only need channel cards. For a known channel URL or @handle, continue with YouTube Channel Scraper after you pick a match. For public emails on a known channel, pass the URL to YouTube Channel Email Extractor.
Practical scenario
A partnership manager types personal finance, keeps maxResultsPerQuery at 10, and leaves enrichProfiles off. The run returns ranked public channel cards with name, handle, subscriber text, and channel URL. Handles that pass a subscriber floor are then passed to the known-URL channel scraper for About-page detail, or to the email extractor for contact harvest. An empty niche finishes SUCCEEDED with VALID_EMPTY and no channel-found charge.
Quick start input
{"searchQueries": ["personal finance"],"maxResultsPerQuery": 10,"maxResultsTotal": 50,"enrichProfiles": false}
searchQueries accepts free-text keywords. Optional searchUrls accepts youtube.com/results?search_query=... pages; the Actor extracts the keyword and runs a channel-only search.
Input reference
| Field | Type | What it controls |
|---|---|---|
searchQueries | array (required) | Keywords such as personal finance. Prefills one example. |
searchUrls | array | Optional YouTube results URLs that already contain search_query. |
maxResultsPerQuery | integer | Unique channels saved per keyword. Default 10, max 200. |
maxResultsTotal | integer | Hard cap across the whole run. Default 50, max 500. |
minSubscribers / maxSubscribers | integer | Keep channels in a public subscriber band. Hidden counts stay in the set. |
verifiedOnly | boolean | Keep cards that show YouTube's verified badge. Default false. |
country / language | string | YouTube gl / hl plus residential geo. Defaults US / en. |
enrichProfiles | boolean | Fetch About-page fields and bill channel-enriched. Default false. |
fallbackMode | string | auto (default), never, or always for the managed recovery path. |
proxyConfiguration | object | Residential proxy for the direct YouTube HTTP scrape. |
What data you receive
One dataset item is one unique public YouTube channel card.
{"type": "channel","query": "personal finance","position": 1,"source": "youtube","channelId": "UCxxxxxxxxxxxxxxxxxxxxxx","handle": "@examplefinance","channelName": "Example Finance","channelUrl": "https://www.youtube.com/@examplefinance","handleUrl": "https://www.youtube.com/@examplefinance","descriptionSnippet": "Weekly money explainers","subscriberCount": 1200000,"subscriberCountText": "1.2M subscribers","videoCount": 480,"videoCountText": "480 videos","isVerified": true,"avatarUrl": "https://yt3.ggpht.com/example","thumbnailUrl": "https://yt3.ggpht.com/example","discoverySurface": "channel_search","enriched": false,"description": null,"viewCount": null,"joinedDateText": null,"country": null,"keywords": null,"externalLinks": null,"rssUrl": null,"bannerUrl": null,"publicEmail": null,"scrapedAt": "2026-09-10T12:00:00.000Z"}
| Field | Meaning |
|---|---|
channelName + handle | Public display name and @handle |
subscriberCountText / videoCountText | Search-card display strings |
isVerified | Public verified badge on the card |
channelUrl | Canonical public channel or handle URL |
enriched | True after optional About-page enrich |
source | youtube for direct HTTP, managed-fallback when recovery ran |
OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, and chargedEventCounts. Read those records to interpret empty datasets.
Use through the API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~youtube-channel-search-scraper/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries":["personal finance"],"maxResultsPerQuery":10,"enrichProfiles":false}'
Download rows as JSON, CSV, Excel, or HTML from the Dataset tab.
Use with AI agents through Apify MCP
Find public YouTube channels for personal finance. Return channelName, handle, subscriberCountText, isVerified, and channelUrl. Keep the scope to public search cards. Read OUTPUT.outcome and itemsPushed for empty datasets. Cost signal: about $0.0025 per found channel with Apify platform usage included.
Connect via https://mcp.apify.com. Provenance is the public YouTube channel-search card; scrapedAt is collection time.
Connect the workflow
- After you pick a channel, scrape the known URL with YouTube Channel Scraper.
- When you need public emails on that channel, continue with YouTube Channel Email Extractor.
- For a mixed video SERP on the same keyword, start with YouTube Search Scraper.
Pricing
This Actor uses Pay per event with Apify platform usage included. The live Pricing tab is the current source of truth for billing details.
apify-actor-start: once per runchannel-found: per unique public channel row savedchannel-enriched: per successful About-page enrich (only withenrichProfiles)
A ten-channel prefill is ten channel-found events plus one start event, with Apify platform usage included. Channels removed by minSubscribers, maxSubscribers or verifiedOnly are filtered before billing, and empty niches or invalid keywords have no channel-found charge. See the Pricing tab for current prices.
How it works
- Normalize keywords and optional results URLs, then collapse duplicates.
- Query YouTube's channel-only search over residential HTTP and follow its continuation pages.
- When direct HTTP is unavailable,
fallbackMode=autouses the managed recovery path. - Charge
channel-found, optionally enrich, then write the dataset item.
Best results
- Provide a specific niche keyword such as
personal financerather than a channel URL. - Start with
enrichProfilesoff for cheap discovery, then enrich the shortlist. - Confirm
countrymatches the market you care about so residential geo and YouTubeglstay aligned. - Validate
OUTPUT.outcomeafter the run:COMPLETEfor a full set,VALID_EMPTYfor a quiet niche.
Builder's note
I found that YouTube's public channel-only search token already returns identity, subscriber display text, and verification on the card, which is enough for a lean discovery product. Keeping About-page fields behind an optional enrich lets agents run a cheap keyword scan first, then call the known-URL sibling only for channels that matter. Direct residential HTTP with a managed recovery path covers the days when YouTube HTML is consent-walled while staying on cookieless public data.
FAQ
Does it return emails?
Only when a channel shows an email in its public About text: with enrichProfiles on, publicEmail holds it. Rows always contain public channel identity, counts and verification, and enrichment adds description, links and country. For dedicated contact discovery, pass the channel URLs to YouTube Channel Email Scraper.
Are subscriber and video counts numbers?
Yes. subscriberCount and videoCount are parsed into plain numbers, and YouTube's original display text stays in subscriberCountText and videoCountText.
What about channels that hide their subscriber count?
They keep subscriberCount: null and still pass the subscriber filters, so you can review them separately.
Why did I get fewer rows than maxResultsTotal?
YouTube's channel search for a niche keyword is finite, duplicates across keywords are removed, and the subscriber and verified filters drop channels. Add related keywords to widen the pool.
Am I charged for filtered channels?
No. Filters run before billing, so only saved rows create channel-found events.
Legal and responsible use
Use this Actor on public YouTube search data you are authorized to process, follow applicable law and YouTube's terms, and keep the output in your own compliance workflow. YouTube is a trademark of Google LLC. This independent Actor is not affiliated with, associated with, or endorsed by YouTube or Google.
Issues and feature requests: use the Actor Issues tab on Apify.