YouTube Channel Search Scraper avatar

YouTube Channel Search Scraper

Pricing

from $4.00 / 1,000 channel founds

Go to Apify Store
YouTube Channel Search Scraper

YouTube Channel Search Scraper

Search public YouTube channels by keyword. Returns handle, subscribers, verification, and optional profile enrich. Cookieless, MCP-ready.

Pricing

from $4.00 / 1,000 channel founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

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.004 per found channel plus platform usage.

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 plus Apify platform usage. The live Pricing tab is the current source of truth for billing details.

  • apify-actor-start: $0.00005 per run
  • channel-found: $0.004 per unique public channel row
  • channel-enriched: $0.006 per successful About-page enrich

A ten-channel prefill is about $0.04 in result events plus a few seconds of Apify platform usage. Empty niches and invalid keywords have no channel-found charge.

How it works

  1. Normalize keywords and optional results URLs, then collapse duplicates.
  2. Request YouTube channel-only search over residential HTTP (InnerTube ytInitialData plus continuation).
  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.

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.