TikTok Profile Email Scraper
Pricing
$2.99 / 1,000 results
TikTok Profile Email Scraper
TikTok Profile Email Scraper SD - TikTok Profile Email Scraper is a powerful tool that extracts public bio emails, names, bios, avatars and exact follower, following, video and like counts from TikTok profile URLs or usernames - public data only, no login. Verified status via Data source Both.
Pricing
$2.99 / 1,000 results
Rating
0.0
(0)
Developer
Neuro Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
44 minutes ago
Last modified
Categories
Share
TikTok Profile Email Scraper turns keywords, or a list of TikTok profile URLs and handles, into a clean dataset of public contact emails, bios, follower counts and avatars — a TikTok email finder and TikTok profile scraper in one Actor.
There are two ways in. Give this TikTok profile scraper keywords and it looks for accounts that publish a contact address, then enriches each one. Give it profile URLs or usernames and it goes straight to creators you already know.
A keyword run in the TikTok Profile Email Scraper does not return accounts that merely match a word. It targets pages that publish an address beside it, so most rows arrive with an email attached. Both inputs combine in one run.
The TikTok Profile Email Scraper uses no login, no cookies, no session token, no private or official API, no browser or JavaScript rendering. Only public profile data is collected.
One honest note up front. TikTok's page rate-limits shared proxy pools, so this TikTok email finder asks a public JSON endpoint first and parses the page only when that returns nothing.
Rows the TikTok Profile Email Scraper takes from that endpoint carry the handle, name, bio, avatar, ids and exact follower, following, video and like counts, but leave isVerified, isPrivate and externalUrl empty. Data source: Both fills those in.
What the TikTok Profile Email Scraper does
The TikTok Profile Email Scraper both finds the audience and enriches it. It runs in two phases, and the order is the whole design.
Phase 1 — Google harvest, on the GOOGLE_SERP proxy. Given keywords, the TikTok Profile Email Scraper searches Google with an email dork — site:tiktok.com fitness coach "@gmail.com" — expanded across keyword x modifier x address domain, paging up to maxPagesPerKeyword per query.
Each result block yields the account handle and the address published on that page, in one request. Google rarely prints the target URL now, so the handle comes from the site label, breadcrumb, or a Name (@handle) title.
This is where the volume and most of the addresses come from. Asking Google for pages that already carry an address is one request per ten accounts; fetching every profile hoping for one is a request each, and most bios have none.
Phase 2 — profile enrichment, on the RESIDENTIAL proxy. Every account found is then fetched for its profile data — followers, avatar, bio, verified flag — and merged into one row with the address from phase 1. Accounts you supply skip phase 1 and start here.
The TikTok Profile Email Scraper invents nothing: this is a TikTok contact scraper for addresses creators chose to publish. In order:
- Reads
keywordsand/orprofileUrlsandusernames, then runs phase 1 and queues every handle harvested. - Normalises every target to one canonical URL —
https://www.tiktok.com/@username. A bare handle, an@handleand a full URL resolve to the same target, and duplicates are dropped. - Fetches each profile through the Apify residential proxy, several in parallel, with a fresh exit IP on every retry. The first attempt sends a full browser header set, as a browser asks for a public page; a retry uses a plainer one.
- Parses the response with a regex-first cascade, each step filling only what the previous could not, then extracts further emails from the bio, display name and external URL and pushes the row.
The cascade runs a regex battery against the raw HTML matching key names directly ("signature", "follower_count", "is_verified"), then the TikTok parser, then Open Graph tags. Matching key names rather than object paths is deliberate: platforms move those objects between releases, the key names survive.
Why choose this TikTok Profile Email Scraper
Most tools sold as a TikTok bio email extractor need your logged-in session or hand you raw HTML. The TikTok Profile Email Scraper does neither, and what separates a usable TikTok email finder from a noisy one is filtering, not fetching.
Obfuscation-aware hygiene. Creators hide addresses on purpose. The TikTok Profile Email Scraper undoes [at], (dot), spaced a @ b, zero-width characters and full-width @.
Boundary-correct domains. @gmail.com will not match inside @gmail.company, so your CRM avoids the malformed addresses a naive TikTok email extractor gives you.
Junk filtered, role addresses kept. Placeholders such as email@, yourname@ and noreply@ are dropped, as are prose words like the@. Real role addresses — hi@, hey@, hello@ — are kept, because that is what creators publish.
Every row saved as it lands. Results stream: the TikTok Profile Email Scraper hands each account to profile enrichment the moment the Google search finds it, so the first rows are saved seconds into a run and keep arriving while the search continues.
Each saved row is logged as it is written, naming the handle, address and counts found, and every row carries the same field set whether it came from a keyword, the endpoint or the page.
How to use the TikTok Profile Email Scraper step by step
Setup takes a minute.
- Open the TikTok Profile Email Scraper on Apify and click Try for free or Start.
- Start from a keyword. Type a niche or job title into Search keywords —
fitness coach,creator— and the harvest finds accounts in it that publish an address. Add a Location, or raise Pages per keyword to find more. - Or paste your targets into TikTok profile URLs. Full URLs, bare handles and
@handlesall work, and every list is combined and de-duplicated. - Pick your data source. Leave it on Auto for one request per profile, or choose Both for
isVerified,isPrivateandexternalUrl. - Set Email domains to steer which address domains the search asks for, and to filter what is kept.
- Toggle Only save profiles that have an email if a row without contact details is useless.
- Set Max profiles to cap the run, and Max concurrency for parallelism — 1–30, default 10. Lower it if blocks appear.
- Leave the proxy on RESIDENTIAL. Profile pages block datacenter IPs. Add a Proxy country only for a specific region.
- Click Save & Start. Rows appear as they land.
- Export to CSV, JSON, Excel or XML, or pull the dataset into your CRM through the Apify API.
At the end of a TikTok Profile Email Scraper run the log reports counts of ok, blocked, not found and errors, so you know what to re-run.
Input schema
Every field the TikTok Profile Email Scraper accepts, nothing invented:
| Field | Type | Default | Meaning |
|---|---|---|---|
keywords | array | prefilled with example terms | Search terms. The Actor finds matching TikTok accounts and scrapes each one. |
location | string | "" | Added to every keyword search, e.g. New York. Keyword search only. |
maxPagesPerKeyword | integer 1–30 | 5 | Google results pages read per query. Raise to find more accounts. Keyword search only. |
expandQueries | boolean | true | Search each keyword in several phrasings (keyword + "email", + "contact", …). Keyword search only. |
queryModifiers | array | email, contact, business inquiries, collab, booking, dm | Extra words combined with each keyword when expansion is on. |
profileUrls | array | [] | Full TikTok profile URLs. Bare usernames also accepted. |
usernames | array | [] | Handles without the URL. Combined with the list above. |
customDomains | array | [] | Address domains the search asks Google for, and a filter on the results. Empty searches the common free-mail providers and keeps every address found. |
onlyWithEmail | boolean | false | Skip profiles whose public bio contains no address. |
maxProfiles | integer 1–100000 | 100 | Stop after this many profiles are saved. |
maxConcurrency | integer 1–30 | 10 | How many profiles are fetched in parallel, and how many Google searches run at once. Higher is faster; lower it if rows come back blocked. |
proxyGroup | select | RESIDENTIAL | RESIDENTIAL, BUYPROXIES94952 or UNBLOCKER. |
countryCode | string | "" | Two-letter proxy country (US, GB, DE…). Empty for any. |
dataSource | select | auto | auto, both or page. See the table below. |
googleEmailSearch | boolean | true | Run the per-account email search before the profile fetch. Off means a faster run. |
Supply the TikTok Profile Email Scraper with at least one of keywords, profileUrls or usernames; a run with none of them stops and tells you to add one.
The dataSource input
This input exists only on the TikTok Profile Email Scraper. No other Actor in the family has it, or returns api or api+page in dataSource.
| Value | Behaviour |
|---|---|
auto (default) | Endpoint first; the page only if the endpoint returns nothing. One request per profile. |
both | Endpoint, then the page as well, to fill in isVerified, isPrivate and externalUrl. Two requests per profile. |
page | Skip the endpoint; fetch and parse the page only. |
The endpoint was chosen from a measurement. On a day when TikTok's page rate-limited the residential pool 0 out of 3, it answered 6 out of 6 — and it reports exact follower counts where the page rounds to 2.5M.
Input examples
Starting from keywords, with no list of creators yet:
{"keywords": ["fitness coach", "pastry chef"],"location": "Austin","maxPagesPerKeyword": 5,"expandQueries": true,"onlyWithEmail": false,"maxProfiles": 500,"maxConcurrency": 10,"proxyGroup": "RESIDENTIAL","dataSource": "auto"}
Starting from creators you already know, or mixing both ways in one run:
{"keywords": ["food creator"],"profileUrls": ["https://www.tiktok.com/@bakerjulia", "@paintwithlee"],"usernames": ["studioverde"],"onlyWithEmail": true,"maxProfiles": 500,"countryCode": "US","dataSource": "both"}
Finding creators from a keyword
Keyword search in the TikTok Profile Email Scraper is a real search, not a filter over URLs you supplied. Give this TikTok email finder a niche and the harvest finds accounts in it that publish a contact address.
With expandQueries on, each keyword is combined with every entry in queryModifiers and every address domain, and each combination is paged separately. Location narrows it; maxPagesPerKeyword sets the depth.
Accounts you supplied are queued first, then whatever the harvest discovers.
Two proxies in one run
The GOOGLE_SERP proxy handles the harvest and the per-account email search; the RESIDENTIAL proxy runs the profile fetch. Neither group can do the other's job — Google is reachable only through GOOGLE_SERP, TikTok needs residential exit IPs.
A TikTok Profile Email Scraper run with only profile URLs uses residential alone, unless the email search is on. A keywords-only run fails without GOOGLE_SERP; if it also has profile URLs, it warns and continues.
The per-account email search
A TikTok-only step controlled by googleEmailSearch runs before the profile fetch, looking for an address published on the account's own profile page. Addresses from every route are merged into emails.
What it is worth. Redundancy rather than volume. Measured on eight accounts it found no address the bio did not already contain — but with the fetch blocked, the row still came back with the correct email and emailSource: "search".
Post pages are excluded because Google indexes their comment sections, so addresses there belong to commenters. The TikTok Profile Email Scraper collects no emails from posts or comments.
Output schema
Every TikTok Profile Email Scraper row has all of these fields:
| Field | Meaning |
|---|---|
success | True when the profile was fetched and parsed, or an address was found. A blocked fetch still yields a usable row when an address was found. |
network | Platform name |
dataSource | Which path produced the profile data: page, api or api+page |
keyword | The keyword that found this account, or null for a supplied URL |
query | The exact Google query that found it, or null |
description | The result snippet Google showed, cleaned of labels and counters |
profileUrl | The canonical profile URL that was requested |
url | The URL actually returned, after redirects |
username | Handle |
fullName | Display/real name as published |
displayName | Handle or title the platform shows |
email | First public email found, or null |
emails | Every public email found, deduplicated |
emailSource | Where the addresses came from: search (Google), bio (the profile), bio+search, or null. search is the common value on a keyword run |
bio | Public bio / description text |
followersCount | Followers, when published |
followingCount | Accounts followed, when published |
postsCount | Videos, when published |
likesCount | Total likes/hearts, when published |
isVerified | Verified badge, when published |
isPrivate | Private account, when published |
avatarUrl | Profile picture URL |
externalUrl | Link published in the bio, when present |
userId | Numeric/string platform id, when published |
secUid | TikTok's secondary id |
error | Why a row failed, or null |
scrapedAt | ISO 8601 UTC timestamp |
A field TikTok does not publish is not part of the row at all. Normal, and not hidden.
Output example
A realistic TikTok Profile Email Scraper keyword-run row produced with dataSource: "both":
{"success": true,"network": "TikTok","dataSource": "api+page","keyword": "food creator","query": "site:tiktok.com food creator email \"@gmail.com\"","description": "Home baker in Austin. New recipe every Friday. Business: hello@juliabakes.co","profileUrl": "https://www.tiktok.com/@bakerjulia","url": "https://www.tiktok.com/@bakerjulia","username": "bakerjulia","fullName": "Julia Baker","displayName": "bakerjulia","email": "hello@juliabakes.co","emails": ["hello@juliabakes.co"],"emailSource": "bio+search","bio": "Home baker in Austin 🍰 new recipe every Friday | business: hello (at) juliabakes.co","followersCount": 248317,"followingCount": 412,"postsCount": 619,"likesCount": 5138902,"isVerified": false,"isPrivate": false,"avatarUrl": "https://p16-sign-va.tiktokcdn.com/tos-avt-0068/8c1f2a9e.jpeg","externalUrl": "https://linktr.ee/juliabakes","userId": "6812345678901234567","secUid": "MS4wLjABAAAAq1ZP0xw8m2Rr7bK3fH9tYc","error": null,"scrapedAt": "2026-08-31T09:41:12.508Z"}
Note keyword, query and description: which search found the account, and the snippet Google printed. The bio wrote the address as hello (at) juliabakes.co, normalised before matching.
Use cases for the TikTok Profile Email Scraper
Influencer marketing outreach. Search a niche keyword and the TikTok Profile Email Scraper returns creators who publish a contact address, already enriched — the classic TikTok creator email scraper job.
Agency prospecting. Run a keyword for the vertical you sell into and build a pipeline of creators publishing a business email: a straightforward TikTok lead generation flow.
UGC sourcing. Use it as a TikTok contact scraper to find creators whose audience size matches your budget, then reach them directly.
Lead enrichment. You already have handles on your CRM records. Point the TikTok Profile Email Scraper at them and it fills the empty email column.
Market research. Measure audience size, video volume and total likes across a peer set — a TikTok profile scraper job with nothing to do with email.
Limitations of the TikTok Profile Email Scraper
Read these before you run. Honest constraints of this TikTok profile scraper.
Rate limiting is real. TikTok's own profile page rate-limits shared proxy pools, which is why the TikTok Profile Email Scraper asks a public JSON endpoint first and falls back to the page only when that returns nothing. Some rows still come back blocked — lower maxConcurrency and re-run them.
auto leaves three fields empty. Rows resolved through the endpoint carry the handle, name, bio, avatar, ids and exact follower, following, video and like counts — but isVerified, isPrivate and externalUrl are empty. Choose Both to fill them.
Yield varies, and it is not a promise. The harvest asks for pages that publish an address, so most rows on a keyword run carry one. How many depends on the niche and how many creators in it publish one at all.
The TikTok Profile Email Scraper still returns a row when only profile data is available, with email: null — honest, not a failure. Addresses no longer come only from bios: the harvest, the per-account search and the profile are independent sources, and emailSource names the one that answered.
The harvest needs the GOOGLE_SERP proxy. It is the only route to Google. A keywords-only run fails without that proxy group; a run that also has profile URLs logs a warning and carries on with those.
Public data only. No login, no cookies, no private or official API, no browser, no JavaScript rendering. Anything a signed-out visitor cannot see is out of reach, private accounts included.
Retries are bounded. Up to four attempts per page with backoff and a fresh exit IP; a login redirect counts as rate limiting, not a missing profile.
Free plan cap. On a free Apify account a run stops at 100 profiles; paid plans are uncapped. Platforms also change their markup: this TikTok bio email extractor is built to survive that, not to be immune.
Pricing and run behaviour of the TikTok Profile Email Scraper
The TikTok Profile Email Scraper uses pay-per-event billing: actor-start once per run, and profile-scraped for each saved row.
Runs are resumable. Progress is keyed to a hash of the input, so a migrated or restarted run continues instead of refetching. Changing the input starts a clean run.
FAQ
How does keyword search work?
In two phases. A Google harvest on the GOOGLE_SERP proxy searches with an email dork — site:tiktok.com fitness coach "@gmail.com" — expanded across your keywords, queryModifiers and address domains, each result returning a handle with the address published beside it. Every account found is then fetched on the RESIDENTIAL proxy for its profile data, and the two are merged into one row.
Why does a row have success: true when the fetch was blocked?
Because success now means the run produced something usable: the profile was fetched, or an address was found. A blocked profile still yields a row with the email, and error records what happened.
Do profile URLs and usernames still work? Yes, unchanged. Keywords are an additional way in, not a replacement, and both combine in one run — supplied accounts are queued first, then whatever the harvest discovers.
Does it need my TikTok login, cookies or an API key? No. The TikTok Profile Email Scraper never logs in, never uses cookies or a session, and never touches a private or official API. It reads only public profile data.
Why are isVerified, isPrivate and externalUrl empty on some rows?
Those rows were resolved through the JSON endpoint under auto. Set Data source to Both to fetch the page as well.
What does the per-account email search do, and can I turn it off?
It runs through the GOOGLE_SERP proxy, looking for an address published on the account's own profile page — a second route to the same email that still returns one when the fetch is blocked. It is not a way to find extra addresses; set googleEmailSearch to false to skip it.
Will it find an email that was never made public? No. This TikTok email finder reads public pages — bio, display name, external URL, plus what Google indexed. Addresses never published stay out of reach.
What if a creator wrote name (at) domain (dot) com?
It is still matched. The TikTok Profile Email Scraper undoes obfuscation before extraction, including [at], (dot), spaced a @ b, zero-width characters and full-width @.
How many profiles can one run process?
Free Apify plans are capped at 100 per run. On paid plans the TikTok Profile Email Scraper accepts a maxProfiles of up to 100000.
Can I filter to only business domains?
Yes. List them in customDomains. That steers which domains the search asks Google for and keeps only addresses on them.
Does it work as a general TikTok lead generation tool? Yes. Start the TikTok Profile Email Scraper from a keyword and the harvest builds the list, then enrichment fills it in; or supply handles.
Which platforms have a sibling Actor? Twenty-nine below — same engine, platform-specific parser.
Related Actors
Support
Questions about the TikTok Profile Email Scraper, a bug report, or a custom TikTok lead generation build? Write to neurodata.apify@gmail.com with your run ID and input. Feature requests welcome too.
You are responsible for how you use the data this TikTok profile scraper returns, including compliance with privacy and marketing law where you operate.