TikTok Brand Presence Mapper avatar

TikTok Brand Presence Mapper

Pricing

from $2.80 / 1,000 company checkeds

Go to Apify Store
TikTok Brand Presence Mapper

TikTok Brand Presence Mapper

Resolves a TikTok handle or a company domain to the brand account and returns follower, following, likes and video counts, verification status, display name and bio. Flat, Clay ready, one row per company.

Pricing

from $2.80 / 1,000 company checkeds

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

What's new (October 2026)

  • TikTok Shop and business account flags: each row now carries tiktok_shop_seller (TikTok marks the account as a TikTok Shop seller), tiktok_commerce_account (a TikTok business account), and tiktok_commerce_category (the category the account chose). They come from the profile page the actor already reads, so there is no extra request. On by default.

No price change. Existing fields and saved inputs work as before.

🔎 What can TikTok Brand Presence Mapper do?

Give it a TikTok handle, or a company domain, and it returns that brand's TikTok account with follower, following, likes and video counts, verification status, display name and bio, in one flat row.

No login, no API key, no browser. It reads the same public profile page a logged out visitor sees.

📦 What you get⚙️ Features and integrations
🎵 Brand TikTok account, resolved from a handle or a domain
👥 Follower, following, likes and video counts
✅ Verification, display name, bio and bio link
🧾 25 flat fields, snake_case, one row per company
🌐 Domain first discovery, homepage link then search then pattern guess
🎯 Identity gate on anything not declared by the company itself
🔁 Block detection by page size, never by status code alone
⬇️ Export to JSON, CSV, Excel, HTML or XML

Bought by ecommerce and consumer brand sellers, agency new business teams, and creator economy platforms qualifying accounts by reach.

🚫 This is not a TikTok content scraper. It returns account level presence and counts. It does not read videos, comments, hashtags or search results. Most TikTok demand on the Apify Store is for content, and this is deliberately not that.

💡 Why use TikTok Brand Presence Mapper?

It starts from a domain, and nothing else on the Store does. Every TikTok profile scraper on the Apify Store requires a handle or a profile URL as input. If you have a list of company domains, that is precisely the thing you do not have, and TikTok is the hardest platform to guess it for: measured across fifteen B2B homepages, only 4 of 14 declare a TikTok link at all, and the handles that were declared included @supabase.com and @HubSpot, neither of which is the domain stem.

It tells you when the number is rounded. TikTok rounds every count above roughly ten thousand to three significant figures: 2,000,000 and 927,300 are what the platform serves, not what the account has. tiktok_followers_exact is false on those rows so you know before you sum a column.

A blocked fetch says blocked. TikTok's bot detection returns HTTP 200 with a small page, so a naive scraper reports success and no followers. This one detects the downgrade page and reports blocked, which means unknown, not zero.

🧭 Cheap route first, expensive route only when needed

The profile page is fetched over the cheaper route first, which measured 5 of 6 on real brand handles. The sixth returned TikTok's bot detection page, and only that one is retried over residential. tiktok_fetch_route on the row tells you which one answered.

Turn escalateOnBlock off if you would rather accept the occasional blocked row than pay for the retry.

📋 What data can TikTok Brand Presence Mapper extract?

Every row carries 25 flat fields. These are the ones a buyer actually filters and sorts on.

FieldTypeMeaning
degradedbooleanTrue when this row could not be produced normally, for example the company site was unreachable and no discovery could run. A degraded row is never charged.
degradation_reasonstring | nullWhy the row is degraded, in plain words. Null on a normal row.
company_domainstring | nullThe company domain this row is about, normalized. Null when only a handle or a name was supplied. This is the join key across the whole Mamba Labs fleet.
company_namestring | nullThe company name as supplied or derived. Improves search accuracy and is what the identity gate matches against.
tiktok_urlstring | nullCanonical TikTok profile URL, or null when no trustworthy account was found.
tiktok_handlestring | nullThe resolved handle, without the leading @.
tiktok_followersinteger | nullFollower count as TikTok reports it. Rounded by TikTok above roughly ten thousand: read tiktok_followers_exact before treating this as a measurement.
tiktok_followers_exactboolean | nullTrue when the count is below TikTok's rounding floor and is therefore exact. False when TikTok rounded it, which it does to three significant figures above roughly ten thousand. Never sum a column where this is false without saying so.
tiktok_followinginteger | nullHow many accounts this account follows.
tiktok_likesinteger | nullCumulative likes across the account's videos, as TikTok reports it. Rounded on the same basis as followers.
tiktok_video_countinteger | nullNumber of public videos on the account. Zero is a real answer and means a registered but unused account.
tiktok_verifiedboolean | nullTikTok's blue check. False means we read the page and it is not verified. Null means we could not read the page.
tiktok_display_namestring | nullThe account display name as set by its owner.
tiktok_biostring | nullThe account bio text.
tiktok_bio_linkstring | nullThe outbound link on the account bio. When its host is the company domain, the account is the company's own and this row needed no guessing: it is the one field on a TikTok profile that is independent of both the handle and the display name, which is what makes it usable as proof.
tiktok_shop_sellerboolean | nullTrue when TikTok marks the account as a TikTok Shop seller (ttSeller on the profile). False means the profile was read and the flag is off; null means it was not read.
tiktok_commerce_accountboolean | nullTrue when the account is a TikTok business (commerce) account, from the profile's commerce info.
tiktok_commerce_categorystring | nullThe business category the account chose on TikTok, where it set one.
tiktok_discoverystring | nullHow the account was found: input_handle, homepage_sameas, homepage_link, search or pattern_guess. On TikTok specifically, treat pattern_guess with suspicion: measured handles include supabase.com and HubSpot, neither of which is the domain stem.
tiktok_fetch_routestring | nullWhich proxy route answered: datacenter or residential. Datacenter is cheap and answers most requests; a residential value means the cheap route was blocked and the fetch was escalated.
tiktok_statusstringok, not_found, not_extractable, blocked, identity_mismatch, auth_failed or skipped. Read this before reading any count. blocked means TikTok served its bot detection page and the answer is unknown, which is not the same as the account not existing.
run_datestringISO 8601 timestamp of this run. Social counts move, so a row without a date is a number with no shelf life.
row_statusstringok, partial or error. partial means a platform status is blocked, auth_failed or not_extractable; error means the row is degraded.
error_reasonstring | nullWhy the row is partial or an error, in plain words. Null on an ok row.
billable_events_jsonstringThe charges this row caused, as a JSON array, for example [{"event":"company-checked","count":1}]. [] when the row was free.

⚠️ How to read these values. tiktok_video_count: 0 and tiktok_followers: 0 are real answers. They mean a registered account that was never used, which is a different qualification signal from having no account at all, and a different one again from null, which means we could not read the page.

🛠️ How to find a company's TikTok account

  1. If you have the handle, put it in handle. That is the cheapest and most reliable path, and it skips discovery entirely.
  2. If you only have a domain, put it in company_domain. The actor reads the company's own homepage for a declared TikTok link, then falls back to a web search, then to a pattern guess, and identity checks anything it did not get from the company itself.
  3. Supply both when you can. The domain is what the identity gate checks a discovered handle against.
  4. For a list, pass an array of objects with the same fields. Or put the domains in company_domains, one per line, on the Console form.

🧪 Using it in Clay

Add an Enrichment > Apify column, pick this actor, and map either your handle column or your domain column. Every output field arrives flat and snake_case.

If your table already holds TikTok handles from another source, map handle and you pay only for the fetch. If it holds domains, map company_domain and the actor does discovery too.

💵 How much does it cost?

Pay per event. Each run also carries Apify's apify-actor-start event, $0.00005 per GB of run memory, charged once when the run starts (one event at the default memory). Everything else is charged per row of output. Prices shown are the free plan price; paid Apify plans pay 10 to 30 percent less per event, depending on the plan.

EventFires whenPrice
apify-actor-startOnce per run, when the run starts. Apify's own start event, one per GB of run memory.$0.00005
company-checkedOnce per company for which the discovery cascade completed and a non degraded row was produced, whether or not a TikTok profile was found. Does not fire on a degraded row, because on a degraded row no discovery was performed.$0.0040
profile-resolvedOnce per company whose candidate TikTok URL passed the identity gate. Fires on the validation work, not on a populated count. A candidate dropped as an impersonator does not charge: the work was done and the honest answer is that there is no such profile.$0.0030
follower-count-extractedOnce per company where a numeric follower count was read off the public page. Does not fire on not_extractable, blocked, identity_mismatch or url only runs.$0.0025

💳 What you are billed for. A run that resolves a profile but hits TikTok's bot detection charges company-checked and profile-resolved and NOT follower-count-extracted. You are never charged for a number you did not receive.

Setting includeFollowerCounts to false resolves the URL only and never fires the extraction event.

What the same coverage costs bought a la carte: clockworks/tiktok-profile-scraper, the largest TikTok presence actor on the Store at 4,865 thirty day users, charges $0.0030 per result plus a $0.0040 follower add on, so $0.0070 for the same fields. It requires the handle or the profile URL as input. No Store actor resolves a company domain to a TikTok handle, which is the step this actor performs before it fetches anything.

Free plan: free Apify plan users get 800 results a month, reset on the 1st of each month. Any paid Apify plan removes the cap.

Cost cap: set max_charge_usd and the run stops before starting a company that could take it past that amount. The run also stops cleanly when the maximum cost per run you set in Apify is reached, and keeps every row already charged.

⌨️ Input

FieldTypeRequiredMeaning
handlestringnoThe TikTok handle, with or without the leading @, for example shopify. This is the PRIMARY input: only 4 of 14 B2B homepages declare a TikTok link, so supplying the handle is both cheaper and far more reliable than asking the actor to find it.
company_domainstringnoBare company domain, for example shopify.com. Used to FIND the handle when you do not have one, and to identity check a handle that discovery guessed. Supplying both is the best case.
company_domainsarraynoOptional. A list of bare company domains, one per line. One row per domain. When filled it is used instead of company_domain.
company_namestringnoOptional. Improves search accuracy and is what the identity gate checks a discovered account against.
includeFollowerCountsstringnoWhen "true" (default) the profile page is fetched and the counts are extracted. Set "false" to resolve the profile URL only, which is cheaper and needs no proxy. Sent as a string for Clay compatibility.
skipCachestringnoWhen "false" (default) a successful lookup is cached for seven days and reused. Set "true" to force a fresh fetch. Sent as a string for Clay compatibility.
escalateOnBlockstringnoTikTok answers most requests over cheap datacenter routing and blocks a minority with a bot detection page. When "true" (default) a blocked fetch is retried once over residential, which recovers most of them at a higher cost per recovered row. Set "false" to accept the block and return status blocked. Sent as a string for Clay compatibility.
max_charge_usdnumbernoOptional. Maximum charge for this run in USD. The run stops before starting a company that could take its charges past this amount. Leave empty to rely on the maximum cost per run set in Apify.
{
"handle": "shopify",
"company_domain": "shopify.com",
"includeFollowerCounts": "true"
}

📤 Output

Exports to JSON, CSV, Excel, HTML or XML. One flat, snake_case row per company. No nested objects, so it drops straight into Clay, a spreadsheet or a warehouse table without a flattening step.

{
"degraded": false,
"degradation_reason": null,
"company_domain": "shopify.com",
"company_name": "Shopify",
"tiktok_url": "https://www.tiktok.com/@shopify",
"tiktok_handle": "shopify",
"tiktok_followers": 2000000,
"tiktok_followers_exact": false,
"tiktok_following": 249,
"tiktok_likes": 24900000,
"tiktok_video_count": 915,
"tiktok_verified": true,
"tiktok_display_name": "Shopify",
"tiktok_bio": "The entrepreneurship company",
"tiktok_bio_link": "https://shopify.com",
"tiktok_shop_seller": false,
"tiktok_commerce_account": true,
"tiktok_commerce_category": "Shopping & Retail",
"tiktok_discovery": "input_handle",
"tiktok_fetch_route": "datacenter",
"tiktok_status": "ok",
"run_date": "2026-08-22T12:47:34.721Z",
"row_status": "ok",
"error_reason": null,
"billable_events_json": "[{\"event\":\"company-checked\",\"count\":1}]"
}

false versus null, and why the difference matters

false means we looked and the answer is no. null means we could not look, or the platform withheld it. They are never interchangeable in this output. If you filter for companies with no presence on this platform, filter on false, because null rows are unknown rather than absent and including them will overstate your list.

💡 Tips

  • Supply the handle when you have it. TikTok handles are the least guessable in this family.
  • Read tiktok_followers_exact before you sum. A column of TikTok follower counts is mostly TikTok's rounding above ten thousand.
  • Treat pattern_guess rows with suspicion on this platform specifically. The measured real handles include supabase.com and HubSpot; the stem guess would have missed both.
  • blocked is worth retrying later. It is a transient refusal, not an answer.

⚠️ Known limits

  • No videos, comments, hashtags or search. This actor returns account level presence and counts. It does not scrape content. Most of the TikTok demand on the Apify Store is for content scraping, and this is deliberately not that.
  • Counts above roughly ten thousand are rounded by TikTok. There is no exact figure on the page to read. tiktok_followers_exact marks every row where that applies.
  • A minority of fetches are blocked. Measured at one in six on the datacenter route. The residential retry recovers most of them and blocked is the honest answer for the rest.
  • Discovery from a domain is genuinely hard here. 4 of 14 B2B homepages declare a TikTok link. Expect not_found more often than on LinkedIn or YouTube, and expect it to be correct.
  • Follower counts are a public vanity metric, a proxy for reach rather than a measurement of it.

❓ FAQ

Do I need a TikTok account or an API key? No. This reads the public profile page.

Why is tiktok_followers_exact false on most rows? Because TikTok rounds. It serves 2,000,000 and 927,300, not the underlying integers. Below roughly ten thousand it serves the real number and the flag is true.

What does blocked mean? TikTok served its bot detection page instead of the profile. The account may well exist and have followers; we could not see them. It is not the same as not_found.

Can I pass a domain instead of a handle? Yes, in company_domain. Be aware that TikTok is the hardest platform in this family to discover from a domain, for the reasons in Known limits.

Why is this priced above clockworks/tiktok-profile-scraper? It is not, for the same fields: that actor is $0.0030 per result plus a $0.0040 follower add on, which is $0.0070. It also requires the handle. This actor resolves the handle from a domain first, and no Store actor sells that step.

🧩 Want other GTM data?

Mamba Labs builds a fleet of GTM enrichment actors that share one flat, Clay-ready output convention, so their rows join on company_domain with no cleaning step:

ActorActor ID
Account Hiring WatchgRAZA5WBi1r6L0gy7
Agent Accessibility AuditoranxbRv0lKrpQ1pnua
Agent to Brokerage ResolverePRRGLxOGyaVHO4dI
AI Answer Visibility TrackerRJZvzKniYK4nswcMg
AI List Extractor for Any WebsiteD5hOdIez45M0NX5jD
AI Tooling DetectorEwkHhmqiuJgRoVEbE
Amazon Product, Price, and Stock TrackerMtJPZoyjJ3IeqTFyo
API Deprecation and Breaking Change MonitorpHsbS3xXUK8Jqutz5
App Store and Google Play Review MonitorMaCMEhGrbchxQZ92G
B2B Reddit Conversation MonitorSoDryzzsjmY3SsiyG
Bluesky Brand Presence MappereLpxzP4IuXznlFVND
Bluesky Posts ScraperKldSjS7wjoeZ7vQGm
Brand Sponsor FinderPPgK6xrgOmvL7Nrys
Bulk WHOIS and RDAP Domain Age LookupMTrkG5FLU6SjqLdJY
Career Change Signal EnginevX2Yga1a6wGaXaP14
Company Careers Page Jobs, 17 ATS BoardsizP0rfIgf5YaRZfIh
Company Change Event FeedoX44rS0fkEJ3rXLWe
Company Discovery List Builderjch0HdaZnpbMqlcGS
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Funding RecordOFS4Mt1gyYNtGfUbE
Company Headcount EstimatoraHC4GROnNt6kfZe5r
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Role Email, Phone and Address Finder4mMncKaJykiq94grz
Company Social Presence Mapper4k6CCemkgBDz18m2h
Competitor Price, Stock, and Changelog MonitoryxdgCbUQ4PYQWwRNU
Contact Classifier0lGSeYJmniXhGANnO
Contractor License Search, CA, TX, WA, OR, LAWBYK3CPI2kdeq4bP1
CRM Contact Job Change CheckerL8UbEmMJC1XYPSZOb
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
Ecommerce Platform Profiler5G2NeYjBbQTjaTn9L
Ecommerce Store DiscoveryPeHu4sLyFvQHXUUrX
Email List Verifier, Bring Your Own KeyCzVJ4NlaCKk80xpgE
Event Presence IndexWLhMy8fMDgsxdYxv5
Expert Witness Finder, US and AustraliaLIpwlgfE3LaQBaXd4
Facebook Posts ScraperT6jxIeq4ua0SLXnqG
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6
GDPR Cookie Banner and Consent CheckerTrKyOS0KBoGC35nbr
GitHub Followers and Following ExportSGNxDmFb9v3tRDaFI
GitHub Organization Signal ScannerahF8RRpv5mzPao5CN
Google Ads Transparency Center Scraper by Domain1eOwxhBVxzvOXAm4s
Google Maps Places ScraperSuvHCNJ7pIuw6gn54
Google Trends ScraperOeDzaACKmBYJXzHZk
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
Healthcare Provider NPI EnricherMrgbHzcpDq3mOv9Df
ICP Fit ScorerW161DT8W4kW55dMFh
Influencer Change Monitord2VVgahNL6UmcLkhg
Influencer Lead List BuilderKnmByszcv135yM30G
Influencer Profile ScraperEqEnklDVMIcB1V499
Influencer Search Across TikTok, Instagram and YouTubetpkedmloIIWtXx6sg
Influencer Talent Agency LookupzCuX4Mgyg6JvXgGzd
Instagram Facebook Brand Presence MapperHXh65I0JBjPsunbY8
Integration and Marketplace Presence MapperV0guNuvM85Q61f2gj
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Job Posting MonitorQCfICD9kOPiOdj5iI
Journalist and Media List BuildermAfizsZC8qRoR0ecS
Launch Directory List BuildercRq3bmvEZxZtioQ7U
Lead File Import CheckerRwlGVXTf46LqZdUgt
Legal Entity ResolverKHFyPCDIx7CyqULYm
Link in Bio Scraper and Newsletter DetectorOorucdheTIgu7RFzK
LinkedIn Company Page MapperzOPm6A9JEhUGcIdFW
LinkedIn Jobs FeedSH6N0d8cz46BhCC8B
LinkedIn Post TrackeroiGLNPuaf5BRaz9K5
Local Business Lead BuilderqMN97aoHhsAS5bznV
Local Rank and Map Pack Trackergv0kyHGDIg8XscclB
Lookalike Companies from Seed Domainse2O426WBAbLLQL4Z2
Manufacturer and Supplier FinderQcsdmd0lUfPzVkonh
MCP Server Change and Health MonitorIeqjWF9U0BdDQFY08
Media URL TranscriberSyfr7Ya3EsHgWfrB6
Meta Ad Library Ads by Company, Graph APIJ1GWlSXfSGU3u8Wng
Mobile Phone Waterfall6OOgPktf7RIa5XCOP
New Hire FindercKuc38p4nYHNF3IW8
Newly Registered Companies, UK, Norway, Finland, Franceg2WfZhWvCtc57g2Jo
News and Media Mention Monitorgol1PPUKrsIk4QLBd
Newsletter Sponsor TrackerqSwpqxD1TiPZpLQHv
Open Tender and RFP FinderkPTGz6t6TFoUUyfaO
Outbound Stack Detectorv43UJC8r7qW7cBSTG
Page Finder and ExtractorTpurgcOZbVnknlaiC
Partner and Member Directory ExtractorZX0XJPPUvnFJxeC1a
People Finder & Email VerifierLEgloG7tWgQl4o6TD
Person LinkedIn URL ResolverssuyPV8LnEsL8qbnb
Person Social Footprint MapperjfQXa2zW9FHCJot9K
Personal Email to Company ResolverAefT5Ye6YNPFQwJBf
Pinterest Brand Presence Mapperd1HvjZfKhgvWsoEwn
Podcast Guest and Host Findero2MGSvgbSLeeXOsIo
Product Hunt Daily Launches with Maker DomainsO4VX63drWK9Y9x641
Prospect Engineq9rT6v64nUJdPexOQ
Public Feature Board and Roadmap MonitorrcHF5gj5r2Vqnry35
Publishing Frequency TrackerTbLwaUUATdYb6wp4N
Recent Funding Rounds FeedKueVp9MOz7iOoAgDp
Reddit Brand Presence MapperpKQZmDaT70SEb54bZ
Reddit Search and Thread Scraper4Gsth5cP2Xt9V2xDN
Reporting Window FinderuINxR7a1IW8qUTRUX
Research Topic Institutions and AuthorsOH8ANqt7bCKbo72Gk
Sequencer Event PollerS6s8Rjd61tGdrMRk4
Sequencer Lead Push0Jv27VeWM5tSZQs9x
Shopify App Store and Chrome Web Store ListingsgaY0BzkLyN77mD3wI
Site Crawler for Links and TableslLLJ6JxZ4XqN8ULz0
Substack Newsletter and Posts ScraperUEFsdwiPLmPNVy9xd
Team Page People Extractorj8a9zX0k4mNbvDbWK
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
Tennis Match Datav3OX6zxXHZOf2yurO
Threads Posts by Keyword, Exact Match2OT8K8RiEEWtaj2MW
TikTok Brand Presence Mapperfco8FvoJcSafbeyd1
Trustpilot Reputation Enricher3lIqfCt61j4hqE1xz
US and UK Contract Award Winners by CompanyzhEtllASykOcx9hJ8
US Import Records Buyer FinderVIMafpKF5ggOw0COU
VC and Accelerator Portfolio List BuilderchH8hrfuoqqolW06m
Website Accessibility Checker, WCAG 2.2 AAP3jBj3FRghKEhX52z
Website Phrase and Business Model ClassifierCBuZ9k7sRwBeiKiCS
Website Traffic Rank EstimatorGnOFUzlNVIoXgeJjH
Work Email WaterfallOT6xqTFThC0Rjf7Zj
Workplace Program DetectorLi6pPDhqbdzFz3h7G
X Brand Presence MapperoLOgadhHUkNAyDA3w
YouTube Channel from Company Domain6hSpD3kd2s2IQ4VSs
Zillow Listing DetailsyG4zM0Enfsw2NefJ1

Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.

🆘 Support

Issues, field requests and bug reports: open an issue on the actor's Issues tab. Mamba Labs reads every one.

ℹ️ Sourcing and legal. Every field is read from the public TikTok profile page that a logged out visitor sees, with no login and no API key. Follower counts are a public vanity metric and TikTok rounds them above roughly ten thousand. You are responsible for how you use the output, including under applicable data protection law.

Built by Mamba Labs.