q qmetrics

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.

Channels
2,574,428
With email
617,869
Countries
237
Min. subscribers
5,000

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

POST /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/..."
    }
  ]
}
POST /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"]
  }
}
POST /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
}
GET /v1/categories free

Every value accepted by the category filter.

Response

{
  "categories": [
    "Action game", "Baseball", "Beauty", "Business",
    "Cooking", "Education", "Gaming", "Music", "..."
  ]
}
GET /v1/health free

Service status and current corpus size.

Response

{
  "status": "ok",
  "channels": 2574428,
  "channels_with_email": 617869
}

Filters

min_subscribersRequired, 5,000 or more
max_subscribersOptional upper bound
countryISO-3166 alpha-2, or an array. On ~73% of channels
categorySee /v1/categories, or an array. On ~99%
has_emailOnly channels with a contact address
max_resultsUp 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.