YouTube Channel Search Scraper
Pricing
from $1.00 / 1,000 channels
YouTube Channel Search Scraper
Find public YouTube channels from search terms or results URLs. Each row is a channel with its handle, subscriber and view counts, profile, and the search result that found it first. No API key needed.
Pricing
from $1.00 / 1,000 channels
Rating
0.0
(0)
Developer
Mr T
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
YouTube Channel Search Scraper
Find public YouTube channels from keywords or from YouTube search-result URLs. Each saved row is one channel, kept from the first result that passed your filters, with the channel's public profile and the search hit that found it. No API key, no quota, no Google account.
You only pay per channel saved. Channels dropped by a filter, an exclusion, or a repeat match are not charged.
What you get for each channel
- channel: id, handle, name, URL, description, verified badge, family-safe flag
- metrics: subscribers, video count, total views (null when YouTube hides the count; large subscriber counts are rounded by YouTube)
- profile: country, join text, tags, tabs, public links, emails written in the profile text, available country codes, alternate URLs
- images: banner URL and avatar sizes
- discoverySource: the keyword or search URL,
video_resultsorchannel_filter, rank starting at 1, and the results URL - sourceVideo: video id, title, published text, and view text when a video result found the channel;
nullfor channel-only search
How to use it
- Keep the sample keyword or add your own under Search terms. You can also upload a TXT or CSV file, or paste
https://www.youtube.com/results?search_query=…URLs. - Choose video results, channel-only search, or both. With both, video results run first.
- Set Channels per source and Total channels. Leave either one empty for no limit on that side.
- Optionally set a subscriber range, a minimum video count, verified-only, or channels to exclude.
- Run the Actor and open the dataset.
The same channel is saved once. A later keyword does not replace the first match.
Example input
{"discoveryMode": "both","searchTerms": ["coffee roasting"],"maxChannelsPerSearchTerm": 10,"maxTotalResults": 10,"verifiedOnly": false}
Example row
{"channel": {"id": "UCMb0O2CdPBNi-QqPk5T3gsQ","handle": "@jameshoffmann","title": "James Hoffmann","url": "https://www.youtube.com/@jameshoffmann","description": "…","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"],"tabs": [{ "title": "Videos", "url": "https://www.youtube.com/@jameshoffmann/videos" }],"externalLinks": ["https://www.jameshoffmann.co.uk/contact-me"],"emails": [],"availableCountryCodes": ["GB", "US"],"alternateUrls": ["https://m.youtube.com/@jameshoffmann/about"]},"images": { "bannerUrl": null, "avatarImages": [{ "url": "https://yt3.googleusercontent.com/…", "width": 72, "height": 72 }] },"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": "3 years ago","viewText": "2,158,042 views"}}
Good to know
- Rank is the position in that search's result list, starting at 1. Video results and channel-only search are numbered separately, and the numbers continue across pages. Filtered and excluded channels still take a number.
- Channels per source counts a channel once per results page. A channel removed by a filter or the exclusion list does not count the first time it shows up in that search; a later appearance does. A channel already saved earlier in the run counts, and is not saved again.
- Hidden subscriber counts are
null. If you set a minimum or a maximum, channels with no public count are skipped. - Subscriber counts can use K, M, B, lakh, or crore. YouTube rounds large counts.
- Emails are only the addresses written in the public profile text. The "sign in to see the email" button is not used.
- Page language and Page country default to
enandUS. They also replace the language and country on a pasted results URL. - Two inputs that search for the same words are run once. The first one keeps the discovery value.
Proxies
The default Apify datacenter proxy is used. If YouTube starts blocking it during a run, the scraper switches to Apify Residential on its own.
Using it from code
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('adaptable_wheelhouse/youtube-channel-search-scraper').call({discoveryMode: 'both',searchTerms: ['coffee roasting'],maxChannelsPerSearchTerm: 10,maxTotalResults: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Is it legal to scrape YouTube?
This actor reads only public pages that anyone can see on youtube.com without logging in. Channel descriptions can contain personal data such as business email addresses, which is protected by laws such as GDPR. Only collect it if you have a legitimate reason, and check with a lawyer if you are unsure.