YouTube Channel Search Scraper avatar

YouTube Channel Search Scraper

Pricing

from $0.40 / 1,000 channels

Go to Apify Store
YouTube Channel Search Scraper

YouTube Channel Search Scraper

Find public YouTube channels from search terms or public YouTube search-result URLs. Review channel IDs, handles, public metrics, and profile details. Each channel row keeps the first eligible search match.

Pricing

from $0.40 / 1,000 channels

Rating

5.0

(2)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

9

Bookmarked

1.6K

Total users

186

Monthly active users

a day 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 eligible match saved for each channel.

📦 Review YouTube channel data

Each dataset row is one unique saved public channel with:

  • channel: ID, handle, name, URL, description, verification, and family-safe status
  • metrics: subscriber, video, and total view counts
  • profile: country, joined text, tags, tabs, public links, public emails the channel writes in its profile text, available country codes, and alternate URLs
  • images: banner and avatar sizes
  • discoverySource: the keyword or search URL, discovery surface, rank, and results URL for the first saved match
  • sourceVideo: the video from the first saved match, or null when channel-only search saved it

Optional values can be null or empty when YouTube does not show them. profile.tags is always an array and is empty when YouTube exposes no tags.

  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 each stable channel ID right away. If the same channel appears again from another keyword, URL, handle, ID, or discovery surface, that later match is ignored. The saved row keeps its first discovery evidence.

⚙️ Input

FieldTypeWhat it does
searchTermsstring arraySearches up to 500 topics, products, niches, or creator types, including file terms. Repeated terms are used once. If all search inputs are omitted, the Actor searches coffee roasting.
searchTerms[]stringOne topic, product, niche, or creator type to search.
searchTermsFilesstring arrayLoads terms from up to 20 TXT or CSV files. All inputs together can hold up to 500 terms.
searchTermsFiles[]stringOne TXT or CSV file. Use one term per TXT line. CSV files can use a searchTerm, term, query, keyword, or keywords column. Without one, each cell is a term. File terms past the shared 500-term limit are not used.
searchUrlsobject arrayRuns public youtube.com/results URLs again. It keeps the search words and ignores the URL's language, country, and filter. Set those with Search language, Search country, and Find channels by. Each object has a url.
searchUrls[].urlstringOne public YouTube search-result URL to run.
discoveryModestringAccepts videoResults, channelFilter, or both. The form pre-fills both, also the runtime fallback if omitted. With both, video results run first and can use the per-search limit before channel-only search starts. The public schema requires this field.
maxChannelsPerSearchTermintegerStops each keyword or URL after this many eligible channels. A channel saved from an earlier search still counts here but is not saved twice. Filtered and excluded channels do not count. Use 0 or leave it empty for no per-search limit.
maxTotalResultsintegerStops after this many unique saved channels in the run. Use 0 or leave it empty for no total limit. Filtered and excluded channels do not count.
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.
verifiedOnlybooleanSet true to save only channels YouTube marks as verified. Defaults to false.
excludedChannelsstring listLeaves out YouTube channels identified by a bare handle, channel ID, or full channel URL.
languageHintstringSets a two-letter YouTube page language hint. Defaults to en for English. Codes are case-insensitive. A hint does not ensure that every channel uses that language.
countryHintstringSets a two-letter YouTube country hint. Defaults to US for the United States. Codes are case-insensitive. A hint does not filter channels by their profile country.

The Input tab pre-fills both work-limit fields with 10 for a convenient first run. The schema has no default for either field. If an API, CLI, or scheduled run omits a field, that boundary is not added. Zero also removes that limit. The Actor tries to read all available matches within the limits, but a source access failure or a platform run limit can stop work earlier.

Subscriber and video-count filters accept whole numbers from 0 upward. They are off when omitted. Search files, search URLs, and excluded channels are empty when omitted. YouTube search URLs must include a non-empty search_query.

Example input from a successful current-beta default-input run

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

🧾 Output

Each saved row has one of two forms. A video-result match has a sourceVideo object. A channel-only match has sourceVideo: null. Both forms keep the first eligible discovery evidence.

Channel row with source-video evidence

