Most tools that find YouTube channels by topic treat the search as one keyword and one result page. That works for lookup. It misses how creator discovery behaves across languages, countries, and niche vocabulary.
“AI automation” in English, “automatisation IA” in French, and “automatización con IA” in Spanish do not return the same creator pool. Country filters add another problem: a creator’s language, search region, declared country, and inferred geography are not interchangeable.
Here is a reproducible way to discover channels without building a seed list first.
Start from a market matrix
Write the requested market as separate dimensions:
niches = ["AI automation", "B2B SaaS"]
languages = ["en", "fr"]
countries = ["US", "CA", "GB", "FR"]
This is more useful than concatenating everything into one long search phrase. It lets the discovery layer try multiple relevant combinations while keeping a global cap on search calls.
The channel URLs you already know can still be included as optional seeds. They should not define the whole market.
Use worldwide language mode when country is not the brief
A French-language campaign is not necessarily a France campaign.
French-speaking creators can publish from Canada, Belgium, Switzerland, Morocco, Senegal, or anywhere else. If language matters and location does not, use:
run_input = {
"preset": "qualified_shortlist",
"niches": ["AI agents", "business automation"],
"languages": ["fr"],
"countries": [],
"worldwideLanguageMode": True,
"maxChannels": 10,
"videosAnalyzedPerChannel": 10,
"maximumSearchCalls": 12,
}
This guides discovery by language without pretending that every returned creator lives in one country.
Run the discovery from Python
pip install apify-client
export APIFY_API_TOKEN="..."
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_API_TOKEN"])
run_input = {
"preset": "qualified_shortlist",
"searchQueries": [
"AI automation tutorials",
"B2B SaaS growth",
],
"niches": ["AI automation", "B2B SaaS"],
"languages": ["en", "fr"],
"countries": ["US", "CA", "GB", "FR"],
"worldwideLanguageMode": False,
"excludedKeywords": ["compilation", "reupload"],
"minSubscribers": 1_000,
"maxSubscribers": 500_000,
"minVideosPerMonth": 1,
"lastUploadWithinDays": 90,
"maxChannels": 10,
"videosAnalyzedPerChannel": 10,
"maximumSearchCalls": 16,
}
run = client.actor("kazkn/youtube-creator-lead-finder").call(
run_input=run_input,
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
The output is deduplicated by stable channelId inside the run. That matters because the same creator can match several topics, languages, country hints, or search phrases.
Preserve what matched
A useful discovery row should explain why the channel entered the shortlist.
for item in items:
print({
"channel": item["channelName"],
"matched_queries": item.get("matchedQueries", []),
"matched_languages": item.get("matchedLanguages", []),
"matched_countries": item.get("matchedCountries", []),
"primary_language": item.get("primaryLanguage"),
"declared_country": item.get("declaredCountry"),
"inferred_countries": item.get("inferredCountries", []),
"warnings": item.get("warnings", []),
})
The matched* fields describe the search request. They are not automatically confirmed creator attributes.
Declared country is not inferred country
When public channel metadata includes a country, keep it as declaredCountry.
When geography is inferred from public signals, keep it in inferredCountries with countryConfidence. Never overwrite the declared field with a guess. If no defensible location signal exists, leave it unknown.
The same rule applies to language. Keep the primary language, detected languages, and confidence visible instead of turning a search hint into a fact.
Qualify after discovery
Topic relevance alone can return inactive or commercially weak channels. The second pass should check:
- last upload date;
- videos published in the last 30 and 90 days;
- estimated monthly cadence;
- recent median and average views;
- engagement when public counts make it calculable;
- Shorts, long-form, and live ratios;
- public business-contact evidence when the brief requires it.
This two-pass design keeps discovery broad enough to find unfamiliar creators while spending enrichment work only on plausible candidates.
Keep the search bounded
Multi-language and multi-country matrices can expand quickly. Use maximumSearchCalls as a global cap, start with 5–10 output channels, and widen one dimension at a time.
If a search returns zero rows, inspect the exclusions and warnings. Requiring a narrow country, high recent views, frequent uploads, a small subscriber band, one format, and a public contact simultaneously can correctly eliminate every candidate.
Try the niche finder Task
The public YouTube Channel Finder by Niche Task starts without mandatory channel URLs and opens with a bounded input you can edit:
Find YouTube channels by topic and market
For the full input and output contract, see YouTube Creator Lead Finder.
The goal is not to search more keywords. It is to keep discovery broad, qualification explicit, and every uncertain attribute honest.
Top comments (0)