L logiover
lead-generation · Jun 2, 2026 · 9 min read

How to Scrape TikTok Profiles & Emails in Bulk (2026)

Turn a list of @usernames into a contact-ready database: scrape TikTok profiles for follower stats, bio, bio link, region, verified status and contact emails in bulk.

If you run influencer outreach or build creator databases, you already know the bottleneck: TikTok hands you a username, but not the follower count, the bio link, or — most importantly — the contact email you need to pitch a deal. This guide covers how to scrape TikTok profiles and extract TikTok emails in bulk, turning a flat list of handles into a structured, contact-ready spreadsheet. No login, no cookies, no headless browser — just clean profile records you can drop straight into a CRM.

The core idea is simple: most creators who want brand deals put a collab: email or a Linktree right in their bio. That data is public, but it is locked one profile at a time inside the TikTok UI. The trick is reading it at scale and parsing the contact details out of the bio automatically.

Why bulk TikTok profile + email extraction is valuable

A single TikTok handle is nearly worthless to a marketer on its own. What turns it into a lead is the surrounding context:

  • Is this creator big enough? You need the follower count, total likes (heart count), and video count before you waste an email on them.
  • Are they reachable? A @username is not a contact. An email, a phone, or an Instagram/YouTube handle is.
  • Are they legit? Verified status, region, and private-account flags separate real creators from throwaway accounts and bots.

Doing this by hand — opening each profile, copying the follower number, hunting for an email in the bio — takes a couple of minutes per creator. Across a thousand creators that is days of work. A bulk scraper collapses that into a single run that streams structured records as it goes, with the email already parsed out of the bio for you.

The reason this is cheap and stable is the same reason the LinkedIn Ad Library is: you are reading public data. The actor loads each public profile page over a residential proxy, reads the embedded structured data, and maps it into a clean record. There is no authenticated session to expire, no account to get banned, and no Chromium instance burning compute. It is pure HTTP, which makes it one of the fastest and cheapest ways to enrich TikTok profiles at volume.

Run the TikTok Profile & Email Scraper — drop in a list of @usernames and get back follower stats, bios, bio links and contact emails in one run. No login, no cookies, no ban risk. $5 per 1,000 profiles.

Input: a list of usernames or profile URLs

The input is deliberately minimal. You give it a list of creators, and a couple of optional knobs.

FieldTypeDescription
profilesarrayRequired. TikTok @usernames or full profile URLs. Both forms work, mixed freely.
onlyWithEmailbooleanSkip any profile that doesn’t expose a contact email. Default false.
maxConcurrencyintegerHow many profiles to fetch in parallel. Default 8.
maxResultsintegerStop after this many profiles. 0 = all.
proxyConfigurationobjectResidential proxy, required by TikTok. Pre-configured for you.

The profiles array is flexible: you can paste bare handles, handles with the @, or whole https://www.tiktok.com/@... URLs, and the actor normalizes them. That means you can feed it the raw output of a discovery tool, a hashtag export, or a column copied straight out of your existing creator CRM without cleaning it first.

Example input

{
  "profiles": [
    "khaby.lame",
    "@charlidamelio",
    "https://www.tiktok.com/@mrbeast"
  ],
  "onlyWithEmail": false,
  "maxConcurrency": 10
}

Two knobs are worth understanding:

  • onlyWithEmail is the single most useful switch for outreach work. Flip it to true and the dataset only contains creators who actually published a contact email, so your export is 100% actionable with no manual filtering afterward.
  • maxConcurrency controls throughput. The default of 8 is safe; bump it up when you are pushing thousands of handles and want them back faster. Results stream into the dataset as they are collected, so you don’t wait for the whole batch to finish before you see data.

Output: exactly what comes back per profile

Each profile resolves to one structured record. These are the fields you get:

  • username / nickname — the handle and the display name.
  • verified / privateAccount — booleans for the blue check and private flag.
  • followerCount / followingCount — audience size and how many accounts they follow.
  • heartCount — total likes across all videos. Read from TikTok’s overflow-safe string stats, so billion-plus totals are exact (no negative-number bug).
  • videoCount — number of public videos.
  • bio — the full profile bio text.
  • bioLink — the clickable link in the bio (often a Linktree or website).
  • region — the account’s country code.
  • email / phone — contact details parsed straight out of the bio. null when not present.
  • socialHandles — an object of cross-platform handles found in the bio (Instagram, YouTube, Twitter, Facebook, Linktree).
  • avatar — the profile picture URL.
  • profileUrl — the canonical TikTok URL for the account.

Example output

{
  "username": "khaby.lame",
  "nickname": "Khabane lame",
  "verified": true,
  "privateAccount": false,
  "followerCount": 161803949,
  "followingCount": 80,
  "heartCount": 2620236217,
  "videoCount": 1329,
  "bio": "If you want to laugh you are in the right place 😎 collab: team@khaby.com",
  "bioLink": "https://linktr.ee/khaby.lame",
  "region": "IT",
  "email": "team@khaby.com",
  "phone": null,
  "socialHandles": { "instagram": "khaby00" },
  "avatar": "https://p16-sign.tiktokcdn.com/...",
  "profileUrl": "https://www.tiktok.com/@khaby.lame"
}

