YouTube Channel Search Scraper avatar

YouTube Channel Search Scraper

Pricing

from $2.50 / 1,000 channel founds

Go to Apify Store
YouTube Channel Search Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

5

Monthly active users

6 days ago

Last modified

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

FieldTypeWhat it controls
searchQueriesarray (required)Keywords such as personal finance. Prefills one example.
searchUrlsarrayOptional YouTube results URLs that already contain search_query.
maxResultsPerQueryintegerUnique channels saved per keyword. Default 10, max 200.
maxResultsTotalintegerHard cap across the whole run. Default 50, max 500.
minSubscribers / maxSubscribersintegerKeep channels in a public subscriber band. Hidden counts stay in the set.
verifiedOnlybooleanKeep cards that show YouTube's verified badge. Default false.
country / languagestringYouTube gl / hl plus residential geo. Defaults US / en.
enrichProfilesbooleanFetch About-page fields and bill channel-enriched. Default false.
fallbackModestringauto (default), never, or always for the managed recovery path.
proxyConfigurationobjectResidential 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"
}
FieldMeaning
channelName + handlePublic display name and @handle
subscriberCountText / videoCountTextSearch-card display strings
isVerifiedPublic verified badge on the card
channelUrlCanonical public channel or handle URL
enrichedTrue after optional About-page enrich
sourceyoutube 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

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 run
  • channel-found: per unique public channel row saved
  • channel-enriched: per successful About-page enrich (only with enrichProfiles)

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

  1. Normalize keywords and optional results URLs, then collapse duplicates.
  2. Query YouTube's channel-only search over residential HTTP and follow its continuation pages.
  3. When direct HTTP is unavailable, fallbackMode=auto uses the managed recovery path.
  4. Charge channel-found, optionally enrich, then write the dataset item.

Best results

  • Provide a specific niche keyword such as personal finance rather than a channel URL.
  • Start with enrichProfiles off for cheap discovery, then enrich the shortlist.
  • Confirm country matches the market you care about so residential geo and YouTube gl stay aligned.
  • Validate OUTPUT.outcome after the run: COMPLETE for a full set, VALID_EMPTY for 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.

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.