FieldTypeWhat it does
channel.idstringStable YouTube channel ID.
channel.handlestring or nullPublic handle.
channel.titlestringPublic 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.
metrics.subscribersinteger or nullPublic subscriber count when shown. YouTube rounds large counts, so this number can be approximate.
metrics.videosinteger or nullPublic video count when shown.
metrics.totalViewsinteger or nullTotal public view count when shown.
profile.countrystring or nullCountry shown on the channel.
profile.joinedTextstring or nullJoin text shown by YouTube.
profile.tagsstring arrayPublic channel tags, when shown by YouTube.
profile.tabsobject arrayPublic channel tabs.
profile.tabs.titlestringTab name.
profile.tabs.urlstringPublic tab URL.
profile.externalLinksstring arrayPublic links shared by the channel.
profile.emailsstring arrayEmail addresses the channel writes in its own public profile text. Empty when none is written there.
profile.availableCountryCodesstring arrayCountry codes where the channel is available.
profile.alternateUrlsstring arrayOther public URLs for the channel.
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.valuestringKeyword or search URL for the first saved match.
discoverySource.discoverySurfacestringResult type of the first saved match: video_results or channel_filter.
discoverySource.rankintegerPosition in the YouTube results list, starting at 1. Video results and channel-only search are numbered separately. Numbers keep going across all pages of that search. Results removed by your filters or excluded channels still get a number.
discoverySource.sourceUrlstringResults URL where the first saved match appeared.
sourceVideoobjectVideo from the first saved match when a video result first showed the channel.
sourceVideo.videoIdstringStable source video ID.
sourceVideo.urlstringPublic URL of the matching YouTube video.
sourceVideo.titlestring or nullSource video title.
sourceVideo.publishedTextstring or nullPublication text shown by YouTube.
sourceVideo.viewTextstring or nullView-count text shown by YouTube.

Example channel row with source-video evidence

This row is real data from a recent successful run of this Actor.

