YouTube Email Scraper API
Our YouTube email scraper takes a channel handle and returns the public business emails a creator chose to publish as parsed JSON, alongside every link from the About Links widget and the channel description, each tagged with its source, so you can qualify a creator for lawful outreach in one call.
Why YouTube Email data is hard to get
There is no official YouTube email API, and the reCAPTCHA-gated business-email reveal is not something any endpoint hands back. What a creator can do is publish a business address and links on their channel, so our endpoint reads what is public, the About Links widget and the description blurb, and returns the parsed emails plus every link tagged by source, so you contact only the creators who put an address forward.
The YouTube Email Scraper API in one request
curl "https://api.youtubescraperapi.com/api/v1/youtube/email?channel=@MrBeast&api_key=$API_KEY" import os, requests
API = "https://api.youtubescraperapi.com/api/v1/youtube/email"
KEY = os.environ["API_KEY"]
def channel_contacts(channel):
r = requests.get(API, params={
"channel": channel, # @handle, channel id, or full URL
"api_key": KEY,
}, timeout=60)
r.raise_for_status()
return r.json()
data = channel_contacts("@MrBeast")
# Published business emails, already parsed out for you
print(data["emails"], data["email_count"]) # [] when the creator listed none
# Every outbound link the creator surfaced, tagged by where it came from:
# from='links_section' (the About "Links" widget) or from='description'
# (a URL, bare domain, or X/Instagram/TikTok handle parsed from the blurb)
for link in data["links"]:
print(link["from"], link["display"], "->", link["url"])
# Only contact addresses a creator put forward for business inquiries,
# and honor opt-outs per CAN-SPAM / GDPR before sending anything. Parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
channel | required | - | The channel to read, as an @handle, a channel ID, or a full channel URL, for example @MrBeast or https://www.youtube.com/@MrBeast. |
country | optional | - | Two-letter country code to route the request through that region, useful when results differ by location. |
What the YouTube Email Scraper API returns
{
"channel": "AlexTheAnalyst",
"channel_id": "UC7cs8q-gJRlGwj4A8OmCmXg",
"channel_name": "Alex The Analyst",
"emails": [],
"email_count": 0,
"links": [
{ "title": "Analyst Builder", "display": "analystbuilder.com", "url": "https://www.analystbuilder.com/", "from": "links_section" },
{ "title": null, "display": "www.linkedin.com/in/alex-freberg", "url": "https://www.linkedin.com/in/alex-freberg/", "from": "description" },
{ "title": null, "display": "discord.gg/rxZUjNvRzR", "url": "https://discord.gg/rxZUjNvRzR", "from": "description" },
{ "title": "X / Twitter", "display": "@Alex_TheAnalyst", "url": "https://twitter.com/Alex_TheAnalyst", "from": "description" }
],
"links_count": 4,
"source": "public_description",
"reveal_available": false
} | Field | Type | Description |
|---|---|---|
channel | string | The channel you asked for, echoed back as the resolved handle or identifier. |
channel_id | string | The canonical UC channel ID, useful as a stable key when you store the lead. |
channel_name | string | The channel's display name, for labelling the row without a second call. |
emails | string[] | Public business emails parsed from the channel, already extracted for you. Empty when the creator published none. |
email_count | number | How many emails are in the array, so you can branch without measuring it yourself. |
links | object[] | Every outbound link the creator surfaced, each as { title, display, url, from }. The url is normalized to an absolute https address. |
links[].from | string | Where the link came from: 'links_section' (the structured About Links widget) or 'description' (a URL, bare domain, or social handle parsed out of the description blurb). |
links_count | number | How many links were found across both the Links widget and the description. |
source | string | Always public_description here, so you know the data came from what the creator chose to publish, not a gated reveal. |
reveal_available | boolean | False for now: the reCAPTCHA-gated business-email reveal is a separate tier that is not yet available, so an empty emails array means the creator listed none publicly. |
What you can build using the API
Creator outreach
Influencer partnerships
Sponsorship prospecting
Social profile enrichment
List qualification
Suppression and compliance hygiene
Why teams choose our YouTube Email Scraper API
Our endpoint runs on our infrastructure, which handles proxy rotation, anti-bot challenges, JS rendering, and retries, then returns parsed JSON with no headless browser or logged-in Google account to run. The only addresses available are the ones a creator published, so we read the About Links widget and the description blurb, extract the emails for you, and return every link tagged with where it came from.
Parsed emails as JSON
About Links and description links
Normalized link URLs
Anti-bot and proxy handling
Geotargeting
Pay for success
YouTube Email Scraper API vs the official YouTube API
| Capability | Our email endpoint | DIY headless browser | Official YouTube Data API |
|---|---|---|---|
| Returns parsed emails | yes, an emails array | no, you parse the DOM | no email field at all |
| Reaches the published About contact | yes, reads the public page | only if you solve the CAPTCHA | never exposed |
| Reads description and link sources | yes, both, tagged by source | yes, if you parse it | description only, no reveal |
| Anti-bot, proxies, CAPTCHA | handled for you | you build and maintain it | not applicable |
| Browser or login to run | none | browser plus a Google login | API key only |
| Daily reveal cap | spread server-side | roughly 5 to 10 per account | no reveal exists |
| Free tier | 1,000 requests | self-hosted | 10,000 units/day |
Start free, scale when ready
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
Yes, for the addresses a creator published. The endpoint reads the channel and returns an emails array with an email_count, already parsed, so there is no page text to regex on your side. It also returns a links array with every link from the About Links widget and the description, each one tagged by source. What no endpoint returns is the reCAPTCHA-gated business-email reveal: reveal_available is false, so when a creator never published an address openly the emails array comes back empty.
On the channel About page, under "For business inquiries," behind a View email address button that opens a CAPTCHA and appears only on desktop. It is an opt-in field a creator sets in YouTube Studio, so it exists only when they chose to publish it. Some creators instead type an address into the channel description or link to a website, Linktree, or social profile, and our endpoint reads those from both the About Links widget and the description, returning them in the emails and links arrays.
Not the business email. A channels.list call on the YouTube Data API v3 costs 1 quota unit against a default 10,000 units per day and returns statistics, the description, and snippets, but no contact email. The one address it can surface is an email a creator typed into the description in plain text, which you would still extract with a regex.
Collecting a business email a creator published voluntarily is generally treated as gathering publicly available data, which US courts have read narrowly under the CFAA in hiQ v. LinkedIn. The regulated part is sending. The US CAN-SPAM Act carries civil penalties up to $53,088 per email as of January 2025 and requires a working opt-out, and the EU GDPR requires a documented lawful basis such as legitimate interest. Treat addresses as public business contacts, message creators about real business inquiries, and honor every unsubscribe. This is general information and does not constitute legal advice.
Most often the creator never published a business email, so the emails array comes back empty and email_count is 0. That is the structural ceiling on any YouTube email scraper: the only address available is the one a creator chose to make public, and the gated reveal is not built here (reveal_available is false). When that happens, the links array is still worth reading, since a creator who skipped an email often surfaces a website or social profile you can use to reach them another way.
Requests return in about 2.6 seconds median end to end, including proxy routing, anti-bot handling, and rendering.
The free plan covers 1,000 requests with no card, Pro works out to about $0.60 per 1,000 requests, and pay-as-you-go is $0.90 per 1,000 successful requests. You pay only for successful fetches.