YouTube Channel Search Scraper avatar

YouTube Channel Search Scraper

Pricing

from $0.03 / 1,000 channels

Go to Apify Store
YouTube Channel Search Scraper

YouTube Channel Search Scraper

Find public YouTube channels from keywords or reusable search URLs. Export channel identity, public metrics, profile details, and first-match discovery evidence.

Pricing

from $0.03 / 1,000 channels

Rating

5.0

(2)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

5

Bookmarked

223

Total users

114

Monthly active users

3.9 hours

Issues response

7 days ago

Last modified

Share

🔎 Find YouTube channels for your next creator list

YouTube Channel Search Scraper helps marketers, creator researchers, and analysts find public YouTube channels from keywords or reusable YouTube search-result URLs. Get channel IDs, handles, public metrics, profile details, and the first search match that found each saved channel.

📦 Data you can export

Each dataset row is one saved public channel. It can include:

  • channel: ID, handle, name, URL, description, verification, and public visibility signals
  • metrics: subscriber, video, and total view counts, plus the count text shown by YouTube
  • profile: country, joined text, keywords, tags, RSS URL, tabs, links, and country codes
  • images: thumbnail, avatar, banner, and avatar sizes
  • discoverySource: the keyword or search URL, discovery surface, rank, and results URL for the first saved match
  • sourceVideo: the video that first exposed the channel, or null for a channel-only match

Optional values can be null or empty when YouTube does not show them. Export rows as JSON, CSV, Excel, XML, RSS, or HTML, or use the Apify API.

▶️ Running the Actor

  1. Keep the sample keyword or add your own topics.
  2. You can also add public YouTube /results URLs.
  3. Choose video results, channel-only search, or both.
  4. Set the limits for each source and the whole run.
  5. You can set subscriber limits, a minimum video count, verified-only results, or channel URLs to exclude.
  6. Run the Actor and open the dataset.

The Actor saves the first eligible match for a channel right away. If the same channel appears again from any source, that later match is ignored. The saved row is not changed.

⚙️ Input

FieldTypeWhat it does
searchTermsstring arraySearches up to 500 topics, products, niches, or creator types.
searchTermsFilesstring arrayLoads terms from up to 20 TXT or CSV files. All inputs together can hold up to 500 terms.
searchUrlsobject arrayRuns public youtube.com/results URLs again. Each object has a url.
discoveryModestringUses video results, channel-only search, or both.
maxChannelsPerSearchTermintegerStops after this many saved channels for each keyword or URL. Leave it empty to return all available channels until that source is exhausted.
maxTotalResultsintegerStops after this many saved channels in the run. Leave it empty to return all available channels until every source is exhausted.
minSubscribersintegerSaves channels at or above this public subscriber count. Channels with no public count are skipped.
maxSubscribersintegerSaves channels at or below this public subscriber count. Channels with no public count are skipped.
minVideosintegerSaves channels at or above this public video count. Channels with no public video count are skipped.
verifiedOnlybooleanSaves only channels YouTube marks as verified.
excludedChannelsobject arrayLeaves out YouTube handle URLs or /channel/UC... URLs. Each object has a url.
languageHintstringSets a two-letter YouTube page language hint, such as en.
countryHintstringSets a two-letter YouTube country hint, such as US.

Example input from a successful run:

{
"searchTerms": [
"coffee roasting"
],
"discoveryMode": "both",
"maxChannelsPerSearchTerm": 10,
"maxTotalResults": 10,
"verifiedOnly": false,
"languageHint": "en",
"countryHint": "US"
}

🧾 Output

Each row has the same channel shape. sourceVideo is an object when a video result first showed the channel. It is null for a channel-only match.

