InsightSocial API
How-to

Get a YouTube channel's business email

Read the address behind a YouTube channel's "View email address" button, plus its country and profile, by handle. 250 credits per channel.

To get the business email a YouTube channel publishes, call GET /v1/youtube/channel/about with the channel's handle, channelId or url. It returns the address behind the About tab's "View email address" control on author.ext.public_email, the channel's listed country, and its profile: name, handle, avatar, bio, subscribers, join date and total views. It costs 250 credits per channel. The cheaper GET /v1/youtube/channel (10 credits) only finds emails written in the public description, so try it first and use this one for the channels it misses.

Cost

250 credits per channel. Checking 20 shortlisted channels costs 5,000 credits. Asking for the same channel again within 24 hours is answered from the shared cache for 2 credits. Failed calls and empty results are free.

How do I find the channel handle?

The handle is the part after @ in the channel URL: https://www.youtube.com/@mkbhd has the handle mkbhd. Pass it without the @. If you have a URL in the older https://www.youtube.com/channel/UC… form, pass the UC… part as channelId, or pass the whole link as url.

Should I try the cheaper call first?

Yes. Many creators write their business address in the channel description. GET /v1/youtube/channel reads that description and puts any address it finds on the same field, author.ext.public_email, for 10 credits. Only when that field is null is the 250-credit call worth making: it reads the address behind the About tab control, which the description does not always repeat.

Python: description first, About tab second
import os
import requests

BASE = "https://api.insightsocial.app/v1"
HEADERS = {"x-api-key": os.environ["INSIGHTSOCIAL_API_KEY"]}

def business_email(handle):
    for path in ("/youtube/channel", "/youtube/channel/about"):
        body = requests.get(BASE + path, params={"handle": handle}, headers=HEADERS, timeout=120).json()
        email = body["data"]["author"]["ext"].get("public_email")
        if email:
            return email
    return None

Make the request

cURL
curl "https://api.insightsocial.app/v1/youtube/channel/about?handle=mkbhd" \
  -H "x-api-key: $INSIGHTSOCIAL_API_KEY"

What comes back

A real response from 2026-10-14, shortened: the avatar URL is cut and two of the five links are dropped.

Response (shortened)
{
  "success": true,
  "endpoint": "/v1/youtube/channel/about",
  "schema_version": "2",
  "data": {
    "author": {
      "id": "UCBJycsmduvYEL83R_U4JriQ",
      "username": "@mkbhd",
      "display_name": "Marques Brownlee",
      "avatar_url": "https://yt3.googleusercontent.com/qu4TmIaYUlS41…",
      "bio": "MKBHD: Quality Tech Videos | YouTuber | Geek | … business@MKBHD.com\n\nNYC",
      "verified": true,
      "followers": 21400000,
      "followers_approximate": true,
      "posts_count": 1858,
      "url": "https://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQ",
      "joined_at": "2008-03-21T00:00:00.000Z",
      "ext": {
        "country": "United States",
        "public_email": "business@mkbhd.com",
        "links": ["https://twitter.com/MKBHD", "https://instagram.com/MKBHD", "https://discord.gg/MKBHD"],
        "keywords": "MKBHD, MarquesBrownlee, Marques, Brownlee",
        "total_views": 5767983054
      }
    }
  },
  "unavailable": [],
  "credits_used": 250
}
FieldWhat it holds
data.author.ext.public_emailThe address behind the About tab's "View email address" control. null when the channel has not set one.
data.author.ext.countryThe country the channel lists on its About tab.
data.author.ext.linksThe links shown on the About tab.
data.author.followersSubscriber count. followers_approximate: true means YouTube rounds it.
data.author.posts_countNumber of videos on the channel.
data.author.ext.total_viewsLifetime views across the channel.
data.author.joined_atWhen the channel was created.

The profile follows the shared author shape.

What are the limits?

  • Not every channel sets one. The address exists only when the creator added it on YouTube. Without one, public_email is null.
  • One channel per call. The catalogue marks this endpoint premium and advises shortlisting channels before you call it.
  • Rounded subscribers. YouTube shows rounded counts above 1,000, so followers is approximate.
  • Personal address. Add contact_email=1 (no extra credits) to also get author.ext.contact_email: when the bio lists two or more addresses, the one the creator gives for personal contact, copied from the bio. It is null when there is one address or none, when every address belongs to a manager, agency or brand, or when the choice was not confident.

What can I build with it?

  • Sponsorship outreach. Pull a niche's channels, keep those within your subscriber range, and collect the business address each one publishes for brand inquiries.
  • Agency prospecting. Group a shortlist by ext.country before you reach out, so each contact gets the right market and language.
  • CRM enrichment. Add the published business contact, subscriber count and total views to channel records you already keep.

On this page