Notice that the email field is pulled out of the bio string — collab: team@khaby.com becomes a clean "team@khaby.com". The same parsing pass extracts the phone and the Instagram handle. You don’t have to write your own regex over the bio; the record arrives ready to join into a contacts table.

You can export the dataset as JSON, CSV, Excel or HTML, or pull it via the Apify API and webhooks to push records into your stack automatically.

Schema design for downstream use

A few choices pay off when you wire this into a database:

  • Use username as your stable join key. Nicknames change constantly; the handle is far more stable, and profileUrl is derived from it.
  • Store socialHandles as a nested object or normalized side table. A creator may expose Instagram and YouTube and Linktree — flattening to a single string forces a painful migration later.
  • Keep heartCount and followerCount as integers, not formatted strings. They come back as real numbers (overflow-safe), so don’t re-parse a “2.6B” label — you already have 2620236217.
  • Always record when you scraped. Follower counts drift; an email can disappear from a bio. Stamp each row with a capture date so you know how fresh it is and can re-run on a schedule for CRM hygiene.

Use cases

Influencer CRM enrichment

You have a list of handles from a discovery tool or a manual shortlist, but your CRM rows are empty shells. Run the list through the scraper and every record fills in: follower count, engagement signal (heart-to-video ratio), region for localization, and the contact email. What was a list of names becomes a vetted, contact-ready pipeline.

Building outreach lists

Flip onlyWithEmail to true, feed in a large profiles list, and you get back only creators who published an email — i.e. only creators who want to be pitched. That export drops straight into your cold-outreach tool with zero manual cleaning. Pair the region field with the right language template and you have a localized, segmented outreach campaign in one pass.

Influencer vetting before a deal

Before you spend budget, verify the numbers. Follower count, total likes, video count and verified status let you sanity-check a creator’s media-kit claims against their real public stats. The overflow-safe heart count matters here: other scrapers mangle billion-plus totals into negative numbers, which quietly corrupts any engagement-rate math you build on top.

CRM hygiene and competitor tracking

Run the same handle list on a weekly schedule to refresh follower stats and re-check emails, so your database never goes stale. The same mechanism works for competitive research: snapshot a category’s top accounts over time to watch follower growth, bio changes, and which creators a competitor is partnering with.

Cost math

Pricing is $5 per 1,000 profiles plus a trivial per-run start fee. Because there is no headless browser and no JavaScript runtime — just HTTP fetches against public pages — the compute cost per profile is a fraction of what a browser-based TikTok scraper burns.

Concrete example: enriching a shortlist of 5,000 creators costs about $25 in result fees. Refreshing a 2,000-handle creator CRM weekly is roughly 8,000 profiles a month — about $40/month. The expensive part of doing this yourself was never the HTTP; it’s the per-profile parsing, the email/phone/social extraction, the overflow-safe stat handling, and the residential-proxy maintenance. The managed actor absorbs all of that.

FAQ

Do I need a login, cookies, or an account? No. The scraper only reads public profile data over a residential proxy. There is no authenticated session, so there is no account to get restricted or banned. That is also why it is safe to run at volume.

Will every profile have an email? No — and this is the most important caveat. An email only comes back if the creator put one in their bio. Big creators chasing brand deals usually do (often as collab: or business:), but plenty of accounts don’t. Set onlyWithEmail: true to discard the blanks automatically, and treat the email hit rate as a function of who you feed in: a list of mid-tier and larger creators yields far more emails than a list of random small accounts.

What’s the difference between this and the Creator Lead Finder? They solve two different halves of the same problem. TikTok Creator Lead Finder is a discovery tool — it finds new handles you don’t already have, by niche or keyword. This Profile & Email Scraper is an enrichment tool — it takes handles you already have and fills in the stats, bio, links and contact details. The natural workflow is to discover with the Creator Lead Finder, then bulk-enrich the resulting handles here.

Does it handle private or deleted accounts? Yes. Private, deleted, or otherwise unreachable accounts are returned with a clear error flag rather than crashing the run. Your batch keeps going and you can filter the failures out afterward.

Can it really scrape thousands of profiles in one run? Yes. Raise maxConcurrency and pass a large profiles array; records stream into the dataset as they’re collected, so a run of thousands of handles is routine. Use maxResults if you want to cap a run for testing.

Are the follower and like counts accurate for huge creators? Yes. Counts are read from TikTok’s string-based, overflow-safe stats, so totals above 2 billion are exact and never come back negative — unlike scrapers that overflow a 32-bit integer on mega-creators.

Wrapping up

Scraping TikTok profiles and emails in bulk is the difference between a list of names and a working outreach pipeline. Because the data is public, the job is cheap, fast, and free of account risk — you just need something that reads each profile, parses the contact details out of the bio, and hands back clean structured rows. Feed it the output of a discovery tool or your existing CRM, flip onlyWithEmail when you want pure outreach lists, and let the actor carry the parsing and proxy maintenance.

Run the TikTok Profile & Email Scraper — bulk creator data plus contact emails, exported to JSON, CSV or Excel, no login required. $5 per 1,000 profiles.

The guide is saved as how-to-scrape-tiktok-profiles-emails-bulk.mdx — your complete walkthrough on how to scrape TikTok profiles and emails in bulk.

Related guides