YouTube Channel Finder By Keyword Research
Pricing
Pay per usage
YouTube Channel Finder By Keyword Research
Find and analyze YouTube channels with the YouTube Channel Finder Scraper. Search by keyword or niche to extract channel names, IDs, stats, and descriptions. Ideal for influencer discovery, market research, and competitor analysis. Fast, accurate, and easy to use at scale.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
2
Bookmarked
21
Total users
3
Monthly active users
3 days ago
Last modified
Categories
Share
YouTube Channel Finder — Channels, Density & SEO Keywords
YouTube Channel Finder By Keyword Research finds YouTube channels for any seed keyword, then scores how strongly each channel's title and description match that keyword and pulls the real SEO keywords its recent videos target. Results come back as structured JSON — channel metadata, keyword-density scores, and channelKeywords pulled from the /videos tab — ready to pass to an LLM, load into a spreadsheet, or feed a monitoring pipeline. No YouTube login or API key is required. Point it at a niche keyword or a competitor's channel and start researching.
What is YouTube Channel Finder By Keyword Research?
YouTube Channel Finder By Keyword Research is a query-driven scraper that searches YouTube for channels matching a seed keyword — or accepts direct channel URLs — and returns channel metadata plus a keyword-research layer built on top of it. That layer is the differentiator: local keyword match/density scoring against the channel's own title and description, and optionally channelKeywords — the real, repeated SEO terms pulled from a channel's recent video titles and tags via the /videos tab, not just whatever the /about page shows. No YouTube account, cookies, or Data API key is required to run it.
- Search YouTube by seed keyword and return matching channels, or research specific channels by direct URL
- Score keyword match and density (
broad,title,description, orexactPhrasemode) against each channel's title and description - Pull real SEO keywords (
channelKeywords) from a channel's recent video titles and tags - Filter results by channel join date (
fromDate/toDate) - Localize search by region (
searchRegion) and language (language) - Optionally label each channel with AI-generated topic themes and a content-focus summary
What data can you get with YouTube Channel Finder By Keyword Research?
Every run returns one row per researched channel, covering four result types: channel identity/metadata, keyword match & density scores, real SEO keyword signal from recent videos, and optional AI theme labels — 25 fields in total.
| Result Type | Extracted Fields | Primary Use Case |
|---|---|---|
| Channel identity & metadata | keyword, channelName, userName, channelId, canonicalChannelUrl, subscriberCount, description, location, links, joined_date, channel_views, videos_uploaded, url, error, scrapedAt | Building a channel dataset, vetting candidates, deduplicating by channelId |
| Keyword match & density | keywordMatchMode, hasKeywordInTitle, hasKeywordInDescription, keywordOccurrences, keywordDensity | Scoring how strongly a channel targets your seed keyword, zero extra request |
| Channel SEO keyword signal | channelKeywords, recentVideoTitles, recentVideoTags | Seeing the real terms a channel's recent content targets, beyond the /about page |
| AI theme labels (optional) | aiThemes, aiThemeSummary | Quick topical classification for large result sets |
Channel SEO keywords from recent videos
channelKeywords is what separates this Actor from a plain channel finder: instead of stopping at the /about page, it fetches the channel's recent video titles via the /videos tab, pulls the videoDetails.keywords tags for a sample of the newest videos, and runs term-frequency analysis (stopword-filtered) across the description plus those titles and tags. The result is the real, repeated SEO vocabulary the channel is actively targeting right now — not a guess from a static bio. It only runs when includeChannelKeywords is enabled, since it adds extra requests per channel.
{"channelKeywords": [{ "term": "python", "count": 14 },{ "term": "tutorial", "count": 9 },{ "term": "programming", "count": 7 }],"recentVideoTitles": ["Python Tutorial for Beginners", "10 Python Tips You Didn't Know"],"recentVideoTags": ["python", "coding tutorial", "learn python"]}
Keyword match & density scoring
For every channel found under a seed keyword, the Actor computes hasKeywordInTitle, hasKeywordInDescription, keywordOccurrences, and keywordDensity — pure local text analysis over the channel name and description the Actor already fetched, no extra request. keywordMatchMode controls the scope: broad (title + description), title only, description only, or exactPhrase (word-boundary match). Channels supplied via direct urls have no seed keyword, so these five fields come back null rather than a fabricated zero.
How does YouTube Channel Finder By Keyword Research differ from the official YouTube Data API v3?
YouTube's own Data API v3 returns channel and search data too, but it requires a Google Cloud project, an API key, and runs against a shared daily quota — Google's own documentation states a default allotment of 10,000 quota units per day, shared across most endpoints on the project. It also has no built-in keyword-density scoring or recent-video keyword aggregation; you would have to fetch each endpoint separately and build that analysis yourself.
| Feature | YouTube Data API v3 | This Actor |
|---|---|---|
| Setup requirement | Google Cloud project + API key | None — no login, cookies, or API key |
| Keyword match/density scoring | Not provided — build it yourself from snippet.description | Built in (keywordMatchMode, keywordDensity), zero extra request |
| Recent-video SEO keyword aggregation | Not provided | Built in (channelKeywords) via the /videos tab + video tags |
| Daily usage limit | Fixed daily quota (10,000 units/day default, shared across endpoints) | Governed by Apify's pay-per-event pricing, not a platform quota |
| Direct channel URL input | Requires resolving the channel ID first | Accepts channel URLs directly (urls) |
| Optional AI classification | Not provided | Optional AI theme labeling (aiThemes, aiThemeSummary) |
Reach for the official API when you already have Google Cloud infrastructure and only need raw channel/search metadata inside quota. Reach for this Actor when you want keyword-research signal — match, density, and real SEO keywords from recent videos — without managing a Cloud project or writing that analysis layer yourself.
How to scrape YouTube with YouTube Channel Finder By Keyword Research?
- Open YouTube Channel Finder By Keyword Research on the Apify Store and click Try for free (or Run, if you already have it saved).
- Enter one or more seed keywords in
keywords— no field is required, so leaving the input as-is runs the prefilled example. Or paste channel URLs intourlsto skip keyword search entirely. - Set the real query controls you need:
channelCount(channels per keyword, 1-50),searchRegion,language,fromDate/toDate, andkeywordMatchMode. - Click Start to run the Actor.
- Download results as JSON, CSV, Excel, or any other format Apify's Dataset export supports, or read them via the API.
Example request body for the Apify API:
{"keywords": ["python programming", "web scraping tutorial"],"channelCount": 10,"keywordMatchMode": "broad","includeChannelKeywords": true}
How to run multiple queries in one job
Add each seed keyword as its own line in the keywords array (a stringList input) and the Actor works through them one at a time in a single run, pushing one row per channel found per keyword. Combine keywords and urls in the same run if you want both a fresh keyword search and specific channels researched directly — the two lists are processed independently and both land in the same dataset.
⬇️ Input
All 14 input parameters are optional — nothing is required to start a run.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
keywords | No | array | Seed keywords to search for channels, one per line. | ["python programming"] |
channelCount | No | integer | Channels to analyze per seed keyword (1-50, default 10). Hard-capped at 50 regardless of value entered. | 10 |
searchRegion | No | string | YouTube search region / country code (default US). | "US" |
language | No | string | Interface and result language code (default en). | "en" |
fromDate | No | string | Only include channels that joined on or after this date (YYYY-MM-DD). | "2020-01-01" |
toDate | No | string | Only include channels that joined on or before this date (YYYY-MM-DD). | "2026-01-01" |
keywordMatchMode | No | string | broad (title+description), title, description, or exactPhrase (default broad). | "broad" |
includeChannelKeywords | No | boolean | Fetch recent video titles/tags via the /videos tab and compute channelKeywords (default false, adds extra requests). | true |
maxRecentVideos | No | integer | How many recent videos to sample when the above is on (1-20, default 10; tags fetched for the newest 5). | 10 |
urls | No | array | Direct channel URLs to research, bypassing keyword search. | ["https://www.youtube.com/@apify"] |
aiEnhancement | No | boolean | Enable optional AI topic-theme labeling (default false). | false |
aiModel | No | string | AI model/provider for theme labeling (default claude-haiku-4-5). | "claude-haiku-4-5" |
aiApiKey | No | string | Your own API key for the selected provider; falls back to an environment variable if left empty. Required only when aiEnhancement is on. | "" |
proxyConfiguration | No | object | Optional Apify Proxy configuration; auto-escalates to Residential on a detected block. | { "useApifyProxy": false } |
Example input:
{"keywords": ["python programming", "web scraping tutorial"],"channelCount": 10,"searchRegion": "US","language": "en","keywordMatchMode": "broad","includeChannelKeywords": true,"maxRecentVideos": 10,"aiEnhancement": false,"proxyConfiguration": { "useApifyProxy": false }}
Common pitfall: keywordMatchMode, hasKeywordInTitle, hasKeywordInDescription, keywordOccurrences, and keywordDensity only mean something when a channel was found via keywords — channels supplied through urls have no seed keyword to score against, so those fields come back null on those rows, not a misleading zero. Also note that row_result is charged for every processed channel, including rows that end in an error (about page not resolvable, blocked request, etc.) — filter on error == null if you only want to pay attention to successfully resolved channels.
⬆️ Output
Results are pushed to the dataset one row at a time as they're found, in typed, normalized JSON with a consistent 25-field shape across every row (including error rows). Export as JSON, CSV, Excel, HTML, or any other format the Apify Dataset export supports.
Scraped results
[{"keyword": "python programming","channelName": "PyLearnHub","userName": "@pylearnhub","channelId": "UCabc123def456ghi789jkl0","canonicalChannelUrl": "https://www.youtube.com/@pylearnhub","subscriberCount": "482K subscribers","description": "Practical Python programming tutorials for beginners and intermediate developers.","keywordMatchMode": "broad","hasKeywordInTitle": false,"hasKeywordInDescription": true,"keywordOccurrences": 1,"keywordDensity": 8.33,"recentVideoTitles": ["Python Tutorial for Beginners", "10 Python Tips You Didn't Know"],"recentVideoTags": ["python", "coding tutorial", "learn python"],"channelKeywords": [{ "term": "python", "count": 14 },{ "term": "tutorial", "count": 9 }],"aiThemes": null,"aiThemeSummary": null,"location": "United States","links": [{ "title": "Twitter", "url": "https://twitter.com/pylearnhub" }],"joined_date": "Joined Mar 5, 2018","channel_views": 41250000,"videos_uploaded": 312,"url": "https://www.youtube.com/@pylearnhub","error": null,"scrapedAt": "2026-07-25T14:02:11.000Z"},{"keyword": "","channelName": "apify","userName": "@apify","channelId": "UCf63a582-Apify-Sample-000000","canonicalChannelUrl": "https://www.youtube.com/@apify","subscriberCount": "12.4K subscribers","description": "Full-stack web scraping and browser automation platform.","keywordMatchMode": "broad","hasKeywordInTitle": null,"hasKeywordInDescription": null,"keywordOccurrences": null,"keywordDensity": null,"recentVideoTitles": null,"recentVideoTags": null,"channelKeywords": null,"aiThemes": null,"aiThemeSummary": null,"location": "Not specified","links": [{ "title": "Website", "url": "https://apify.com" }],"joined_date": "Joined Jul 15, 2015","channel_views": 3120000,"videos_uploaded": 87,"url": "https://www.youtube.com/@apify","error": null,"scrapedAt": "2026-07-25T14:03:47.000Z"},{"keyword": "web scraping tutorial","channelName": "Unknown","userName": "","channelId": null,"canonicalChannelUrl": null,"subscriberCount": "N/A","description": "","keywordMatchMode": "broad","hasKeywordInTitle": null,"hasKeywordInDescription": null,"keywordOccurrences": null,"keywordDensity": null,"recentVideoTitles": null,"recentVideoTags": null,"channelKeywords": null,"aiThemes": null,"aiThemeSummary": null,"location": "Not specified","links": [],"joined_date": "","channel_views": 0,"videos_uploaded": 0,"url": "","error": "No channels found","scrapedAt": "2026-07-25T14:04:02.000Z"}]
How can I use the data extracted with YouTube Channel Finder By Keyword Research?
- SEO and content strategists: find which channels in a niche actually rank their title/description around a target keyword using
keywordDensityandhasKeywordInTitle, then see what their recent videos are really targeting viachannelKeywordsbefore planning competing content. - Influencer outreach and sponsorship sourcing: vet candidate channels for topical relevance before reaching out — filter on
channelKeywordsandsubscriberCountinstead of eyeballing descriptions, and pulllinksfor existing contact/social channels. - AI engineers and LLM developers: feed an agent's channel-research query straight into this Actor, get back structured JSON (
channelKeywords,aiThemes,description), and pass it to the model as grounded context instead of hand-summarizing channel pages. - Market researchers: run the same seed keyword across
searchRegionvalues to compare which channels and SEO terms surface per market, or trackvideos_uploadedandchannel_viewsgrowth across a tracked channel set.
How do you monitor SEO keyword signal over time?
Keyword-research signal changes as channels publish new content, so a single run is only a snapshot — the useful discipline is running the same seed keywords or tracked channel urls on a schedule and diffing the result against the previous run. Between runs, watch channelKeywords for new terms entering or dropping out of a channel's top repeated list (a sign the channel is pivoting its content focus), keywordDensity and hasKeywordInTitle/hasKeywordInDescription for a channel re-optimizing its title or bio around your keyword, and recentVideoTitles for the newest uploads that are feeding that signal in the first place. Enabling includeChannelKeywords on every scheduled run is what makes this diff possible — without it, channelKeywords stays null and there is nothing fresh to compare.
A practical workflow: schedule a run across your tracked seed keywords (or direct channel urls) at a fixed interval, store each run's dataset, and compare channelKeywords and keywordDensity per channelId against the previous run's values for that same channelId — alert when a competitor channel's top terms shift toward (or away from) your target keyword, when its keywordDensity jumps after a rebrand, or when a new channel enters the result set for that keyword altogether. Use Apify's built-in Scheduler to run this Actor on a recurring schedule (daily, weekly, or whatever cadence your niche moves at), and pull each run's dataset through the Apify API to perform the diff itself outside the Actor, since it has no built-in change-detection of its own.
Integrate YouTube Channel Finder By Keyword Research and automate your workflow
YouTube Channel Finder By Keyword Research works with any language or tool that can send an HTTP request.
REST API with Python
import requestsTOKEN = "YOUR_APIFY_TOKEN"url = f"https://api.apify.com/v2/acts/scrapier~youtube-channel-finder-by-keyword-research/run-sync-get-dataset-items?token={TOKEN}"payload = {"keywords": ["python programming"],"channelCount": 10,"includeChannelKeywords": True,}resp = requests.post(url, json=payload)channels = resp.json()for row in channels:print(row["channelName"], row.get("channelKeywords"))
MCP for query-grounded AI agents
This Actor is reachable through Apify's hosted MCP server. Register it with an MCP-compatible client (Claude Desktop, Claude Code, or any MCP client) by pointing at https://mcp.apify.com and selecting the scrapier/youtube-channel-finder-by-keyword-research tool, or run it locally with npx @apify/actors-mcp-server --tools scrapier/youtube-channel-finder-by-keyword-research. An agent can then issue a keyword query, receive the structured JSON result, and ground its answer in real channel and keyword data instead of guessing.
Scheduled monitoring and delivery
Use Apify's built-in Scheduler to run this Actor on a recurring interval (e.g. weekly) against a fixed set of seed keywords or channel URLs. There is no built-in webhook push from within the Actor itself, but Apify's platform-level webhooks can notify your endpoint when a scheduled run finishes, so you can pull the new dataset and diff it against the previous run.
Is it legal to scrape YouTube channels?
Yes. YouTube channel pages are publicly accessible, and this Actor only extracts what any visitor sees on a channel's /about and /videos pages — channel name, description, subscriber count, join date, and video titles/tags. This falls under public-data scraping rather than personal-data processing for most rows, since it targets public creator/business channels rather than private individuals; treat any personal names or contact details that do appear in a channel's own public bio under your applicable privacy framework (GDPR/CCPA) if you store or process them further. Scraping for one-off research carries a different risk profile than bulk collection for AI training or redistribution. Consult your legal team for commercial use cases involving bulk data storage.
Frequently asked questions
Can I localize search results by region and language?
Yes. Set searchRegion (country code, default US) and language (default en) to change which channels YouTube's search surfaces and in what language. Both apply to the keyword-search path; direct urls are unaffected by these settings.
What does keywordMatchMode control?
It controls where the keyword match/density fields are scored: broad checks title + description combined, title checks only the channel name, description checks only the bio text, and exactPhrase requires a whole-word match rather than a substring. Change it if broad mode is over- or under-counting matches for your keyword.
How does this Actor handle YouTube's anti-bot measures?
It retries failed requests up to 3 times with jittered exponential backoff, and automatically switches to Apify's Residential proxy pool mid-run if a response looks blocked (403, 429, CAPTCHA, or an access-denied page). By default it runs with no proxy at all; enabling proxyConfiguration gives it a larger, rotating IP pool to draw from before it needs to escalate.
Does this Actor extract real SEO keywords from a channel's videos?
Yes — enable includeChannelKeywords and each row gets channelKeywords, a ranked list of the top repeated terms across the channel's description plus its recent video titles and tags (pulled from the /videos tab and a sample of watch pages). It's off by default because it adds extra requests per channel; if the fetch fails for a specific channel, these fields come back as empty lists rather than fabricated terms.
How many channels does this Actor return per query?
Up to channelCount channels per seed keyword, which accepts 1-50 and is hard-capped at 50 in the code regardless of what value is entered. Direct urls each return exactly one row.
How do I monitor a channel's keyword signal over time?
Schedule a recurring run (via Apify's Scheduler) across the same seed keywords or channel urls, store each run's dataset, and compare channelKeywords and keywordDensity per channelId against the previous run to catch a channel shifting its content focus.
Does this Actor work with Claude, ChatGPT, and AI agent frameworks?
Yes. It's reachable through Apify's hosted MCP server (https://mcp.apify.com) for MCP-compatible clients like Claude Desktop and Claude Code, and it's callable as a plain HTTP endpoint by any agent framework — which lets an agent retrieve live channel and keyword data before answering.
How does this compare to other YouTube channel finder scrapers?
Checked against two other channel-finder-style listings on the Apify Store (as of July 2026), neither offers keyword match/density scoring or SEO-keyword extraction from a channel's recent videos — they return channel identity and audience metrics only. This Actor adds that keyword-research layer, plus optional AI theme labeling, on top of the same kind of channel metadata.
Can I use this Actor without managing proxies or YouTube credentials?
Yes. No YouTube login, cookies, or Data API key is required, and by default the Actor runs with no proxy at all. If you do enable Apify Proxy, the Actor manages the rotation and the Residential fallback itself — you only choose whether to turn it on.
Your feedback
Found a bug or a field that doesn't match what's documented here? Open an issue on this Actor's Apify Store page or reach out through Apify Console messaging to the Scrapier team — reports like these are how the Actor gets fixed and kept accurate.