~ / guides / How to Scrape Emails From TikTok (2026)

How to Scrape Emails From TikTok (2026)

AQ
Aria Quinn
TikTok data engineer · about the author
the short version
  • The email lives in the bio, not a dedicated field. TikTok embeds each profile as JSON in a __UNIVERSAL_DATA_FOR_REHYDRATION__ script tag, and the public bio sits in user.signature. I pull the address with one regex over that text.
  • When the bio has no email, follow the bioLink. Many creators route contact through a Linktree or Beacons page, so the address is one hop past the profile, not on it.
  • A default Python request from a datacenter IP gets verify-walled before the bio loads. Residential routing is what makes the signature field come back populated instead of empty.
  • For a whole creator list, a managed API returns the parsed email as JSON from one call. Scraping a public email and emailing it are two separate questions: CAN-SPAM and GDPR govern the second.

I pulled a creator’s business email off TikTok the same way the app does: I read it out of the bio. One requests.get against a public profile returned the page with the entire profile as JSON inside it, and the email was sitting in a field called signature. No login, no contact form, no official endpoint.

This guide is how to scrape emails from TikTok the way I actually run it: the field the email lives in, the Python that parses it, the regex that isolates it, and the managed call I reach for when the list runs to thousands of creators. I tested the code in July 2026, and I will flag the exact point where a raw script stops working.

How do you scrape emails from TikTok?

You scrape emails from TikTok by reading a creator’s public bio, where business accounts post a contact address, and pulling the email out of that text with a regex. TikTok has no public field named email, so there is nothing to request directly. What you request is the profile, and the address rides along inside the bio text that the page already serves to every logged-out visitor.

Creators put a reachable email in one of three places, and each is a different amount of work to collect:

For a few creators, the keyless Python method reads the bio for free. For a list of hundreds or thousands, a managed API returns the parsed email and skips the blocking problem entirely. Before either, it helps to know exactly where in the profile payload the address hides.

Where does TikTok keep a creator’s email?

TikTok keeps a creator’s email in the profile bio, which every public page exposes as the signature field inside an embedded JSON blob. When you request a profile URL with a browser User-Agent, TikTok returns the rendered HTML with a script tag named __UNIVERSAL_DATA_FOR_REHYDRATION__. The page uses that JSON to draw itself, and a scraper reads the same JSON directly. There is no separate contact object to fetch.

Inside that blob, the fields under webapp.user-detail are the ones an email pull actually uses:

FieldPathWhat it holds
Bio text (email source)userInfo.user.signatureThe public bio, where creators paste a contact email
Link-in-biouserInfo.user.bioLink.linkThe external Linktree, Beacons, or website URL
IdentityuserInfo.user.uniqueId, nicknameThe @handle and display name to attach the email to
ReachuserInfo.stats.followerCountFollower count, so you can qualify before you send

The signature is the whole game for the bio-only method. It is a plain string, so an email in it is just text you match with a pattern. The bioLink is your fallback when signature holds no address, because it points at the page where the email usually lives instead. The identity and reach fields matter because a raw email with no follower count forces a second scrape to qualify the lead, so I pull them in the same request. With the fields mapped, the extraction is a short script.

How do you extract a TikTok email with Python?

You extract a TikTok email with Python by fetching the profile page, parsing the __UNIVERSAL_DATA_FOR_REHYDRATION__ JSON, reading the signature field, and running an email regex over it. Install the one dependency first:

pip install requests
import requests, re, json

UA = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
      "(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36")
EMAIL_RE = re.compile(r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}")

def tiktok_email(username):
    url = f"https://www.tiktok.com/@{username}"
    r = requests.get(url, headers={"User-Agent": UA}, timeout=25)
    r.raise_for_status()

    blob = re.search(
        r'<script id="__UNIVERSAL_DATA_FOR_REHYDRATION__"[^>]*>(.*?)</script>',
        r.text, re.S,
    ).group(1)
    user = json.loads(blob)["__DEFAULT_SCOPE__"]["webapp.user-detail"]["userInfo"]["user"]

    bio = user.get("signature", "")
    found = EMAIL_RE.search(bio)
    return {
        "username": user.get("uniqueId"),
        "email": found.group(0) if found else None,
        "bio": bio,
        "bio_link": user.get("bioLink", {}).get("link"),
    }

print(tiktok_email("nasa"))

The signature string is the bio, the regex isolates the first address it finds, and bioLink.link comes back as the fallback URL. The honest caveat from my own runs: most general creator profiles have no email in the bio at all, so email comes back None far more often than not, and bio_link becomes the next step rather than a nice-to-have. That miss rate is the whole reason a bio-only scraper needs the link-following step below.

When the bio has no email, you follow the bioLink to the creator’s Linktree, Beacons, or website and scan that page for an address. The profile gave you the URL in bio_link; the email is usually in the contact section, the footer, or an about page one click past it.

def email_from_bio_link(bio_link):
    if not bio_link:
        return None
    page = requests.get(bio_link, headers={"User-Agent": UA}, timeout=25)
    found = EMAIL_RE.search(page.text)
    return found.group(0) if found else None

This step is where hit rate jumps. A bio-only pass lands an email on a small minority of general profiles, while following the linked site pushes discovery into the 40 to 60% range on creators who link one, in line with the discovery rates managed actors publish. Two things break this in practice: some link-in-bio hubs render their content with JavaScript, so a plain fetch sees an empty shell, and the profile fetch itself starts failing once you run it from a server. That second problem is the real ceiling.

