TikTok Creator & Video Growth Tracker avatar

TikTok Creator & Video Growth Tracker

Pricing

from $0.60 / 1,000 saved video observations

Go to Apify Store
TikTok Creator & Video Growth Tracker

TikTok Creator & Video Growth Tracker

Track public TikTok creator and video metrics over time. Compare saved counts and timestamped changes within a bounded creator sample. No login or video downloads.

Pricing

from $0.60 / 1,000 saved video observations

Rating

0.0

(0)

Developer

Brandt May

Brandt May

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

TikTok Creator & Video Growth Tracker icon

See how the public videos you follow are changing. Enter a creator handle, collect a small video sample, and compare the next observation with the last one you saved. The output connects reported views, likes, comments, shares and saves to the video, its creator and the time of collection.

Use it for a creator watchlist, a campaign check-in or a spreadsheet of competitor content. The first run needs no TikTok login, API key or proxy.

Start a run | Output fields | Monitoring | Coverage

Start with three videos

Paste this input into the Actor. It selects the first three videos currently exposed by the NBA's public creator embed:

{
"profiles": ["https://www.tiktok.com/@nba"],
"maxVideosPerProfile": 3,
"maxResults": 3
}
  1. Replace nba with a public creator handle or direct profile URL.
  2. Choose a small Videos per creator limit and set a maximum charge in Apify Run options.
  3. Run the Actor, open the dataset, then review the Run report for source coverage. Export JSON or CSV for your workflow.

Omitted inputs use nba and three videos. A profile sample may include pinned or older posts; it is not a guaranteed chronological list. Explicit video URLs are available under the advanced input section when a stable watchlist is more useful.

What you get

One dataset row represents one successfully validated video observation.

FieldHow to use it
videoId, videoUrlStable identity and public evidence link.
creatorId, creatorHandle, creatorNameThe creator reported by the video page, checked against the requested identity.
caption, createdAt, durationSecondsPublic caption, publication timestamp and duration when exposed. Captions are limited to 8,000 characters with captionTruncated.
views, likes, comments, shares, savesLiteral numbers from the public page. Missing optional saves are null.
creatorFollowers, creatorFollowing, creatorLikes, creatorVideosCreator counts when that video's page exposes them; otherwise null.
rawMetrics, metricSourcesOriginal count values and the embedded field supplying each video metric.
comparisonStatus, changedFields, previousWhether this is a new, changed or unchanged saved observation, and the previous values.
metricDeltas, previousObservedAt, observationIntervalSecondsCount differences over the actual interval between observations.
viewsPerHourSincePreviousObserved view-counter change divided by the elapsed time, expressed per hour. No prior baseline or an interval below 60 seconds means null.
sampleComparisonThe median reported views and relative view count within this creator's selected sample, only when that sample was fully retrieved.
observedAt, contentHash, sourceUrlCollection time, stable snapshot hash and source provenance.

The source may round, delay or revise counts even when it returns an integer. metricsPrecision is therefore source_reported_precision_unknown. A difference is a change in the numbers exposed by TikTok, not a verified count of unique people or newly completed views. Counts can decrease; those fields are listed in countersDecreased. A negative rate can reflect a correction or source revision; it does not establish negative viewing activity. Rates are descriptive counter-change measurements, never delivery forecasts.

engagementPerViewPercent is (likes + comments + shares) / views * 100, or null when views are zero. It is a ratio of reported interactions to reported views, not unique-audience engagement. The sample median includes the current video, mixes publication ages, and is not age-adjusted or a viral-performance prediction.

Turn a sample into a watchlist

For repeatable video tracking, use exact URLs, enable comparison and keep the same snapshotName and input scope. The first comparison returns new rows and establishes history only after each output row is saved. Later runs expose current and previous values. Set onlyChanges: true to omit unchanged rows; a healthy unchanged repeat can save zero rows.

For a spreadsheet or database, upsert current state by videoId. To keep an observation log, use videoId plus observedAt; use contentHash to avoid replaying an identical snapshot. Review SUMMARY before sending alerts. A source failure or missing video is not a zero count or deletion.

