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.5K

Total users

191

Monthly active users

0.052 hours

Issues response

6 hours 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.
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 with search terms.
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 Page language, Page country, and Find channels by. Each object has a url.
searchUrls[].urlstringOne public YouTube search-result URL to run.
discoveryModestringUses video results, channel-only search, or both.
maxChannelsPerSearchTermintegerStops each keyword or URL at this channel count. Repeat matches can count without being saved again. See the field help for how repeats and filters count. 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.
excludedChannels[].urlstringOne YouTube handle URL or /channel/UC... URL to leave out.
languageHintstringSets a two-letter YouTube page language hint, such as en.
countryHintstringSets a two-letter YouTube country hint, such as US.

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. The Actor continues until the matching source or the whole run is exhausted.

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.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.
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.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": 411,
"totalViews": 398313473
},
"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": [
"SB",
"SE",
"VC",
"MP",
"SL",
"VI",
"VU",
"HR",
"GI",
"PM",
"TZ",
"AE",
"MG",
"MS",
"UA",
"GM",
"WS",
"KN",
"NC",
"CF",
"PG",
"EG",
"GY",
"LT",
"BT",
"MO",
"ET",
"NR",
"GL",
"NZ",
"ZA",
"BG",
"KZ",
"AD",
"BF",
"NP",
"ME",
"GA",
"HK",
"CW",
"MC",
"SR",
"MH",
"AL",
"MR",
"OM",
"AQ",
"HM",
"SA",
"SK",
"RO",
"PR",
"HU",
"VA",
"CN",
"AX",
"HN",
"NF",
"SX",
"CC",
"SO",
"LB",
"PH",
"CV",
"QA",
"PY",
"IS",
"NU",
"AG",
"SY",
"MT",
"JO",
"MN",
"MU",
"CL",
"CY",
"GU",
"BJ",
"GD",
"YE",
"SG",
"CK",
"GH",
"SN",
"PN",
"BO",
"CH",
"GW",
"UY",
"CO",
"EH",
"SD",
"IN",
"AM",
"BA",
"CD",
"MD",
"FM",
"AW",
"NI",
"TK",
"BI",
"CZ",
"MM",
"TR",
"BL",
"CU",
"FO",
"LY",
"GB",
"TH",
"LS",
"KY",
"AI",
"LU",
"FK",
"FI",
"RE",
"PK",
"DJ",
"AR",
"VN",
"IM",
"KE",
"RU",
"CA",
"GE",
"MW",
"TG",
"TW",
"KM",
"JM",
"KW",
"TO",
"AT",
"ML",
"MV",
"BZ",
"KR",
"CR",
"PT",
"TM",
"NA",
"PF",
"TT",
"LC",
"LA",
"LI",
"PL",
"TV",
"KP",
"MQ",
"GQ",
"GR",
"IR",
"PE",
"LV",
"HT",
"TL",
"VG",
"IO",
"EE",
"SH",
"ST",
"PW",
"NL",
"BH",
"BQ",
"DM",
"BM",
"SV",
"TJ",
"CG",
"UG",
"NG",
"ZW",
"WF",
"AF",
"SZ",
"MY",
"IE",
"BN",
"TN",
"GT",
"MZ",
"PA",
"MX",
"KG",
"IL",
"MA",
"PS",
"TF",
"UM",
"RS",
"AS",
"BY",
"SJ",
"AO",
"EC",
"GS",
"CM",
"SS",
"ES",
"BS",
"KI",
"GF",
"ZM",
"JP",
"BR",
"MF",
"VE",
"IT",
"DZ",
"SI",
"AU",
"RW",
"TD",
"YT",
"CI",
"GG",
"DK",
"GP",
"KH",
"MK",
"GN",
"BV",
"TC",
"BE",
"NO",
"DE",
"ER",
"UZ",
"FR",
"LK",
"NE",
"DO",
"BB",
"SC",
"US",
"AZ",
"ID",
"IQ",
"SM",
"CX",
"JE",
"BD",
"BW",
"LR",
"FJ"
],
"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",
"title": "Coffee Roasting Explained",
"publishedText": "3y ago",
"viewText": "2,153,328 views"
}
}

