# Best TikTok Analytics Tools: 5 of 16 Absent (https://www.socialcrawl.dev/blog/best-tiktok-analytics-tools)
> 5 of 16 metrics were absent on 17 October 2026. 18 accounts, 180 posts, the smallest at 2,077,115 followers. A separate play count was absent on every post.
On 17 October 2026, 5 of 16 checklist metrics were absent. The pull was 18 predeclared accounts and 180 posts, 10 per account, and every post had views above 0.
Sound title (`post.ext.music.track_title`) and a play count separate from views were absent on every post. Audience country, watch time, and completion rate were absent on every profile and every post.
On the US results for best tiktok analytics tools, saved on 17 October 2026, [Brand24](https://brand24.com/blog/tiktok-analytics-tools/) was position 1 (updated 27 July 2026), [SocialPilot](https://www.socialpilot.co/tiktok-analytics-tools) position 2 (24 September 2026), and [Sprout Social](https://sproutsocial.com/insights/tiktok-analytics-tools/) position 5 (20 January 2026). They publish a tool ranking and an editorial date. They do not publish a post sample, a formula, or a measurement window.
The same 180 posts had a median of 179,266.5 views and a median engagement rate of 6.36% (exact ratio 0.06364131832461459), from (likes + comments + shares) / views. Shares was present on all 180. The smallest account was The Washington Post at 2,077,115 followers. That 6.36% is this sample's median. The separate [1,269-post engagement-rate benchmarks](/blog/social-media-engagement-rate-benchmarks-2026) use (likes + comments) / views on a June 2026 sample, so the two rates are not the same series.
## What do TikTok creator analytics actually count?
Eleven of the 16 metrics were populated on at least one row. Five were absent on every row. Nine of the 11 were non-null on every row of their object.
| Metric | Object | Field in the response | Non-null | Fill | 11 or 5 |
| --- | --- | --- | --- | --- | --- |
| Views | post | `post.engagement.views` | 180/180 | 100% | populated |
| Likes | post | `post.engagement.likes` | 180/180 | 100% | populated |
| Comments | post | `post.engagement.comments` | 180/180 | 100% | populated |
| Shares | post | `post.engagement.shares` | 180/180 | 100% | populated |
| Saves / collects | post | `post.engagement.saves` | 180/180 | 100% | populated |
| Post create time | post | `post.published_at` | 180/180 | 100% | populated |
| Duration | post | `post.content.duration_seconds` | 180/180 | 100% | populated |
| Caption | post | `post.content.text` (non-empty) | 175/180 | 97.22% | populated |
| Sound name | post | `post.ext.music.track_title` (no `post.ext.music` object on any post) | 0/180 | 0% | always absent |
| Hashtags | post | `post.ext.hashtags` (non-empty array) | 84/180 | 46.67% | populated |
| Play count separate from views | post | no `play_count` / `playCount` field on any post | 0/180 | 0% | always absent |
| Followers | profile | `author.followers` | 18/18 | 100% | populated |
| Following | profile | `author.following` | 18/18 | 100% | populated |
| Audience country | profile and post | no audience or demographic field. `author.location` and `post.ext.region` are not this. | 0/18 profiles and 0/180 posts | 0% | always absent |
| Watch time | profile and post | no watch-time field | 0/18 profiles and 0/180 posts | 0% | always absent |
| Completion rate | profile and post | no completion or retention field | 0/18 profiles and 0/180 posts | 0% | always absent |
Views, likes, comments, shares, saves, `post.published_at`, and `post.content.duration_seconds` were present on all 180 posts. `author.followers` and `author.following` were present on all 18 profiles. Caption text was non-empty on 175 of 180 posts (97.22%). Shares and saves were present on all 180 posts, including four zeros for shares and four zeros for saves. A zero counts as present. Views are the only play or view metric on these posts. There is no second play-count field next to `post.engagement.views`.
The 84 non-empty hashtag arrays (46.67%) are exactly the posts whose captions contained a `#` token. The other 96 were null, not an empty list. A different measurement covers [whether hashtags change TikTok views](/blog/do-hashtags-work-on-tiktok).
Follower totals, following totals, and the post metrics above are the tiktok account analytics on these public objects. A viewer-country breakdown was not on the profile or the post.
The 18 accounts were locked before the pull. The smallest, The Washington Post, had 2,077,115 followers. Median followers across the 18 was 12,829,069, the mean of NBC News (12,547,601) and CBS News (13,110,537). Every account in the set is above 2 million followers. The fill rates describe that set on 17 October 2026.
11 of 16 metrics were populated on at least one public profile or post on 17 October 2026, and 9 of those 11 were present on every row of their object (180 of 180 posts for the post counts, 18 of 18 profiles for followers and following). Caption text was non-empty on 175 of 180 posts, and a hashtag array on 84 of 180. Sound title and a separate play count were absent on every post, and audience country, watch time, and completion rate were absent on every profile and every post.
## Does a TikTok analytics dashboard match the live account?
Mean views on the same 180 posts were 18,983,168.21, and the median was 179,266.5. The public objects do not carry every field named in tiktok analytics tools writeups.
We did not log into Exolyt, Pentos, Sprout Social, Hootsuite, Brand24, SocialPilot, or TikTok's logged-in analytics. The comparison is to fields on the public profile and on one page of posts. [Brand24](https://brand24.com/blog/tiktok-analytics-tools/) lists watch time and completion rate on TikTok's own analytics, and "Rising sounds" for Pentos. [Sprout Social](https://sproutsocial.com/insights/tiktok-analytics-tools/) lists audience demographics in its opener. Watch time, completion rate, and audience demographics were not on the profile object or the post object. [SocialPilot](https://www.socialpilot.co/tiktok-analytics-tools) does not name watch time or completion in its native list.
Brand24 says the author spent six weeks testing and gives no start or end date. Its only arithmetic is a vendor score weighted 25%, 20%, 20%, 15%, 10%, and 10%. Its comparison table has 14 rows under a 12-tool headline. SocialPilot marks tools Full, Partial, or None and says the 12 tools were reviewed in September 2026. Sprout Social's prose says 13 tools under a 14-tool headline, and it prints no equation. None of the three names an account list.
`post.ext.music_id` was present on 174 of 180 posts (96.67%). The six missing ids were washingtonpost (1), nbcnews (1), cbsnews (2), gymshark (1), and complex (1). The post object had no track title, and no post carried a `post.ext.music` object. The study did not call `GET /v1/tiktok/song`, so a missing title on the post is not a claim that the id cannot be looked up.
Audience country, watch time, and completion rate were not on the profile object (0 of 18) or the post object (0 of 180). The study did not call `GET /v1/tiktok/user/audience`. Absence on these two objects is not a claim that no audience route exists.
A viewer-country split is what tiktok audience insights refers to. These objects did not have one. `author.location` and `post.ext.region` are an account region and a video region. Region on the 180 posts was US 141, GB 28, CA 6, BO 2, DK 1, TR 1, and ZA 1. That is where TikTok registered the video. MrBeast's `author.location` came back as CA. That is the account string. It does not say where his viewers are.
Profile `computed.engagement_rate` was null on all 18 accounts because lifetime likes divided by followers exceeded 1. Every profile carried a warning of this form. BBC News is the example. The raw ratio differs by account.
```
computed.engagement_rate: author ratio exceeded 1.0 (raw: 66.776719); returned null. A lifetime likes/followers ratio is not a real engagement rate
```
Post-level computed fields matched (likes + comments + shares) / views within 0.000001 on all 180 posts. The largest absolute gap was 4.99e-7. The median in this study uses the unrounded ratio. Do not publish a profile-level rate from this sample.
Component medians are medians of each count on its own. They are not inputs to the engagement-rate median. The ratio of these medians is not 6.36%. On the same 180 posts the component medians were 10,487 likes, 235 comments, 396 shares, 572 saves, and 28.765 seconds of duration. Duration's two central values were 28.281 and 29.249 seconds.
| Stat | Views | Engagement rate |
| --- | --- | --- |
| Minimum | 676 | 0.0874% (0.0008739972790650746) |
| 25th percentile | 23,976.75 | 3.64% (0.03643982473827291) |
| Median | 179,266.5 | 6.36% (0.06364131832461459) |
| 75th percentile | 2,357,437 | 10.34% (0.10340191983560519) |
| Maximum | 2,383,666,896 | 26.11% (0.26114639568116865) |
| Mean (not the headline) | 18,983,168.21 | 7.92% (0.07920729005545082) |
The view quartiles use the same type-7 rule as the median. The two view counts around the 25th percentile were 23,622 and 24,095. The two around the 75th were 2,316,304 and 2,480,836. The two central view counts were 177,510 and 181,023. The two central rates were 0.06253253774378278 and 0.06475009890544639.
The mean view count is 18,983,168.21 because one pinned Zach King video from 9 December 2019 had 2,383,666,896 views (id [`6768504823336815877`](https://www.tiktok.com/@zachking/video/6768504823336815877), published 2019-12-09T18:15:37Z). The minimum is a Washington Post post about an hour old, id `7697435232399592717`, published 2026-10-17T01:00:07Z, with 676 views. The median of the 18 per-account medians was 8.16% (0.08161350287356264). That figure summarizes accounts. The post-level headline stays 179,266.5 views and 6.36%.
Niche labels were locked before the pull. Creator median views in this table are not comparable to news median views. This is the same large-account set, split four ways.
| Niche | Accounts | Posts | Median views | Post-level median ER | Account-level median ER |
| --- | --- | --- | --- | --- | --- |
| news | 5 | 50 | 42,445 | 5.04% (0.05035413577296469) | 5.45% (0.05453834989649832) |
| creator | 5 | 50 | 8,209,791.5 | 8.74% (0.08738834562672637) | 9.70% (0.09699135695232043) |
| brand | 5 | 50 | 124,411.5 | 5.43% (0.054301081950109215) | 9.74% (0.09739000558210664) |
| institution | 3 | 30 | 26,572 | 7.01% (0.07011693777095672) | 8.92% (0.08922527765269075) |
Brand posts sit at 5.43% (0.054301081950109215) while the median of the five brand-account medians is 9.74% (0.09739000558210664). Chipotle's 10-post median is 0.91% (0.009091021326770187). Duolingo's is 15.50% (0.15498807680066445). With five brand accounts, the account-level median is the middle account, Nike, at 9.74%.
FastMoss, Kalodata, and SmartScout rank on this query for shop sales. This pull did not measure shop orders. See [TikTok Shop APIs](/blog/best-tiktok-shop-apis-2026).
## How do you check TikTok analytics against the account itself?
A public check on these two endpoints can see views, likes, comments, shares, saves, post time, duration, followers, and following. A caption was non-empty on 175 of 180 posts, and a music id was present on 174 of 180. From the profile object or the post object alone, that check cannot see audience country, watch time, completion rate, or a sound title.
A tiktok profile analyzer aimed at a public handle can check those same counts. Watch time and completion were not on these objects, so a tiktok analytics tracker cannot read them from the profile or the post alone.
We did not open the native product at tiktok.com/analytics (the query tiktok analytics). A fetch of that domain was refused, so this post does not invent an official metric list. The three listicles describe that product in different words.
[Brand24](https://brand24.com/blog/tiktok-analytics-tools/) gives TikTok Studio first-party views, watch time, completion rate, follower growth, demographics, traffic sources, and LIVE insights. The write-up adds average watch time and audience demographics by age, gender, and location, and calls the product free on a Business account. [SocialPilot](https://www.socialpilot.co/tiktok-analytics-tools) lists video and profile views, follower growth, engagement, top-performing videos, traffic sources, and follower activity, across windows of 7, 28, 60, or 365 days. It says most historical data stops at 365 days. It does not name watch time, completion, likes, comments, shares, reach, or demographics. [Sprout Social](https://sproutsocial.com/insights/tiktok-analytics-tools/) names Overview, content, followers, and live videos, calls native analytics completely free for a creator or business account with at least one video, and says that unlike TikTok's 60-day limit it keeps performance history forever. The page does not link a TikTok document for that 60-day limit, and the limit conflicts with SocialPilot's 365-day windows.
Those are claims on their pages. This pull did not measure them.
## How did we measure this, and can you reproduce it?
The question was fixed before the pull. Of the metrics these writeups usually name, which ones are non-null on a public profile and one page of posts, and what is the median view-based engagement rate of those posts on this date?
### Eighteen accounts, locked before the pull
Eighteen public accounts, chosen because they publish under a known newsroom, creator, brand, or publisher name, not because of their stats. No account was swapped after the numbers came back. No backup was called. `author.private` was false on all 18. The returned username matched the handle we requested. Every video page had `pagination.page_size` 10, `pagination.has_more` true, and `data.dropped` 0. There were no duplicate post ids, no HTTP errors, and no `_warnings` on the video calls.
| Handle | Niche label | Followers |
| --- | --- | --- |
| nytimes | news | 3,916,355 |
| washingtonpost | news | 2,077,115 |
| bbcnews | news | 16,501,708 |
| nbcnews | news | 12,547,601 |
| cbsnews | news | 13,110,537 |
| khaby.lame | creator | 163,012,583 |
| charlidamelio | creator | 160,333,861 |
| mrbeast | creator | 144,090,822 |
| zachking | creator | 86,828,999 |
| bellapoarch | creator | 91,520,032 |
| nike | brand | 9,308,677 |
| duolingo | brand | 18,264,995 |
| chipotle | brand | 2,936,563 |
| netflix | brand | 54,196,497 |
| gymshark | brand | 6,686,419 |
| nasa | institution | 2,089,290 |
| natgeo | institution | 9,676,560 |
| complex | institution | 6,389,852 |
The niche label for complex stays institution. We locked that label before the pull. Complex is a publisher, not a science institution. Backups were locked and not called, because nothing failed: abcnews, skynews, addisonre, spencerx, redbull, spotify, ted, thedodo, markrober, mcdonalds.
The next table is each account's median of its own 10 posts. Location is `author.location` as returned.
| Handle | Niche | Followers | Following | Location | Pinned on page | Median views | Median engagement rate | Oldest post on page (UTC) | Newest post on page (UTC) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| nytimes | news | 3,916,355 | 12 | US | 0 | 14,244.5 | 7.40% (0.07400172809443453) | 2026-10-16 | 2026-10-16 |
| washingtonpost | news | 2,077,115 | 64 | US | 3 | 2,354.5 | 3.08% (0.030813565519447875) | 2025-09-06 | 2026-10-17 |
| bbcnews | news | 16,501,708 | 17 | GB | 0 | 190,288 | 6.21% (0.06213028417562763) | 2026-10-16 | 2026-10-16 |
| nbcnews | news | 12,547,601 | 22 | US | 0 | 66,986.5 | 5.45% (0.05453834989649832) | 2026-10-16 | 2026-10-17 |
| cbsnews | news | 13,110,537 | 75 | US | 3 | 13,692 | 3.49% (0.03491681665915508) | 2026-10-15 | 2026-10-17 |
| khaby.lame | creator | 163,012,583 | 81 | US | 0 | 7,486,199.5 | 10.17% (0.10172301561593225) | 2026-08-25 | 2026-10-16 |
| charlidamelio | creator | 160,333,861 | 1,449 | US | 0 | 1,775,162 | 13.06% (0.13063950407911243) | 2026-10-08 | 2026-10-17 |
| mrbeast | creator | 144,090,822 | 346 | CA | 0 | 26,318,805 | 9.63% (0.09629005752268979) | 2026-09-05 | 2026-10-08 |
| zachking | creator | 86,828,999 | 183 | US | 2 | 13,002,220 | 9.70% (0.09699135695232043) | 2019-12-09 | 2026-09-29 |
| bellapoarch | creator | 91,520,032 | 648 | US | 3 | 342,148.5 | 4.24% (0.042396726642330684) | 2026-05-01 | 2026-10-16 |
| nike | brand | 9,308,677 | 91 | US | 0 | 81,951 | 9.74% (0.09739000558210664) | 2026-10-01 | 2026-10-16 |
| duolingo | brand | 18,264,995 | 317 | US | 1 | 614,898.5 | 15.50% (0.15498807680066445) | 2025-06-10 | 2026-10-13 |
| chipotle | brand | 2,936,563 | 307 | US | 0 | 154,171.5 | 0.91% (0.009091021326770187) | 2026-10-05 | 2026-10-15 |
| netflix | brand | 54,196,497 | 453 | US | 0 | 24,646 | 4.99% (0.04994885635267498) | 2026-10-15 | 2026-10-17 |
| gymshark | brand | 6,686,419 | 46 | GB | 3 | 117,572.5 | 10.04% (0.10035151800101809) | 2026-07-09 | 2026-10-16 |
| nasa | institution | 2,089,290 | 23 | US | 1 | 300,645.5 | 8.92% (0.08922527765269075) | 2026-07-21 | 2026-10-16 |
| natgeo | institution | 9,676,560 | 62 | GB | 1 | 13,791.5 | 9.15% (0.09149056297659565) | 2026-09-10 | 2026-10-16 |
| complex | institution | 6,389,852 | 141 | US | 3 | 3,946 | 3.53% (0.03525051620852393) | 2026-10-04 | 2026-10-17 |
### Formula and median
Engagement rate = (likes + comments + shares) / views when views is finite and above 0 and likes and comments are finite. If shares had not been finite, the numerator would have been likes + comments and the post would have been counted as shares-null. Shares was finite on all 180 posts, and 4 of those values were 0, so the shares-null branch was not used. The rate is not clamped. A result above 1 would have been kept. None of the 180 posts exceeded 1. The maximum was 0.26114639568116865.
The median is the Hyndman-Fan type 7 quantile at p = 0.5, fixed before the pull. An even count takes the arithmetic mean of the two central values. For 180 posts, (177,510 + 181,023) / 2 = 179,266.5 views. The central rates, 0.06253253774378278 and 0.06475009890544639, average to 0.06364131832461459. The account-level figure uses the same rule on the 18 per-account medians. The two central account medians were The New York Times (0.07400172809443453) and NASA (0.08922527765269075). Their mean is 0.08161350287356264, the 8.16% figure that is not the headline.
Populated was also fixed before the pull. A number counts when it is finite, including 0. Text counts when it is non-empty after trimming. Hashtags count only when `post.ext.hashtags` is a non-empty array. A key that exists and is null does not count.
### Endpoints and credits
Both calls are GETs on the SocialCrawl API. No second page. We sent `Cache-Control: no-cache` on every call. `cached` was false on all 36. `judgments=off` was sent on the video calls only, so this study does not use label fields. Engagement counts do not depend on that flag. See the [TikTok profile and video endpoints](/platforms/tiktok) and the [API reference](/docs/api-reference) for our data API.
```http
GET /v1/tiktok/profile?handle=HANDLE
GET /v1/tiktok/profile/videos?handle=HANDLE&judgments=off
```
The profile call is 1 credit. The videos call is 1 credit per page. We made 18 of each, page 1 only. Credits spent, the sum of `credits_used`, were 36. Calls ran from 2026-10-17T02:08:59.873Z through 2026-10-17T02:11:49.553Z, which is 17 October 2026 (UTC).
The balance went from 14,959 at 2026-10-17T02:08:59.531Z to 15,272 at 2026-10-17T02:11:52.349Z. That rise is not the cost. The dev key was shared with other jobs, and `credits_remaining` jumped from 14,950 to 15,299 between the CBS News profile call and the CBS News videos call.
`GET /v1/tiktok/user/audience` and `GET /v1/tiktok/song` were not called. The missing track title is on the post object, and the missing audience country, watch time, and completion rate are on the profile object and the post object. They do not describe routes this study left unused.
### What this sample cannot tell you
Exolyt, Pentos, Sprout Social, Hootsuite, Brand24, SocialPilot, and TikTok's logged-in analytics were not opened. All 18 accounts are above 2 million followers, so the medians describe this page of large public accounts.
The page is source order, not a fixed window. `has_more` was true on every account. Age is measured at 2026-10-17T02:08:59Z.
| Cut | Posts |
| --- | --- |
| Published on the pull day, 2026-10-17 | 10 |
| Up for 48 hours or less at 2026-10-17T02:08:59Z | 79 |
| Published on or after 2026-10-10 | 108 |
| Published on or after 2026-09-17 (30 days) | 153 |
| Older than 30 days | 27 |
| Older than 1 year (before 2025-10-17) | 3 |
| Pinned | 20 |
| Pinned and older than 30 days | 14 |
| Not pinned, and older than 30 days | 13 |
Same-day view counts are not mature. Ten posts were published on the pull day, including the Washington Post post published about an hour before the pull, with 676 views. The age counts describe one unsettled page, not a posting schedule.
Pinned posts stay in the headline because the endpoint returns them. Dropping the 20 pinned posts leaves 160, with median views 145,519 and a median engagement rate of 6.23% (0.06229910208736302). That pair is a sensitivity check. The headline keeps the 180-post page.
`author.verified` was true on 6 of 18 accounts (khaby.lame, charlidamelio, mrbeast, zachking, bellapoarch, gymshark) and false on the other 12. False can mean the source sent no badge, rather than a confirmed unverified account. `author.joined_at` was null on all 18, so account age is not on this profile object. `author.ext.followers_approximate` was absent on all 18, so these follower counts were not marked approximate. `author.bio` was empty on netflix and non-empty on the other 17. `author.ext.business_category` was an unvalidated string, empty on nasa and zachking, non-empty on 16 of 18. Do not treat that string as a checked industry.
On Nat Geo post `7697312460767776030`, the caption repeated `#911onABC` and the hashtag array listed `911onabc` once. Five posts had an empty caption, four on charlidamelio and one on chipotle.
To [pull a public TikTok profile and its videos](/blog/tiktok-data-without-api) for each of the 18 handles, call `GET https://www.socialcrawl.dev/v1/tiktok/profile?handle=HANDLE` and `GET https://www.socialcrawl.dev/v1/tiktok/profile/videos?handle=HANDLE&judgments=off`, then take the median of (likes + comments + shares) / views on returned posts with views above 0. HANDLE is the account handle. On 17 October 2026 each call cost 1 credit and the videos call returned 10 posts.
## Frequently asked questions
### What does TikTok creator analytics include?
On 17 October 2026 a public profile and one page of posts, 18 accounts and 180 posts, carried 11 of 16 checklist metrics on at least one row. Views, likes, comments, shares, saves, post time, and duration were present on all 180 posts. Followers and following were present on all 18 profiles. Caption text was non-empty on 175 of 180 posts, and a hashtag array was non-empty on 84 of 180. Sound title and a play count separate from views were absent on every post. Audience country, watch time, and completion rate were absent on every profile and every post. The pull did not call `GET /v1/tiktok/user/audience` or `GET /v1/tiktok/song`, so the gaps are not a logged-in analytics inventory.
### Why do TikTok analytics tools disagree on the same video?
We did not open the products, so this study cannot say their logged-in numbers differ. On these 180 posts the view-based rate, (likes + comments + shares) / views, matched the post-level computed value within 0.000001. The largest absolute gap was 4.99e-7. The profile-level rate was null on all 18 accounts, because lifetime likes divided by followers exceeded 1. The BBC News warning shows a raw ratio of 66.776719, and the raw ratio differs by account. The mean view count on the same posts was 18,983,168.21. The median was 179,266.5. One pinned Zach King video from 9 December 2019, with 2,383,666,896 views, pulls the mean up and does not set the median. [Brand24](https://brand24.com/blog/tiktok-analytics-tools/), [SocialPilot](https://www.socialpilot.co/tiktok-analytics-tools), and [Sprout Social](https://sproutsocial.com/insights/tiktok-analytics-tools/) name metrics and publish no shared formula.
### Is TikTok analytics free, and what is missing on the free view?
[Brand24](https://brand24.com/blog/tiktok-analytics-tools/) calls TikTok Studio completely free, and its write-up says the native product is free on a Business account. [Sprout Social](https://sproutsocial.com/insights/tiktok-analytics-tools/) calls native analytics completely free for a creator or business account with at least one video. That is what the listicles say about tiktok analytics free. We did not open the native product, so this study does not inventory a free tier or quote a price. On the public posts, sound title and a separate play count were absent on every row. Audience country, watch time, and completion rate were absent on every profile and every post.
### What is the difference between TikTok analytics and a third-party dashboard?
We did not open the native product or the third-party products. The difference this study can support is which fields were on the public objects. [Brand24](https://brand24.com/blog/tiktok-analytics-tools/) names watch time, completion rate, and rising sounds. [Sprout Social](https://sproutsocial.com/insights/tiktok-analytics-tools/) names audience demographics. Watch time, completion rate, and audience demographics were not on the profile or the post. The post had no sound title. Views, likes, comments, shares, saves, duration, and follower totals were.
### Can a TikTok analytics dashboard show an account you do not operate?
Yes for the public counts on these 18 accounts. We do not operate the accounts, and the responses still included followers, views, likes, comments, shares, saves, and duration. Audience country, watch time, and completion rate were not on the profile or post objects returned here.