YouTube Channel Search & Email API
The database behind qmetrics, as a REST API. Filter 2,574,428 channels by subscriber count, country and category, then pull contact emails for the ones you want.
How it works
YouTube's own API tells you about a channel you already know. This tells you
which channels exist. Search returns up to 50 channels per
request with their stats and a has_email flag, so you
can see who is contactable. Lookup then returns one channel with its
email, one request per channel — so your request count is also your
contact count, with nothing hidden behind it.
Endpoints
/v1/channels/search
Filtered discovery, largest channels first. Up to 50 per request. No contact addresses here — has_email tells you which are worth a lookup.
Request
{
"min_subscribers": 1000000,
"country": "US",
"category": "Gaming",
"has_email": true,
"max_results": 50
}
Response
{
"returned": 50,
"with_email": 50,
"channels": [
{
"channel_id": "UCIPPMRA040LQr5QPyJEbmXA",
"title": "MrBeast Gaming",
"handle": "@mrbeastgaming",
"url": "https://www.youtube.com/channel/UCIPPMRA040LQr5QPyJEbmXA",
"subscribers": 59400000,
"views": 12800000000,
"videos": 187,
"country": "US",
"created": "2020-04-07",
"categories": ["Gaming", "Action game"],
"has_email": true,
"thumbnail": "https://yt3.ggpht.com/..."
}
]
}
/v1/channels/lookup
One channel with its contact email, by handle, channel id or URL. One request per channel. A channel that is not found costs nothing.
Request
{ "url": "https://www.youtube.com/@mkbhd" }
Response
{
"channel": {
"channel_id": "UCBJycsmduvYEL83R_U4JriQ",
"title": "Marques Brownlee",
"handle": "@mkbhd",
"subscribers": 21200000,
"country": "US",
"has_email": true,
"emails": ["business@mkbhd.com"]
}
}
/v1/channels/search/preview
free
How many channels match a filter, before you spend anything. Same filters as search.
Request
{
"min_subscribers": 100000,
"country": "US",
"category": "Gaming",
"has_email": true
}
Response
{
"matching_channels": 3613,
"matching_with_email": 3613,
"would_return": 25
}
/v1/categories
free
Every value accepted by the category filter.
Response
{
"categories": [
"Action game", "Baseball", "Beauty", "Business",
"Cooking", "Education", "Gaming", "Music", "..."
]
}
/v1/health
free
Service status and current corpus size.
Response
{
"status": "ok",
"channels": 2574428,
"channels_with_email": 617869
}
Filters
| min_subscribers | Required, 5,000 or more |
| max_subscribers | Optional upper bound |
| country | ISO-3166 alpha-2, or an array. On ~73% of channels |
| category | See /v1/categories, or an array. On ~99% |
| has_email | Only channels with a contact address |
| max_results | Up to 50 |
Plans
| Free | Pro — $30/mo | |
|---|---|---|
| Requests / month | 30 | 10,000 |
| Channels per search | 50 | 50 |
| Contacts (1 request each) | up to 30 | up to 10,000 |
| Requests / minute | 60 | 300 |
300 requests/minute means 1,000 contacts in under four
minutes. Comparable APIs throttle their top plan to 10/minute, where the
same list takes over an hour. search/preview,
categories and health are free. Billing and keys
are handled by RapidAPI — there is no separate account here.
Data is refreshed on a rolling cycle. Contact addresses are published by the channel owners themselves; you are responsible for having a lawful basis to contact them. Not affiliated with or endorsed by YouTube or Google.