How do you scrape TikTok emails at scale without getting blocked?

You scrape TikTok emails at scale without getting blocked by sending requests from residential IPs at a human-like rate, because TikTok verify-walls datacenter ranges before the bio ever loads. The same script that returns a full profile from my laptop returns a CAPTCHA page or an empty client-side shell when I run it from AWS or GCP, and an empty shell has no signature to parse. Fixing the block is what makes the email pull work at volume.

The levers that moved results in my testing, in rough order of impact:

TikTok publishes its automation stance in its robots.txt, which sets a flat Disallow: / for a long list of named crawlers and fences specific paths for everyone else, so read it before you point a bot at the site. If you plan to source emails from a creator’s follower or comment lists rather than the profile, note that those feeds sit behind a browser-minted signature and will not answer a plain request at all. The honest tradeoff is the same one every platform forces: renting and rotating a residential proxy pool becomes a standing maintenance project once you pass a few thousand profiles, which is why most teams move the fetch layer to an API.

How do you scrape TikTok emails with an API?

You scrape TikTok emails with an API by sending a username to a scraper endpoint and getting the parsed email back as JSON, with the proxies, the verify wall, and the bio parsing all handled server side. You make one authenticated request. You get a clean address. There is no __UNIVERSAL_DATA_FOR_REHYDRATION__ to parse, no regex to write, and no proxy to rent.

With ChocoData, the TikTok endpoints live under the tiktok path and you pass your key as api_key. The profile endpoint returns the parsed email alongside the profile fields, so a single call gives you the address already qualified with follower data:

curl "https://chocodata.com/api/v1/tiktok/profile?username=nasa&api_key=$CHOCO_API_KEY"

The Python version is just as short and returns the email ready to use:

import os, requests

resp = requests.get(
    "https://chocodata.com/api/v1/tiktok/profile",
    params={"username": "nasa", "api_key": os.environ["CHOCO_API_KEY"]},
    timeout=30,
)
data = resp.json()
print(data.get("email"))                          # parsed from the bio, no regex
print(data.get("stats", {}).get("followerCount")) # qualify in the same call

The email arrives parsed rather than as raw bio text, and the follower count rides along so the lead is qualified in one pass instead of two. The same TikTok endpoint accepts a list of usernames, so you run a whole creator set through one integration instead of a per-profile loop that you also have to keep unblocked. The free tier covers 1,000 requests with no card, and you are billed only for successful requests. For a one-off pull of a few creators, the keyless Python at the top of this guide is genuinely all you need. For continuous collection across a list, offloading the verify wall is cheaper than your own time once you price it in, and the full Python build sits in my guide on how to scrape TikTok with Python. If you would rather compare managed tools head to head, I rank them in best TikTok scrapers in 2026.

Scraping a public email from TikTok and emailing it are two separate legal questions, and most of the risk sits on the emailing. Collecting an address a creator chose to publish carries limited legal exposure in most jurisdictions, since courts have generally treated scraping of public, logged-out data as lower risk. It does breach TikTok’s Terms of Service, which prohibit using any automated system to collect data without written approval, but that is a contractual matter that can cost you account or IP access rather than a criminal one.

The outreach is where named rules apply, and they differ by region. In the United States, the FTC’s CAN-SPAM guide requires every commercial email to carry accurate header and subject lines, a valid physical postal address, and a working opt-out you honor within 10 business days. There is no consent requirement to send a first cold email, but each violating message can cost tens of thousands of dollars in civil penalties, so the volume matters.

In the EU and UK, a scraped business email that identifies a person is personal data under GDPR, so you need a lawful basis to process it. Most B2B senders rely on legitimate interest under Article 6(1)(f), which means documenting a genuine business purpose, running a balancing test, and always offering an opt-out. Two rules followed from this in my own use: prefer generic business addresses like info@ or booking@ over an individual’s personal email, since the privacy weight is lighter, and keep a note of where each address came from so you can show it was public. For the platform-terms side in full, see my breakdown of whether scraping TikTok is legal.

FAQ

Can you get a TikTok creator's email without code?

Yes, for one creator at a time. Business accounts can show an email button on the profile, and the TikTok Creator Marketplace exposes some contact paths to brands, though it does not hand you an exportable list. No-code scrapers automate the same bio read across many profiles. Writing the Python yourself only pays off once you need a list rather than a handful.

What email hit rate should I expect from TikTok bios?

Low if you read the bio only. In my runs a bio-only pass returned an email on well under 10% of general creator profiles, because most people never type an address into the signature field. Following the bioLink to a Linktree or website lifts that a lot: Apify's own actor docs cite a 40 to 60% discovery rate on profiles that link an external site. A business-creator list scores far higher than a random one.

Do you need a TikTok login to scrape a creator's email?

No. The bio and its email sit on the public, logged-out profile page, which is the version this guide scrapes. A login is only needed for gated data, and using one ties the activity to your account under TikTok's terms. Keeping to logged-out public pages is both simpler and the safer footing legally.

Is there a free way to scrape TikTok emails?

Yes. The keyless Python at the top of this guide reads the bio and regexes the email for free, which is enough for a handful of profiles. Managed APIs then add a free starter tier: ChocoData includes 1,000 requests with no card, so you can measure hit rate on your own creator list before paying per successful request.

AQ
Aria Quinn
I've built TikTok data pipelines for years. On tiktokscraperapi.com I run TikTok scraping methods against live pages and publish what actually holds up.