{
"channel": {
"id": "UCMb0O2CdPBNi-QqPk5T3gsQ",
"handle": "@jameshoffmann",
"title": "James Hoffmann",
"url": "https://www.youtube.com/@jameshoffmann",
"description": "Hi! My name is James, and I make videos about anything and everything to do with coffee, occasionally food and sometimes business/entrepreneurship. I create how-tos, guides, reviews, vlogs, video essays and mini-documentary films. In the real world, I've started a few companies, I wrote \"The World Atlas of Coffee\" and \"How To Make The Best Coffee At Home\". I do a little advisory work for startups too.\n\nIf you want to get in touch, drop me a line but please read these two things first:\n\n1. I don't do paid reviews. I have a Patreon that helps me buy the products I want to review to prevent bias (then I give them away!)\n2. I get a lot of email, so sadly I can't help with queries about which equipment you should buy.\n\nTO GET IN TOUCH PLEASE REACH OUT VIA WEBSITE: https://www.jameshoffmann.co.uk/contact-me\nManagement: Ziggurat XYZ",
"isVerified": true,
"isFamilySafe": true
},
"metrics": {
"subscribers": 2570000,
"videos": 412,
"totalViews": 399111475
},
"profile": {
"country": "United Kingdom",
"joinedText": "Joined Dec 8, 2014",
"tags": [
"coffee",
"james hoffmann",
"jimseven",
"james hoffman"
],
"tabs": [
{
"title": "Home",
"url": "https://www.youtube.com/@jameshoffmann/featured"
},
{
"title": "Videos",
"url": "https://www.youtube.com/@jameshoffmann/videos"
},
{
"title": "Shorts",
"url": "https://www.youtube.com/@jameshoffmann/shorts"
},
{
"title": "Live",
"url": "https://www.youtube.com/@jameshoffmann/streams"
},
{
"title": "Playlists",
"url": "https://www.youtube.com/@jameshoffmann/playlists"
},
{
"title": "Posts",
"url": "https://www.youtube.com/@jameshoffmann/posts"
},
{
"title": "Store",
"url": "https://www.youtube.com/@jameshoffmann/store"
},
{
"title": "Search",
"url": "https://www.youtube.com/@jameshoffmann/search"
}
],
"externalLinks": [
"https://www.jameshoffmann.co.uk/contact-me",
"http://linktree.com/jimseven"
],
"emails": [],
"availableCountryCodes": [
"BH",
"GG",
"ZM",
"NI",
"AG",
"AQ",
"EG",
"JP",
"NP",
"FI",
"JO",
"KH",
"MC",
"MR",
"GR",
"TO",
"NG",
"NO",
"ZA",
"MP",
"PW",
"KI",
"AD",
"MY",
"PE",
"NC",
"CO",
"LU",
"MK",
"TG",
"AW",
"FR",
"LY",
"TM",
"IE",
"CY",
"BZ",
"SL",
"IL",
"CR",
"AU",
"NE",
"EC",
"MZ",
"NR",
"FM",
"TJ",
"GW",
"SO",
"CU",
"JE",
"PR",
"MU",
"AX",
"SS",
"DM",
"PF",
"DK",
"ES",
"KG",
"DO",
"UM",
"GL",
"LT",
"PK",
"UG",
"MX",
"SE",
"GI",
"IS",
"CN",
"IN",
"IQ",
"MD",
"MF",
"NA",
"UY",
"KW",
"UZ",
"NU",
"KP",
"PN",
"CA",
"HN",
"TZ",
"PY",
"CX",
"HK",
"AM",
"DE",
"BE",
"LK",
"GD",
"GM",
"TT",
"GU",
"BL",
"LA",
"BN",
"BT",
"MT",
"SJ",
"SY",
"CM",
"MQ",
"OM",
"PA",
"PG",
"AZ",
"SA",
"ST",
"AS",
"MS",
"BS",
"RO",
"AR",
"VG",
"BO",
"CC",
"DZ",
"CW",
"PL",
"CZ",
"GH",
"SB",
"CF",
"AE",
"ID",
"KR",
"IT",
"WS",
"CH",
"MG",
"CI",
"EE",
"ET",
"SD",
"GT",
"EH",
"GE",
"NL",
"IR",
"VU",
"PT",
"VE",
"SZ",
"RW",
"ER",
"MW",
"KE",
"BI",
"WF",
"FO",
"BR",
"GA",
"BW",
"LB",
"CK",
"QA",
"BA",
"ML",
"SC",
"SG",
"VN",
"KM",
"BM",
"SH",
"US",
"SR",
"SX",
"TC",
"SV",
"LR",
"AT",
"MH",
"TK",
"BB",
"DJ",
"NZ",
"GS",
"KN",
"CV",
"SM",
"TV",
"VI",
"SN",
"LV",
"AF",
"AI",
"BV",
"HM",
"HU",
"VA",
"VC",
"BG",
"CD",
"AL",
"FK",
"GQ",
"SK",
"HR",
"NF",
"PS",
"GB",
"TF",
"KZ",
"GF",
"TN",
"ZW",
"GY",
"LI",
"MV",
"BJ",
"BY",
"TL",
"IM",
"IO",
"MM",
"KY",
"LS",
"YT",
"RU",
"RS",
"BF",
"RE",
"BD",
"PM",
"CG",
"CL",
"TD",
"TH",
"JM",
"PH",
"YE",
"MO",
"TR",
"UA",
"SI",
"FJ",
"AO",
"ME",
"GP",
"MA",
"BQ",
"TW",
"GN",
"LC",
"HT",
"MN"
],
"alternateUrls": [
"https://m.youtube.com/@jameshoffmann/about",
"https://www.youtube.com/feeds/videos.xml?channel_id=UCMb0O2CdPBNi-QqPk5T3gsQ",
"android-app://com.google.android.youtube/http/www.youtube.com/channel/UCMb0O2CdPBNi-QqPk5T3gsQ",
"ios-app://544007664/vnd.youtube/www.youtube.com/channel/UCMb0O2CdPBNi-QqPk5T3gsQ"
]
},
"images": {
"bannerUrl": null,
"avatarImages": [
{
"url": "https://yt3.googleusercontent.com/2k3-P8cX-0sawteUmQSzaQb7pLaCOKcNtEYDEXy1y8Y5wv97Ecgzhgg50b6NYCwxm677h9bT=s72-c-k-c0x00ffffff-no-rj",
"width": 72,
"height": 72
},
{
"url": "https://yt3.googleusercontent.com/2k3-P8cX-0sawteUmQSzaQb7pLaCOKcNtEYDEXy1y8Y5wv97Ecgzhgg50b6NYCwxm677h9bT=s120-c-k-c0x00ffffff-no-rj",
"width": 120,
"height": 120
},
{
"url": "https://yt3.googleusercontent.com/2k3-P8cX-0sawteUmQSzaQb7pLaCOKcNtEYDEXy1y8Y5wv97Ecgzhgg50b6NYCwxm677h9bT=s160-c-k-c0x00ffffff-no-rj",
"width": 160,
"height": 160
}
]
},
"discoverySource": {
"value": "coffee roasting",
"discoverySurface": "video_results",
"rank": 1,
"sourceUrl": "https://www.youtube.com/results?search_query=coffee+roasting&hl=en&gl=US"
},
"sourceVideo": {
"videoId": "N6BJVM5tvnw",
"url": "https://www.youtube.com/watch?v=N6BJVM5tvnw",
"title": "Coffee Roasting Explained",
"publishedText": "3y ago",
"viewText": "2,158,086 views"
}
}

Channel row from channel-only search

FieldTypeWhat it does
channel.idstringStable YouTube channel ID.
channel.handlestring or nullPublic handle.
channel.titlestringPublic 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.
metrics.subscribersinteger or nullPublic subscriber count when shown. YouTube rounds large counts, so this number can be approximate.
metrics.videosinteger or nullPublic video count when shown.
metrics.totalViewsinteger or nullTotal public view count when shown.
profile.countrystring or nullCountry shown on the channel.
profile.joinedTextstring or nullJoin text shown by YouTube.
profile.tagsstring arrayPublic channel tags, when shown by YouTube.
profile.tabsobject arrayPublic channel tabs.
profile.tabs.titlestringTab name.
profile.tabs.urlstringPublic tab URL.
profile.externalLinksstring arrayPublic links shared by the channel.
profile.emailsstring arrayEmail addresses the channel writes in its own public profile text. Empty when none is written there.
profile.availableCountryCodesstring arrayCountry codes where the channel is available.
profile.alternateUrlsstring arrayOther public URLs for the channel.
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.valuestringKeyword or search URL for the first saved match.
discoverySource.discoverySurfacestringResult type of the first saved match: video_results or channel_filter.
discoverySource.rankintegerPosition in the YouTube results list, starting at 1. Video results and channel-only search are numbered separately. Numbers keep going across all pages of that search. Results removed by your filters or excluded channels still get a number.
discoverySource.sourceUrlstringResults URL where the first saved match appeared.
sourceVideonullAlways null when channel-only search first finds the channel.

Example channel row from channel-only search

This row is real data from a recent successful run of this Actor.