History is stored in your named Apify key-value store, scoped to the sorted profile/video inputs and per-profile sample size. Changing those inputs starts a separate baseline. Use one writer per name and scope. The Actor checks for a changed baseline before committing and reports detected conflicts; storage does not provide an atomic cross-run lock. At most 20,000 video identities are retained per scope. Use a fresh name for a deliberate reset.

Three ready-to-use examples

A small Duolingo sample

{
"profiles": ["duolingo"],
"maxVideosPerProfile": 2,
"maxResults": 2
}

NBA creator context

{
"profiles": ["https://www.tiktok.com/@nba"],
"maxVideosPerProfile": 3,
"maxResults": 3
}

Three exact videos with saved comparison

{
"profiles": [],
"videoUrls": [
"https://www.tiktok.com/@duolingo/video/7696211706317409550",
"https://www.tiktok.com/@nba/video/7697747447862398238",
"https://www.tiktok.com/@washingtonpost/video/7697752148280495373"
],
"comparePrevious": true,
"snapshotName": "three-video-example",
"maxResults": 3
}

Examples are public observations checked during development, not permanently available fixtures. A creator can change visibility or remove a video.

Pricing and run limits

Base pricing is $0.001 per saved video observation plus $0.00005 per run start. Reading a creator selection, skipped unchanged observations, failed source requests, SUMMARY and the HTML report do not produce paid dataset rows. Check the current Pricing tab and your plan before running; platform or other applicable charges are governed by Apify.

  • Up to 10 profiles, 10 selected videos per profile, and 30 additional exact video URLs.
  • At most 100 saved observations per run; the default result allowance is 30, while the default creator sample is three.
  • Own collection budget: 240 seconds by default, bounded further by the platform timeout with a 25-second reserve.
  • Public requests are sequential, capped at 4 MiB each. Only transient HTTP 502/503/504 receives one short retry within the remaining budget. Access refusals and unavailable video responses are not bypassed.

Source collection stops five seconds before the output deadline to allow already validated observations to be saved. Cloud SDK requests have a five-second timeout and no automatic retries; an unconfirmed write never advances history. These reserves reduce data loss during slow responses, but a platform interruption can still prevent a final summary or history commit.

A result or spending limit can leave later sources or rows unprocessed. Previously saved data is retained. History advances only for confirmed saved rows and may be withheld if the deadline or a concurrent history change prevents a safe commit.

Understand the sample

The Actor reads ordinary public creator-embed and video-page HTML. It does not use TikTok's authenticated Display or Research APIs, run a browser, collect cookies, solve challenges, download media, or call a paid transcription service. Creator embedding is documented by TikTok; the embedded state used for metrics is an observed website format, not a guaranteed metrics API. TikTok's crawler guidance currently disallows creator-embed crawling. Public accessibility is separate from permission to reuse data; use the service consistently with applicable source terms.

Only the exposed selection is checked. There is no full-profile pagination, historical backfill, keyword search, follower list, comment text, transcript, private-account access or deleted-post inference. Public photo posts and shortened URLs are unsupported. An embed can list a video whose detail page is unavailable; valid videos can still be saved, with the gap recorded explicitly.

SUMMARY.status is ok, partial, spending_limit or failed. selectedWindowFetchedComplete records successful retrieval of the selected window; outputComplete also requires every valid observation to be saved or intentionally skipped as unchanged. selectionComplete requires complete delivery without reported time, spending or history issues. A result cap that leaves observations unsaved makes output incomplete; a cap exactly equal to the fully delivered sample does not invent a missing row. fullProfileCovered is always false for a creator selection. failedSources, sourcesNotReached, source coverage and limit flags explain missing data. All-source or all-output failures fail the run; a legitimately empty public selection or unchanged comparison is distinguished from failure. The readable RUN_REPORT presents the same diagnostics without creating dataset rows.

Sources and support

For help, source-change reports or data-removal requests, open an Actor Issue or email bmay@mayd-it.com. Include the run ID and public source URL; omit credentials and private information. This Actor is provided by Mayd It and is not affiliated with TikTok.