Channel row from channel-only search

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.
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": "UC3s4wfa7X33w2S2YD5aBFgA",
"handle": "@CryptoGlobalNewsTeam",
"title": "Crypto Global News Team",
"url": "https://www.youtube.com/@CryptoGlobalNewsTeam",
"description": "Crypto Global News are putting the fun back into the news, a team of industry professionals have teamed\nup to bring to you Breaking News as it happens, Reviews, Interviews and much much more. \n\nSubscribe and hit the notification bell, become part of the community! \n\nFor all business enquiries please contact: info@cryptognt.com",
"isVerified": false,
"isFamilySafe": true
},
"metrics": {
"subscribers": 23500,
"videos": 247,
"totalViews": 1748365
},
"profile": {
"country": "United States",
"joinedText": "Joined May 19, 2018",
"tags": [
"Cryptocurrency news",
"Cryptocurrency mining",
"Cryptocurrency reddit",
"Cryptocurrency list",
"Cryptocurrency stocks",
"Cryptocurrency exchange",
"Bitcoin news",
"bitcoin price",
"bitcoin to use",
"bitcoin mining",
"Ethereum price",
"Ethereum value",
"Ethereum classic",
"Ethereum to use",
"Ethereum mining",
"Ripple price",
"Ripple reddit",
"Rippke price chart",
"trading",
"forex"
],
"tabs": [
{
"title": "Home",
"url": "https://www.youtube.com/@CryptoGlobalNewsTeam/featured"
},
{
"title": "Videos",
"url": "https://www.youtube.com/@CryptoGlobalNewsTeam/videos"
},
{
"title": "Playlists",
"url": "https://www.youtube.com/@CryptoGlobalNewsTeam/playlists"
},
{
"title": "Search",
"url": "https://www.youtube.com/@CryptoGlobalNewsTeam/search"
}
],
"externalLinks": [
"https://twitter.com/Cryptognt",
"https://t.me/CryptoGlobalNewsTeam",
"http://www.cryptognt.com"
],
"emails": [
"info@cryptognt.com"
],
"availableCountryCodes": [
"AR",
"JM",
"AI",
"ZM",
"ET",
"PG",
"BS",
"ME",
"TC",
"LI",
"SZ",
"MM",
"PH",
"SN",
"UM",
"GH",
"NO",
"EH",
"VI",
"FK",
"KP",
"NF",
"PM",
"UA",
"PN",
"PT",
"SV",
"BJ",
"RW",
"IT",
"KN",
"VN",
"BW",
"KG",
"NE",
"TD",
"TK",
"BQ",
"PE",
"ST",
"GR",
"TG",
"AX",
"AD",
"AL",
"OM",
"IN",
"SM",
"HN",
"UZ",
"CY",
"YT",
"KY",
"SC",
"BB",
"NI",
"ML",
"TR",
"CF",
"IR",
"EE",
"IL",
"TZ",
"PF",
"BR",
"FR",
"DK",
"MN",
"BL",
"VE",
"GF",
"NA",
"AE",
"WS",
"GT",
"MF",
"BA",
"FJ",
"GM",
"LC",
"QA",
"RU",
"CK",
"SY",
"TN",
"RE",
"HR",
"GB",
"FM",
"KR",
"LT",
"MU",
"BZ",
"GW",
"MS",
"TW",
"SA",
"WF",
"MY",
"MP",
"NP",
"DO",
"IO",
"CH",
"AG",
"CO",
"TL",
"UG",
"AU",
"LA",
"MV",
"DJ",
"AS",
"LS",
"AZ",
"VU",
"TO",
"LB",
"GD",
"IE",
"SX",
"BT",
"KE",
"PL",
"BG",
"BI",
"NU",
"SL",
"EG",
"NC",
"AO",
"KH",
"LY",
"GG",
"CU",
"NG",
"GE",
"BV",
"JP",
"GS",
"VA",
"DM",
"CG",
"ID",
"LV",
"ER",
"SJ",
"GY",
"CC",
"SD",
"CV",
"TH",
"ES",
"PS",
"GA",
"US",
"ZA",
"CX",
"FO",
"NL",
"MO",
"CW",
"HT",
"AF",
"HK",
"KM",
"CI",
"MT",
"LK",
"BN",
"BM",
"MA",
"VG",
"IM",
"SB",
"MR",
"CR",
"IQ",
"KI",
"KW",
"UY",
"BY",
"IS",
"CN",
"MG",
"MK",
"AQ",
"YE",
"MX",
"MZ",
"CA",
"AM",
"TV",
"NZ",
"SE",
"LR",
"MH",
"SI",
"FI",
"TF",
"RO",
"TM",
"GU",
"BH",
"DE",
"GN",
"KZ",
"EC",
"MW",
"SK",
"SO",
"JO",
"SS",
"BO",
"GP",
"AT",
"BD",
"TT",
"HM",
"LU",
"NR",
"GL",
"MC",
"SG",
"SH",
"TJ",
"HU",
"CD",
"PR",
"BF",
"PW",
"CM",
"MD",
"GQ",
"RS",
"CZ",
"GI",
"VC",
"SR",
"AW",
"MQ",
"PY",
"PK",
"JE",
"PA",
"DZ",
"BE",
"CL",
"ZW"
],
"alternateUrls": [
"https://m.youtube.com/@CryptoGlobalNewsTeam/about",
"https://www.youtube.com/feeds/videos.xml?channel_id=UC3s4wfa7X33w2S2YD5aBFgA",
"android-app://com.google.android.youtube/http/www.youtube.com/channel/UC3s4wfa7X33w2S2YD5aBFgA",
"ios-app://544007664/vnd.youtube/www.youtube.com/channel/UC3s4wfa7X33w2S2YD5aBFgA"
]
},
"images": {
"bannerUrl": "https://yt3.googleusercontent.com/xyYWPPnyjKh5IAiGvq1QGHGZaeA8paB1bRr7YQXcZK_L2zrWLCSGGEhvtk7FpM2xWGV9ax6u=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
"avatarImages": [
{
"url": "https://yt3.googleusercontent.com/ytc/AIdro_nYbxzPvBazrMZcAFDxykZzBDgv1G8YaKiBvO1Xiy4V8HI=s72-c-k-c0x00ffffff-no-rj",
"width": 72,
"height": 72
},
{
"url": "https://yt3.googleusercontent.com/ytc/AIdro_nYbxzPvBazrMZcAFDxykZzBDgv1G8YaKiBvO1Xiy4V8HI=s120-c-k-c0x00ffffff-no-rj",
"width": 120,
"height": 120
},
{
"url": "https://yt3.googleusercontent.com/ytc/AIdro_nYbxzPvBazrMZcAFDxykZzBDgv1G8YaKiBvO1Xiy4V8HI=s160-c-k-c0x00ffffff-no-rj",
"width": 160,
"height": 160
}
]
},
"discoverySource": {
"value": "@CryptoGlobalNewsTeam",
"discoverySurface": "channel_filter",
"rank": 1,
"sourceUrl": "https://www.youtube.com/results?search_query=%40CryptoGlobalNewsTeam&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

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 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?

The Actor keeps searching until the matching source is exhausted. If both work-limit fields are empty, it continues until all submitted sources are exhausted. YouTube search availability, filters, and other run conditions can still lead to fewer rows.

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

v5.0 (20-10-2026)

  • Results no longer include sourceVideo.url.
  • Counts now read more local number units. A decimal count with no known unit is left empty.
  • Public profile links keep their destination when YouTube wraps them in a redirect link.
  • 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.
  • 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 the subscriberCountIsExact field.

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.

v1.0

  • Search by public YouTube search-result URL.
  • Get the first matching channel output.
  • See source-video evidence for the first match.
  • 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é