{
"channel": {
"id": "UC5xchx_vufvEIgRXgiXCjwQ",
"handle": "@CoffeeRoasting",
"title": "Coffee Roasting with Roast Rebels",
"url": "https://www.youtube.com/@CoffeeRoasting",
"description": "Roasting your own coffee - it's easier than you probably think. Here you learn how to do it. On the one hand, the choice of the right green coffee for you. Tastes vary and depending on how you prepare the coffee, a Yellow Bourbon from Brazil (espresso) or a Yirgacheffe from Ethiopia (filter coffee) is better suited.\n\nOn this channel you will also get to know the different roasting machines and other equipment and learn how to use them best. With the right tips, you will be able to do your first roasts very well. \n\nIn our online shop for coffee home roasters you will find all the equipment and high-quality green coffees you need to get started quickly and easily:\nhttps://roastrebels.com/en\n\nBest regards\nIngo from Roast Rebels\n\nP.S. Subscribe to the channel: in the coming weeks we will publish new tutorials regularly.",
"isVerified": false,
"isFamilySafe": true
},
"metrics": {
"subscribers": 48600,
"videos": 178,
"totalViews": 2192137
},
"profile": {
"country": "Switzerland",
"joinedText": "Joined Sep 12, 2019",
"tags": [
"Coffee Roasting",
"Home Roasting",
"Home Coffee Roasting",
"Green Coffee Beans"
],
"tabs": [
{
"title": "Home",
"url": "https://www.youtube.com/@CoffeeRoasting/featured"
},
{
"title": "Videos",
"url": "https://www.youtube.com/@CoffeeRoasting/videos"
},
{
"title": "Shorts",
"url": "https://www.youtube.com/@CoffeeRoasting/shorts"
},
{
"title": "Playlists",
"url": "https://www.youtube.com/@CoffeeRoasting/playlists"
},
{
"title": "Posts",
"url": "https://www.youtube.com/@CoffeeRoasting/posts"
},
{
"title": "Search",
"url": "https://www.youtube.com/@CoffeeRoasting/search"
}
],
"externalLinks": [
"https://roastrebels.com/en",
"https://roastrebels.com/en/"
],
"emails": [],
"availableCountryCodes": [
"OM",
"UG",
"GI",
"TM",
"PF",
"FJ",
"MH",
"HR",
"IM",
"LS",
"SO",
"EG",
"SS",
"PM",
"AL",
"NZ",
"PH",
"BE",
"TH",
"TV",
"PR",
"CD",
"GR",
"MS",
"PG",
"SB",
"HK",
"JO",
"PL",
"BT",
"ER",
"GA",
"RE",
"MQ",
"MV",
"NO",
"PK",
"QA",
"SY",
"GW",
"BV",
"ET",
"NF",
"DK",
"GL",
"LK",
"AM",
"GB",
"EH",
"GM",
"YE",
"VU",
"AO",
"SZ",
"TD",
"CA",
"HU",
"GU",
"TF",
"BJ",
"BS",
"SV",
"AI",
"NR",
"BY",
"CL",
"CW",
"PT",
"SJ",
"BG",
"IL",
"BB",
"FI",
"TW",
"HT",
"MN",
"GG",
"TN",
"VA",
"VE",
"DM",
"CC",
"AE",
"CO",
"AU",
"PE",
"GY",
"ID",
"TG",
"RW",
"LV",
"BF",
"BQ",
"RU",
"KE",
"GD",
"CG",
"MO",
"SL",
"MZ",
"SM",
"DZ",
"BN",
"AD",
"NC",
"IE",
"KH",
"MK",
"MC",
"GQ",
"MA",
"SG",
"AZ",
"UA",
"IO",
"CU",
"EE",
"CN",
"KZ",
"YT",
"AW",
"RO",
"IT",
"ZM",
"BR",
"DE",
"CK",
"GH",
"KW",
"TC",
"CH",
"CX",
"NP",
"VN",
"ML",
"SH",
"LB",
"BW",
"AR",
"ST",
"FM",
"ZA",
"SR",
"KN",
"KM",
"EC",
"SN",
"CY",
"IS",
"GF",
"TZ",
"AF",
"SX",
"ES",
"AS",
"TR",
"LY",
"PA",
"TO",
"TK",
"SI",
"DJ",
"PY",
"LU",
"UM",
"BL",
"UY",
"MD",
"ME",
"JP",
"RS",
"TJ",
"US",
"VC",
"VG",
"BZ",
"TT",
"MY",
"JM",
"LR",
"CI",
"KI",
"NL",
"ZW",
"FO",
"BI",
"KP",
"LT",
"SK",
"MG",
"MP",
"IR",
"KG",
"NA",
"NI",
"GS",
"NU",
"SA",
"FR",
"GN",
"LA",
"CR",
"AT",
"LC",
"GT",
"SC",
"WS",
"GE",
"MR",
"PW",
"MU",
"NE",
"BA",
"PS",
"BM",
"BO",
"SE",
"VI",
"GP",
"CZ",
"MT",
"HN",
"CF",
"KR",
"JE",
"MF",
"AX",
"MX",
"AG",
"HM",
"FK",
"BD",
"IN",
"CM",
"BH",
"WF",
"MW",
"IQ",
"CV",
"KY",
"DO",
"LI",
"NG",
"PN",
"AQ",
"MM",
"SD",
"TL",
"UZ"
],
"alternateUrls": [
"https://m.youtube.com/@CoffeeRoasting/about",
"https://www.youtube.com/feeds/videos.xml?channel_id=UC5xchx_vufvEIgRXgiXCjwQ",
"android-app://com.google.android.youtube/http/www.youtube.com/channel/UC5xchx_vufvEIgRXgiXCjwQ",
"ios-app://544007664/vnd.youtube/www.youtube.com/channel/UC5xchx_vufvEIgRXgiXCjwQ"
]
},
"images": {
"bannerUrl": "https://yt3.googleusercontent.com/vTehv-cgN3fX_7RfFefe4GIIUSZ_rUW8yNkQC7ZpBZz5-P86Cr_Zj3lB3xKLzc1TBgDfQmT1ag=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
"avatarImages": [
{
"url": "https://yt3.googleusercontent.com/0josB4O3Nd_gaKjwd0-ne1HXWSBuwJVK4xWIS_mEJRkIhEmNHWdNePqXsVVUikDdaBbM0bXnew=s72-c-k-c0x00ffffff-no-rj",
"width": 72,
"height": 72
},
{
"url": "https://yt3.googleusercontent.com/0josB4O3Nd_gaKjwd0-ne1HXWSBuwJVK4xWIS_mEJRkIhEmNHWdNePqXsVVUikDdaBbM0bXnew=s120-c-k-c0x00ffffff-no-rj",
"width": 120,
"height": 120
},
{
"url": "https://yt3.googleusercontent.com/0josB4O3Nd_gaKjwd0-ne1HXWSBuwJVK4xWIS_mEJRkIhEmNHWdNePqXsVVUikDdaBbM0bXnew=s160-c-k-c0x00ffffff-no-rj",
"width": 160,
"height": 160
}
]
},
"discoverySource": {
"value": "coffee roasting",
"discoverySurface": "channel_filter",
"rank": 1,
"sourceUrl": "https://www.youtube.com/results?search_query=coffee+roasting&hl=en&gl=US&sp=EgIQAg%3D%3D"
},
"sourceVideo": null
}