FieldTypeWhat it does
channel.idstringStable YouTube channel ID.
channel.handlestring or nullPublic handle.
channel.titlestring or nullPublic channel name.
channel.urlstring or nullMain public channel URL.
channel.descriptionstring or nullPublic channel description.
channel.isVerifiedboolean or nullSays if YouTube marks the channel as verified.
channel.isFamilySafeboolean or nullYouTube's public family-safety signal.
channel.isUnlistedboolean or nullYouTube's public unlisted signal.
channel.isNoindexboolean or nullYouTube's public search-indexing signal.
metrics.subscribersinteger or nullPublic subscriber count.
metrics.subscriberTextstring or nullSubscriber text shown by YouTube.
metrics.subscriberCountIsExactboolean or nullSays if the count is exact, not shortened.
metrics.videosinteger or nullPublic video count.
metrics.videoTextstring or nullVideo count text shown by YouTube.
metrics.totalViewsinteger or nullTotal public channel views.
metrics.totalViewTextstring or nullTotal view text shown by YouTube.
profile.countrystring or nullCountry shown on the channel.
profile.joinedTextstring or nullJoin text shown by YouTube.
profile.keywordsstring or nullChannel keyword text.
profile.tagsstring arrayPublic channel tags.
profile.rssUrlstring or nullPublic channel video-feed URL.
profile.tabsobject arrayPublic channel tabs.
profile.tabs.titlestringTab name.
profile.tabs.urlstringPublic tab URL.
profile.externalLinksstring arrayPublic links shared by the channel.
profile.availableCountryCodesstring arrayCountry codes where the channel is available.
profile.ownerUrlsstring arrayPublic owner URLs listed by YouTube.
profile.alternateUrlsstring arrayOther public URLs for the channel.
images.thumbnailUrlstring or nullPublic thumbnail URL.
images.avatarUrlstring or nullMain public avatar URL.
images.bannerUrlstring or nullPublic banner URL.
images.avatarImagesobject arrayAvailable public avatar sizes.
images.avatarImages.urlstringPublic avatar image URL.
images.avatarImages.widthinteger or nullImage width in pixels.
images.avatarImages.heightinteger or nullImage height in pixels.
discoverySource.sourceKindstringSubmitted source type: keyword or search_url.
discoverySource.valuestringKeyword or search URL that first found the channel.
discoverySource.discoverySurfacestringFirst result type: video_results or channel_filter.
discoverySource.rankintegerRank on that discovery surface, starting at 1.
discoverySource.sourceUrlstringResults URL where the first match appeared.
sourceVideoobject or nullVideo that first showed the channel, or null for a channel-only match.
sourceVideo.videoIdstringStable source video ID.
sourceVideo.titlestring or nullSource video title.
sourceVideo.urlstringPublic source video URL.
sourceVideo.publishedTextstring or nullPublication text shown by YouTube.
sourceVideo.viewTextstring or nullView-count text shown by YouTube.

💳 Pricing

This Actor uses pay-per-event pricing. You are charged once for each eligible public channel saved to the dataset. Channel profile details are included. Empty searches, failed attempts, excluded channels, filtered channels, and no-result work are not charged as saved channels. Use the source, run, and Apify charge limits to bound a run.

🔌 Integrations

Use dataset exports, the Apify API, schedules, webhooks, and integrations to send channel rows to a spreadsheet, database, or workflow.

❓ FAQ

How do maximum subscribers and hidden counts work?

Set maxSubscribers to skip channels above your chosen public count. You can use it with minSubscribers to make a range. If either subscriber limit is set, channels with no public subscriber count are skipped.

How do I exclude channels I already know?

Add their YouTube handle URLs or /channel/UC... URLs to excludedChannels. The Actor resolves the channel identity, so matching does not rely only on the URL text.

Can the same channel appear more than once?

No. The first eligible match is saved at once. Later matches for the same channel are ignored, even when they come from another keyword or search URL. They do not change the saved row.

Why is a subscriber count approximate or missing?

YouTube may shorten public counts, such as 19.7K, or hide them. Check subscriberCountIsExact and subscriberText. Missing values stay null.

Can I paste YouTube search-result URLs?

Yes. Add public YouTube /results URLs alone or with keywords and uploaded lists.

Does it return every requested channel?

Not always. YouTube may limit, remove, localize, or deduplicate public search data. Your filters and limits can also reduce saved rows.

Does it scrape videos?

It saves source-video evidence only when a video result first exposed a channel. It does not export full channel video lists, comments, or transcripts.

📝 Changelog

  • 1.0: Added search URL input, first-match channel output, source-video evidence, public profile data, subscriber range filters, and channel exclusions.
  • 0.1: Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré