TikTok Hashtag Stats Scraper & Monitor - Views & Video Growth
Pricing
from $0.73 / 1,000 hashtag stats row returneds
TikTok Hashtag Stats Scraper & Monitor - Views & Video Growth
Track how fast TikTok hashtags grow: exact view and video counts per hashtag, average views per video, and with monitoring on, the views and videos added since the last run and per hour. The rounded view count is shown beside the exact one.
Pricing
from $0.73 / 1,000 hashtag stats row returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Track how fast TikTok hashtags grow: view and video counts for any hashtag, and with monitoring on, the views and videos added since your last run and the growth per hour (viewCountDelta, videoCountDelta, viewsPerHour, videosPerHour), so you can compare hashtags or report on a campaign without keeping your own history.
TikTok sends two view counts for a hashtag: a rounded one and an exact one. This Actor returns the exact figure as viewCount and puts the rounded one beside it, because they differ. Measured on 2026-09-14 from Apify, 7 of 7 hashtags had a rounded view count that differed from the exact one, by up to 48,136,872 views - and not always downwards:
| Hashtag | Rounded view count | Exact view count | Rounded minus exact |
|---|---|---|---|
| #booktok | 550,700,000,000 | 550,651,863,128 | +48,136,872 |
| #roblox | 1,574,800,000,000 | 1,574,810,245,517 | -10,245,517 |
A rounded count only moves when the growth crosses its rounding step (100,000,000 views for #booktok), so tracking built on it reports "no growth" through changes smaller than that. This Actor compares the exact figures.
The rounded video count TikTok sends is 0 in all 10 responses measured (for hashtags with 1,976,565 to 9,276,060,801 videos), so it is not returned at all - you will never get a hashtag with "0 videos" from it. videoCount is the exact figure.
Best for
- Hashtag research and niche sizing - compare how big hashtags really are, and how many views an average video gets (
averageViewsPerVideo). - Campaign and branded-hashtag reporting - schedule it daily and get the views and videos added since the previous report.
- Trend tracking -
viewsPerHourandvideosPerHourshow which hashtags are accelerating, without diffing anything yourself.
What each row contains
- What you asked for and what TikTok returned -
inputHashtag,hashtag,hashtagMatchesInput. TikTok normalises names itself: on 2026-09-14skin carecame back as #skincare andaas #A. Both names are on every row, and a hashtag that two of your entries resolve to is read and charged once. - Identity -
challengeId,hashtagUrl,description,isCommerce. - Exact counts -
viewCount,videoCount,averageViewsPerVideo. - The rounded figure -
viewCountRoundedandviewCountRoundingGap(rounded minus exact). - Monitoring -
change,isFirstCheck,previousCheckedAt,previousViewCount,previousVideoCount,viewCountDelta,videoCountDelta,hoursSincePreviousCheck,viewsPerHour,videosPerHour.
Monitoring, and what it costs
Turn monitoring mode on and the Actor remembers each hashtag's exact counts. On later runs a hashtag comes back only when they moved:
- Any change (default) - the video count moved, or the view count moved by at least
minViewIncrease(0 = any movement). - New videos only - the video count moved.
The comparison is always against the last row you received for that hashtag. A movement too small to cross your threshold is not remembered, so small movements add up until they cross it instead of being lost. The first run returns every hashtag once (change: "first-check") to set the baseline; later rows say change: "changed".
Counts are remembered per hashtag, not per list, so adding a hashtag does not reset the others. In monitoring mode maxResults does not cut changes: every change among the hashtags read is returned. If the run's maximum total charge stops a changed hashtag from being delivered, it is not remembered, so its counts are still compared with the last row you received the next time it is read.
Large hashtags come back on almost every run, in both modes. Their counts move all the time: on 2026-09-14 two monitoring runs of #booktok started about 7 seconds apart returned +14,424 views and +8 videos. Neither minViewIncrease nor "new videos only" makes such a hashtag quiet, because new videos keep arriving. Monitoring saves rows for small and slow hashtags, and gives every row the growth since the previous one.
Do not put the same hashtag in two schedules that can run at the same time. Each run writes back only the hashtags it delivered, merged into the counts as they are at that moment, then reads them again and writes once more if another run overwrote them - so two overlapping runs over different hashtags keep each other's history. But Apify's key-value store has no atomic update, so this cannot be made watertight: runs that finish at the same instant, or read the same hashtag at the same time, can still overwrite each other's record, and the next run may return a first-check or a change a second time.
What it costs
- The row price for every row returned - in monitoring mode, that is
first-checkandchangedrows only. - In monitoring mode, $0.30 per 1,000 hashtag checks - charged for every hashtag whose counts were read, whether or not they moved. Names TikTok returns nothing for and bot checks are not charged. Example: 50 hashtags checked every hour is 36,000 checks a month, $10.80, plus the rows returned.
The Actor reads only as many hashtags as the run's maximum total charge can pay for with both a check and a change row each, so a low limit cannot use up the budget on check fees and leave nothing for the rows. Hashtags beyond that are not read; a budget-reached row says how many, and raising the maximum total charge lets them be read.
Rows that are never charged
no-hashtag-found- TikTok returned no hashtag for that name (code 10205, a 205-byte answer). That is the answer it gave on 2026-09-14 for made-up names; whether it gives the same answer for a hashtag that exists but is hidden has not been measured, so the row does not claim the hashtag has no videos.blocked- every TikTok address answered with a bot check or an empty response. No count is reported.unreadable- the response could not be read, carried a status code whose meaning has not been measured here, or did not contain the exact counts. A response without the exact counts is never returned with the rounded ones in their place.no-change- monitoring ran and no hashtag moved enough. (The check fee for the hashtags read still applies.)invalid-input- the text is not a hashtag (for example it contains/,?or&), so nothing was requested.budget-reached- the run's maximum charge was reached: the row says how many ready rows fit, or how many hashtags were not read in monitoring mode.not-checked- the end of your list was not read, becausemaxResultshashtags had already been read (monitoring off), or because more than 1,000 hashtags were given. The row says how many.
Which addresses this Actor requests
TikTok serves the same hashtag data at m.tiktok.com, t.tiktok.com and www.tiktok.com. Measured on 2026-09-14, from Apify's network www.tiktok.com answered this request with an empty response (HTTP 200, 0 bytes) on every attempt, with and without a proxy, while m.tiktok.com answered with the data every time. So each hashtag is requested at m.tiktok.com first, then the other two; an empty answer is treated as a failed request and never as a hashtag with no views. Only if all three fail does the run retry them through a proxy (unless useProxy is off).
How fast
Hashtags are read one at a time with a short pause between requests, about 1.3 seconds each. One run reads up to 1,000 hashtags.
Input
| Field | What it does |
|---|---|
hashtags | The hashtags to read: booktok, #booktok, or https://www.tiktok.com/tag/booktok. If empty, the example hashtags booktok and skincare are read. |
maxResults | How many charged rows to return in total (up to 1,000). |
monitoringMode | Remember the counts and return a hashtag only when they move. |
monitorMode | Views or videos changed, or new videos only. |
minViewIncrease | Ignore view-count movements smaller than this. |
resetMonitoringState | Forget every remembered count and start a fresh baseline. |
useProxy | Retry through a proxy if every TikTok address answers with a bot check or nothing. |
Questions
Why is viewCount different from a rounded number like 550.7B?
Because TikTok sends both a rounded and an exact figure. This Actor returns the exact figure as viewCount and the rounded one next to it in viewCountRounded, so you can see the gap for every hashtag. Which of the two a given TikTok screen displays has not been measured here.
Why is there no rounded video count? Because the rounded video count TikTok sends was 0 in every response measured. Returning it would report hashtags with tens of millions of videos as having none.
Does monitoring charge me when nothing changed?
A hashtag whose watched counts have not moved enough is not returned and costs no row price; the run returns a single free no-change row. Each hashtag read in monitoring mode costs the check fee ($0.30 per 1,000), moved or not. Large hashtags move on almost every run, so expect a row for them each time.
What happens to a hashtag that does not exist?
It comes back as no-hashtag-found with TikTok's own code, and it is not charged.
Can I get the videos inside a hashtag? No. This Actor returns one row of counts per hashtag. It does not list videos.
Example input
{"hashtags": ["booktok", "skincare", "tiktokmademebuyit"],"monitoringMode": true,"monitorMode": "any-change","minViewIncrease": 100000,"maxResults": 100}