💳 Pricing

This Actor uses pay-per-event pricing. One event is charged for each unique eligible public channel saved to the dataset. A repeated match does not create another row or event. See the Store for the current price for your plan.

🔌 Integrations

Open the run's default dataset to review the saved channel rows.

❓ FAQ

Can a successful run leave a search unfinished?

Yes. A run can save valid channels and still warn that it could not finish a submitted source. It keeps saved rows and continues other searches. Check the run log for warnings about unfinished sources. A successful status and a saved-row count do not prove that every source was fully processed.

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 one YouTube handle, channel ID, or full channel URL to excludedChannels for each channel to leave out. 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 rounds large counts, so subscribers can be an approximate number. If YouTube does not show a count, subscribers is null.

Can I paste YouTube search-result URLs?

Yes. Add public YouTube /results URLs alone or with search terms or uploaded search-term files.

What happens when I leave a result limit empty?

An empty limit or 0 adds no boundary for that limit. The Actor tries to read all available matches. Source access failures and platform run limits can still stop work before a source is finished.

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 when the first saved match comes from a video result. It does not export full channel video lists, comments, or transcripts.

Do I need to sign in to YouTube?

No. The Actor reads public YouTube search and channel pages, so you do not need a YouTube login, cookies, or an API key.

📝 Changelog

v6.0 (24-10-2026)

  • excludedChannels now uses strings so you can enter full channel URLs, bare handles, or channel IDs. Replace each {"url":"..."} object in saved inputs with its URL string.
  • Video-result rows now include sourceVideo.url, the public link to the matching video.
  • Rows now need a non-empty channel.title. Channels with no name in either the search result or profile are skipped.
  • Set maxChannelsPerSearchTerm or maxTotalResults to 0 to remove that limit.
  • Search URLs now accept m.youtube.com/results links.
  • Reliability improvements.

v5.0 (20-10-2026)

  • Results no longer include sourceVideo.url because it can be made from sourceVideo.videoId. Update exports that read the removed key. For a video link, add the ID to https://www.youtube.com/watch?v=.
  • Counts now read more local number units. A count such as 1.4 with no known number unit is left empty.
  • Public profile links keep their destination when YouTube wraps them in a redirect link. Links back to YouTube are still left out.
  • Reliability improvements.

v4.0 (18-10-2026)

  • Results no longer include these fields: channel.isUnlisted, channel.isNoindex, metrics.subscriberText, metrics.videoText, metrics.totalViewText, profile.keywords, profile.rssUrl, profile.ownerUrls, images.thumbnailUrl, images.avatarUrl, and discoverySource.sourceKind. Update exports that read these keys. There are no direct replacements.
  • Adds profile.emails, the email addresses that the channel writes in its public profile text.
  • Two channels from the same search and result type no longer share a discoverySource.rank.
  • Subscriber counts written in lakh or crore, such as 1.38 lakh, are now converted to the full number, such as 138,000.
  • When the About page header is available, channels with no verified badge in search results or on their About page return isVerified: false instead of null.
  • The Verified channels only option uses the same verified badge check.
  • Reliability improvements.

v3.0 (07-10-2026)

  • Channel profile keywords and tags no longer repeat YouTube's generic keyword list across unrelated channels.
  • Results no longer include metrics.subscriberCountIsExact. Update exports that read it. There is no replacement for the exact-count flag.

v2.0

  • More reliable large searches with clearer first-match evidence.
  • Large multi-source searches preserve completed rows when a run must stop.
  • Each saved channel has one clear first-match discovery record with optional source-video evidence. duplicateHandling was removed to keep one saved row per channel. Remove this setting from saved inputs. Separate rows for each source are no longer available, and there is no replacement for that option.

v1.0

  • Search by public YouTube search-result URL.
  • Get the first matching channel output. matchedSources is replaced by the discoverySource object to keep one first match. Update exports to read this object instead of an array; it does not hold every former match.
  • See source-video evidence for the first match. sourceVideos is replaced by sourceVideo, one object or null, to keep only the video from that match. Update exports for this new shape; it does not hold every former video.
  • Get public profile data.
  • Filter channels by subscriber range.
  • Exclude channels from the results.

v0.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é